先查看從服務器的狀態
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;