[MySQL] slave和master不同步的解決方法

今天發現MySQL的SLAVE資料庫沒有和MASTER同步,記錄下如何檢查和解決方式

注意: 以下方法將會重置mysql的複製,bin-log將會被刪除,如果要使用,可以先備份bin-log

如何檢查

1.進到SLAVE資料庫,下命令查看同步狀態

mysql >  show slave status\G

會發現
Slave_IO_Running: Yes
Slave_SQL_Running: No
可以確認SLAVE是不同步的狀態

如何解決

重新做slave,使資料庫和master完全同步

在Master server的設置:

1.先進入master資料庫,進行鎖表,防止資料寫入

mysql > FLUSH TABLES WITH READ LOCK ;

2.進行數據備份

#mysqldump -uroot -p -hlocalhost > mysql.bak.sql

此命令為把資料備份到mysql.bak.sql上

3.備份後把表解鎖

mysql > UNLOCK TABLES ;

4.把mysql備份文件傳到slave機器,進行數據恢復

使用scp命令,此命令是丟到slave上的/tmp資料夾裡

# scp mysql.bak.sql root@{ip}:/tmp/


在slave server的設置:

1.停止slave的狀態

mysql > STOP SLAVE;

2.導入數據備份

mysql > source /tmp/mysql.bak.sql

3.重新設置slave服務器

mysql > RESET SLAVE ;

mysql > CHANGE MASTER TO MASTER_LOG_FILE = 'mysql-bin.000001' , MASTER_LOG_POS = 1 ;

4.開始slave

mysql > START SLAVE;

5.查看同步狀態

mysql> show slave status\G
查看:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
完成同步

參考來源:https://www.howtoing.com/reset-re-sync-mysql-master-slave-replication


留言

這個網誌中的熱門文章

[PHP] 正規表達式 過濾特殊符號 / 過濾非字母數字的字元 / 過濾字母數字