码迷,mamicode.com
首页 > 数据库 > 详细

MySQL主从不一致的几种故障总结分析、解决和预防

时间:2018-08-23 19:32:51      阅读:227      评论:0      收藏:0      [点我收藏+]

标签:写入   nod   Fix   操作   syn   存储   repos   问题   sql   

(1).主从不一致故障,从库宕机,从库启动后重复写入数据报错
解决与预防:
relay_log_info_repository=TABLE
(InnoDB)
参数解释说明:
若relay_log_info_repository为FILE,当设置为0,交由OS刷新磁盘,受参数sync_relay_log_info的影响,默认为10000次刷新到磁盘;
若relay_log_info_repository为TABLE,且为INNODB存储,则无论为任何值,则都每次event都会更新表。
relay_log_info_repository=table可以避免relay.info更新不及时,SLAVE 重启后导致的主从复制数据重复插入报错问题。

修改步骤:
1. stop slave;
2. set global relay_log_info_repository=’TABLE’;
或在my.cnf中设置:
relay_log_info_repository = TABLE


(2).主从不一致故障,主库宕机
解决与预防:
方法1:主库启动后,binlog补全即可

方法2:Innodb_flush_log_at_trx_commit=1
Innodb_flush_log_at_trx_commit参数值说明如下:
0 - 每一秒将修改记录同步到日志(磁盘)中,commit的时候不同步
1 - 每次事务commit都将修改记录同步到日志(磁盘)中
2 - 每次事务commit都将修改写入到操作系统cache中,然后每一秒将修改记录同步写入到日志(磁盘)中

方法3:应用程序双写
方法4:应用程序写日志
方法5:MySQL半同步(semi sync)


(3).主从不一致故障,从库数据被修改
通常报错总结如下:
ERROR:1032
从库找不到要删除的数据
ERROR:1062
从库插入数据,发生唯一性冲突
ERROR:1452
无法在外键的表插入或更新参考主键没有的数据

解决与预防:
1.设置用户权限
2.设置从库只读权限
set global read_only=true

MySQL主从不一致的几种故障总结分析、解决和预防

标签:写入   nod   Fix   操作   syn   存储   repos   问题   sql   

原文地址:https://www.cnblogs.com/fps2tao/p/9525386.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!