Na masteru v /etc/mysql/my.cnf:
bind-address = xxx.xxx.xxx.xxx server-id = 1 log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = databaze_co_chceme_replikovat
a restart mysql
Potom:
GRANT REPLICATION SLAVE ON *.* TO 'slave_user'@'%' IDENTIFIED BY 'password'; FLUSH PRIVILEGES; USE databaze_co_chceme_replikovat; FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;
Z výpisu si zapsat jméno logu a číslo udávající pozici v logu.
ptom se zamcenou databazi:
mysqldump -u root -p --opt newdatabase > newdatabase.sql
UNLOCK TABLES; QUIT;
Na backupu:
CREATE DATABASE databaze_co_chceme_replikovat; mysql -u root -p newdatabase < /path/to/newdatabase.sql
Ve /etc/mysql/my.cnf
server-id = 2 relay-log = /var/log/mysql/mysql-relay-bin.log log_bin = /var/log/mysql/mysql-bin.log binlog_do_db = databaze_co_chceme_replikovat
a restart mysql.
Do tohoto příkazu doplnit správný název log file a číslo pozice z přechozího příkazu show master status na masteru.
CHANGE MASTER TO MASTER_HOST='xxx.xxx.xxx.xxx',MASTER_USER='slave_user', MASTER_PASSWORD='password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS= 107; START SLAVE; SHOW SLAVE STATUS\G
pripadne:
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; SLAVE START;
Oprava spadlé replikace
Doporučuju zastavit slave (STOP SLAVE) a přenést celou databázi z mastru na slave přes mysqldump.
Poté smazat staré binární logy na mastru:
PURGE BINARY LOGS BEFORE '2017-05-24 10:56:00';
Vypsat na mastru aktualni stav replikace (SHOW MASTER STATUS) a udaje prepsat do radky na slave:
CHANGE MASTER TO master_log_file='mysql-bin.001280', master_log_pos=39125632;
a spustit slave (START SLAVE).
Kompletní restart replikace
Na slave:
STOP SLAVE;
Na masteru:
RESET MASTER;
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
Na slave vyprázdnit databázi. Třeba DROP DATABASE a CREATE DATABASE
Na masteru mysqldump data a přenést na slave
Na slave naimportovat data do databáze
RESET SLAVE;
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=98;
START SLAVE;
mysql-bin.000001 a LOG POS podle SHOW MASTER STATUS
přeskočení špatného příkazu v replikaci
Zjistit stav spadlé replikace:
SHOW SLAVE STATUS \G
Potom:
STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
STAR SLAVE;