title: “Moving a MySQL Database to a new Host via Master/Slave Replication”
date: 2014-08-05T12:30:53
slug: moving-a-mysql-database-to-a-new-host-via-masterslave-replication
Diese Methode eignet sich sehr gut um sehr große Datenbanken umzuziehen.
Während des Dumps können auch noch neue Daten geschrieben werden die mit Transferiert werden.
- Auf der alten Datenbank die Transaction Logs einschalten und einen Replication User anlegen:
vi my.cnf
server-id = 1
replicate-same-server-id = 0
auto-increment-increment = 2
auto-increment-offset = 2
log-bin= /var/log/mysql/mysql-bin.log
mysql -uroot -p
GRANT REPLICATION SLAVE ON \*.\* TO 'replication'@'%' IDENTIFIED BY 'PASSWORD';
FLUSH PRIVILEGES;
- Auf der neuen Datenbank den Master Server konfigurieren:
mysql -uroot -p
CHANGE MASTER TO MASTER\_HOST='server1', MASTER\_USER='replication', MASTER\_PASSWORD='PASSWORD';
- Einen Datendump erzeugen der auch die Position des Log Files enthält:
mysqldump -uroot dbname --master-data > dbname.db
Der Dump enthält eine nachfolgende Zeile die dem Slave mitteilt ab welcher Stelle es bei den Transaction Logs weiter geht: CHANGE MASTER TO MASTER_LOG_FILE=’mysql-bin.001359′, MASTER_LOG_POS=76101;
- Auf dem Slave (neuer Server) den Datendump einlesen
mysql -uroot -p
source dbname.db
- Den Slave starten, jetzt beginnt der Transfer der Daten aus den Transaction Logs vom alten Server
start slave;
- Der Transfer kann mit folgerndem Befehl überwacht werden:
show slave status\G
