== MySQL == <> ==== Umzug MySQL Server auf neue Hardware ==== * den aktuellen Server als master einrichten * einen vollständigen Dump aller Datenbanken erstellen {{{ /opt/rh/mysql55/root/usr/bin/mysqldump -u root --all-databases --routines --single-transaction --skip-add-locks --skip-lock-tables --events --master-data | gzip -9 >| ALL-MD-$(date +%Y%m%d-%H%M).sql.gz }}} * auf der neuen Hardware mysql in Betrieb nehmen * den Dump im Slave einspielen * Slave konfigurieren und starten * nach der Synchronisierung Slave als Server in Betrieb nehmen * auf dem Slave: ''mysql >show slave status\G'' * ''Seconds_Behind_Master'' muß auf NULL laufen * die ausführlichen Anleitungen liegen bei Wolfgang im mysql Buch * Tipps: * http://blog.onetechnical.com/2012/05/29/quick-mysql-replication-to-move-a-database/ * http://dba.stackexchange.com/questions/45518/mysql-replication-duplicated-entry-for-primary-key * wenn duplicate key errors auftreten, kann man sie mit der Option ''slave-skip-errors=1062'' ignorieren, wenn es unkritisch ist * auch einen anderen unkritischen Error konnte man so ''wegdrücken'' ==== Neue Version aus dem Quellpaket bauen ==== Die Quellpakete der Softwarecollections liegen auf ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Server/en/RHSCL/SRPMS . Um eine neue Version bauen zu können, muss man scl-utils-build für die RPM-Makros installieren. {{{rpmbuild --rebuild --define runselftest\ 0 --define scl\ mysql55 mysql55-mysql-5.5.52-1.el6.src.rpm}}} Die Selbsttests schlagen fehl, wenn IPv6 nicht verfügbar ist. Das Makro {{{%scl}}} ist der Name der Softwarecollection, nur wenn es definiert wird, landet das Paket unter /opt, sonst baut man ein Systempaket. ==== Master/Slave ==== ===== Slave wieder neu verbinden/synchronisieren ===== * funktioniert mit mysql 5.1: {{{ auf dem Master: mysql FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS; als root # mysqldump --opt --all-databases > /a/path/mysqldump.sql mysql UNLOCK TABLE; auf dem Slave: mysql STOP SLAVE; als root: # mysql < /a/path/mysqldump.sql mysql RESET SLAVE; change master to master_host='',master_user='',master_password='password', master_log_file='',master_log_pos=; # dabei binlog und position von master status übernehmen START SLAVE; SHOW SLAVE STATUS\G; }}}