mysql数据库主从不同步的解决方法
生活随笔
收集整理的這篇文章主要介紹了
mysql数据库主从不同步的解决方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
故障描述:
進入從數據庫
mysql> show slave status\G; 結果如下:...Slave_IO_Running: YesSlave_SQL_Running: NoLast_Errno: 1062...原因:
程序可能在slave上進行了寫操作
可能是slave機器重啟后,事務回滾造成的
多數是第二種造成的
解決方法一:忽略錯誤后繼續同步
該方法適用于主從庫數據相差不大,或者要求數據可以不完全統一的情況,數據要求不嚴格的情況
mysql> slave stop; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> slave start;解決方法二:強制性從某一個點開始同步
此方法會有部分沒有同步的數據丟失,后續主服務器上刪除記錄同步也會有一些錯誤信息,不會影響使用
到主服務器上查看主機狀態:
記錄File和Position對應的值。
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.sqlgrep -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原文鏈接: http://blog.51cto.com/308107405/1694568
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的mysql数据库主从不同步的解决方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Laravel Auth 自定义user
- 下一篇: Linux系统下命令行连接蓝牙设备