时间:2021-07-01 10:21:17 帮助过:15人阅读
mysql主从经常会出现主从数据不同步的问题,脏数据会造成主从同步中断,
出现大量ERROR,如1032,1062等错误。常规方法是逐条删除脏数据或者
重做库,由于数据量大操作麻烦,而且主库在线上运行不能有锁表操作,
各种不便特别费时间。笔者在生产环境遭遇了一次,情急之下用粗暴的方法
不到10分种解决问题。下面假设一种情况,主库正常,从库数据不一致,
解决思路步骤如下:
1 ,对故障定性,通过查看最近日志来找出蛛丝马迹。一般都用mysqlbinlog
/var/lib/myql/mysqld-bin.00000222 | tail | more ,或者登陆数据库
show binlog events in mysql-bin.00000222 (这个方法没试过哦)按照这种
方法提取有效的时间节点,这个节点保证数据是一致的,怎么保证
就看你的经验,一般自己维护的数据库心里有数。
2,按照这个时间节点 找到binlog日志的位置,并根据日志找到position,这里
假设为10086.
3, 故障如果在从库上stop slave,然后restet slave all,change master to
master_host = ‘master ip ‘master_user = ‘rep‘, master_port=
3306, master_password=‘1234p6‘, master_log_file = ‘mysql-bin.00000222‘
master_log_pos=10086; 然后start slave。这个时候你会发现主从同步
报错,常见的错误代码1032,1062.这个时候你修改从库my.cnf,
粗暴的忽略这些错误。slave-skip-errors=1062,1053,1146 #跳过指定
error no类型的错误#slave-skip-errors=all #跳过所有错误,这里不
推荐忽略所有错误.
有个比较好的方法把所有错误重现一遍,你心里会有底是什么原因导致的
错误,知道了错误的原因就了解了数据库是为什么报错,这样才有利于根
本解决问题。忽略所有的错误,重启数据库实例。注意主库不要做操作,
因为线上业务在跑呢, 不要影响线上业务。主库好好的,运维就有时间
慢慢解决问题。
重启后重新stop,reset,change master,然后start slave,如果不报错,恭喜你
问题解决。确认的方法很简单,查看最近很可能出错的数据count,如果
一致说明同步没问题。
一种粗暴快速的解决mysql主从不同步错误的思路
标签:思路 mys 故障 position 业务 影响 通过 情况 脏数据