Metainformationen zur Seite
MySQL Master/Slave-Replikation einrichten (offline)
Einfach und umkompliziert eine MySQL Master/Slave-Replikation einrichten (OFFLINE, empfohlen bei InnoDB-Datenbanken)
- User für Replikation einrichten:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.domain.de' IDENTIFIED BY 'slavepass';
- Auf dem Master-Server /etc/my.cnf bearbeiten, in der [mysqld]-Sektion ergänzen und danach den MySQL-Server neu starten:
# replikation log-bin=mysql-bin server-id=1 innodb_flush_log_at_trx_commit=1 sync_binlog=1
- Auf dem Slave-Server /etc/my.cnf bearbeiten, in der [mysqld]-Sektion ergänzen und danach den MySQL-Server neu starten:
# replikation server-id=2
- Auf dem Master-Server die Tables speeren, die Datenbank anhalten und die binary-Dateien auf das Slave-System kopieren:
mysql -p mysql> FLUSH TABLES WITH READ LOCK; ( eventuell bei InnoDB mit Transaktionen den Server ganz stoppen: service mysqld stop )
- Achtung: Die Shell jetzt NICHT beenden, da der Schreibschutz sonst wieder aufgehoben wird!
cd /var/lib rsync -avr -e ssh mysql sqlserver2.domain.de:/var/lib/
- Nach dem Kopieren wird der Master wieder freigegeben:
( wurde der Server vorher gestoppt, so muss er jetzt wieder gestartet werden: service mysqld start ) mysql> SHOW MASTER STATUS; mysql> UNLOCK TABLES;
Die Werte von File und Position merken, die werden gleich gebraucht.
- Auf dem Slave-Server die Datenbank starten, die Replikation konfigurieren und starten:
service mysqld start mysql -u root -p mysql> CHANGE MASTER to MASTER_HOST='sqlserver1.domain.de’,MASTER_PORT=3306, MASTER_USER='repl',MASTER_PASSWORD='slavepass',MASTER_LOG_FILE='<logfilename>',MASTER_LOG_POS=<logfileposition>; mysql> START SLAVE;
Diskussion