Moving a MySQL Database to a new Host via Master/Slave Replication


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.

  1. 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;
  1. Auf der neuen Datenbank den Master Server konfigurieren:
    mysql -uroot -p
CHANGE MASTER TO MASTER\_HOST='server1', MASTER\_USER='replication', MASTER\_PASSWORD='PASSWORD';
  1. 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;

  1. Auf dem Slave (neuer Server) den Datendump einlesen
    mysql -uroot -p
source dbname.db
  1. Den Slave starten, jetzt beginnt der Transfer der Daten aus den Transaction Logs vom alten Server
start slave;
  1. Der Transfer kann mit folgerndem Befehl überwacht werden:
show slave status\G
Print Friendly, PDF & Email