mysql数据库主从不同步的解决方法
故障描述:
進(jìn)入從數(shù)據(jù)庫
mysql> show slave status\G; 結(jié)果如下:...Slave_IO_Running: YesSlave_SQL_Running: NoLast_Errno: 1062...原因:
程序可能在slave上進(jìn)行了寫操作
可能是slave機(jī)器重啟后,事務(wù)回滾造成的
多數(shù)是第二種造成的
解決方法一:忽略錯誤后繼續(xù)同步
該方法適用于主從庫數(shù)據(jù)相差不大,或者要求數(shù)據(jù)可以不完全統(tǒng)一的情況,數(shù)據(jù)要求不嚴(yán)格的情況
mysql> slave stop; mysql> set GLOBAL SQL_SLAVE_SKIP_COUNTER=1; mysql> slave start;解決方法二:強(qiáng)制性從某一個點(diǎn)開始同步
此方法會有部分沒有同步的數(shù)據(jù)丟失,后續(xù)主服務(wù)器上刪除記錄同步也會有一些錯誤信息,不會影響使用
到主服務(wù)器上查看主機(jī)狀態(tài):
記錄File和Position對應(yīng)的值。
3.到slave服務(wù)器上執(zhí)行手動同步:
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狀態(tài)發(fā)現(xiàn): Slave_IO_Running: Yes Slave_SQL_Running: Yes ... Seconds_Behind_Master: 0解決方法三:重新做主從,完全同步
該方法適用于主從庫數(shù)據(jù)相差較大,或者要求數(shù)據(jù)完全統(tǒng)一的情況
1.進(jìn)入主庫,進(jìn)行數(shù)據(jù)備份
mysqldump -u root -p --opt --master-data --single-transaction -B > mysql.bak.sql
2.把mysql備份文件傳到從庫上,導(dǎo)入從庫
mysql > stop slave;mysql -u root -p < mysql.bak.sqlgrep -i “CHANGE MASTER TO” mysql.bak.sql會得到以下類似內(nèi)容:
CHANGE MASTER TO MASTER_LOG_FILE=‘mysql-bin.000021’, MASTER_LOG_POS=135617782;
4.設(shè)置從庫同步
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狀態(tài)發(fā)現(xiàn): Slave_IO_Running: Yes Slave_SQL_Running: Yes ... Seconds_Behind_Master: 0原文鏈接: http://blog.51cto.com/308107405/1694568
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的mysql数据库主从不同步的解决方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Laravel Auth 自定义user
- 下一篇: Linux系统下命令行连接蓝牙设备