故障描述:html
進入從數據庫mysql
mysql> show slave status\G;sql
結果以下:數據庫
...服務器
Slave_IO_Running: Yeside
Slave_SQL_Running: No阿里雲
Last_Errno: 1062spa
...orm
緣由:htm
程序可能在slave上進行了寫操做
多是slave機器重啓後,事務回滾形成的
多數是第二種形成的
解決方法一:忽略錯誤後繼續同步
該方法適用於主從庫數據相差不大,或者要求數據能夠不徹底統一的狀況,數據要求不嚴格的狀況
mysql> slave stop;
mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1;
mysql> slave start;
解決方法二:強制性從某一個點開始同步
此方法會有部分沒有同步的數據丟失,後續主服務器上刪除記錄同步也會有一些錯誤信息,不會影響使用
到主服務器上查看主機狀態:
記錄File和Position對應的值。
mysql> show master status;
+------------------+-----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+-----------+--------------+------------------+
| mysql-bin.000021 | 135617782 | | |
+------------------+-----------+--------------+------------------+
1 row in set (0.00 sec)
3.到slave服務器上執行手動同步:
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3307,
> master_log_file='mysql-bin.000021',
> master_log_pos=135617782;
1 row in set (0.00 sec)
mysql> slave start;
1 row in set (0.00 sec)
再次查看slave狀態發現:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0
解決方法三:從新作主從,徹底同步
該方法適用於主從庫數據相差較大,或者要求數據徹底統一的狀況
1.進入主庫,進行數據備份
mysqldump -u root -p --opt --master-data --single-transaction -B > mysql.bak.sql
2.把mysql備份文件傳到從庫上,導入從庫
mysql > stop slave;
mysql -u root -p < mysql.bak.sql
3. 從備份文件中找到file和position
grep -i "CHANGE MASTER TO" mysql.bak.sql會獲得如下相似內容:
CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000021', MASTER_LOG_POS=135617782;
4.設置從庫同步
mysql> change master to
> master_host='master_ip',
> master_user='user',
> master_password='pwd',
> master_port=3307,
> master_log_file='mysql-bin.000021',
> master_log_pos=135617782;
mysql> slave start;
1 row in set (0.00 sec)
再次查看slave狀態發現:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
...
Seconds_Behind_Master: 0
最後:
分享下個人阿里雲幸運券(如須要購買阿里雲服務的能夠領取使用哈):https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=rziak7l4&utm_source=rziak7l4
參考:http://www.xue7.xin/?p=125