MySql主從同步問題解決


先查看從服務器的狀態

1 mysql>SHOW SLAVE STATUS;

如果發現以下兩個字段

1 Slave_IO_Running: No
2 Slave_SQL_Running: NO

其中有一個為No,則同步出錯,需要恢復。出錯信息可以參考Last_Error字段。

一般情況下,在從服務器上執行

1 mysql>stop slave;
2 mysql>start slave;

即可恢復。

如果運行這個之后,依然不能恢復,則可嘗試以下方法。

先鎖定表,在主服務器上執行

1 mysql>FLUSH TABLES WITH READ LOCK;
2 mysql>SHOW MASTER STATUS;

第一句鎖定表,第二句顯示主服務器的狀態,記下

1 File:
2 Position:

這兩個字段的值,再把需要同步的數據庫的目錄,在主服務器上操作,復制到從服務器

1 scp -r db_1 db_2 root@192.168.1.200:/var/lib/mysql/

這里,把db_1,db_2兩個數據庫目錄,復制到從服務器的MySql數據目錄下,復制后,注意權限問題。

完成復制之后,在主服務器上操作,解鎖表

1 UNLOCK TABLES;

在從服務器上操作

1 STOP SLAVE;
2 
3 CHANGE MASTER TO
4 MASTER_LOG_FILE='mysql-bin.000098',
5 MASTER_LOG_POS=22926865;
6 
7 START SLAVE;
8 
9 SHOW SLAVE STATUS;

這里,LOG_FILE與LOG_POS分別對應之前在主服務器上查詢出來的File與Position字段。

完成。

其中的CHANGE MASTER TO語句,通常還有以下值,按需選擇設置

1 CHANGE MASTER TO
2 MASTER_HOST='192.168.1.199', 
3 MASTER_USER='repl', 
4 MASTER_PASSWORD='repl', 
5 MASTER_PORT=3306 
6 MASTER_LOG_FILE='MYSQL-BIN.000098', 
7 MASTER_LOG_POS=22926865, 
8 MASTER_CONNECT_RETRY=30; 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM