MySQL
Contents
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>',master_user='<replication-user>',master_password='password', master_log_file='<binlog>',master_log_pos=<position>; # dabei binlog und position von master status übernehmen START SLAVE; SHOW SLAVE STATUS\G;