Ale co jeśli chcemy podpiąć nowy serwer do replikacji? Na przykład mamy już działający jeden serwer ale chcemy aby działał w replikacji master-slave lub master-master.
Oto kilka prostych kroków:
- Upewniamy się, że master ma wszystkie dane, a do nowego noda nikt nie pisze.
- Generujemy dump z mastera:
mysqldump -uroot -proot --skip-lock-tables --single-transaction --flush-logs --hex-blob --master-data=2 -A > dump.sql
To polecenie stworzy dump ze wszystkimi tabelami z mastera. Dzięki opcji --master-data wiemy na jakiej pozycji i jakim pliku jest master przy wykonywaniu tego dumpu. - Zczytujemy pozycję mastera z dumpa:
head dump.sql -n80 | grep "MASTER_LOG_POS" - Kopiujemy plik dumpa na nowy nod
scp dump.sql root@HOST:/path - Importujemy dump
mysql -uroot -proot < dump.sql
W dumpie mamy wszystkie polecenia do odtworzenia mastera (usunięcie i stworzenie baz i table + inserty z danymi). - Ustawiamy replikację z danymi, które zaczytaliśmy z dumpa:
CHANGE MASTER TO MASTER_HOST='host',MASTER_USER='replication',MASTER_PASSWORD='replication', MASTER_LOG_FILE='mysql-bin.000004', MASTER_LOG_POS=98;
START SLAVE;
Od tego momentu nowy nod jest slavem do naszego mastera. Jeśli na masterze były nowe zmiany powstałe po wykonaniu dumpa ale przed uruchomieniem replikacji, zostaną teraz zaciągnięte bo slave wie od którego momentu ma dane.
Pamiętajmy o pewnych ustawieniach:
- włączenie binary logów aby replikacja mogła działać (log-bin)
- unikalność ID serwerów (server-id)
- dla replikacji master-master: auto_increment_offset & auto_increment_increment
Brak komentarzy:
Prześlij komentarz