zoukankan      html  css  js  c++  java
  • MySQL主从不一致的几种故障总结分析、解决和预防

    (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
  • 相关阅读:
    CAST和CONVERT
    #pragma 预处理指令详解
    Android系统移植主要事项
    Java动态绑定机制的内幕
    Java接口和抽象类用法总结
    Android工程的编译过程
    点击按钮,并且实现增加一个按钮的效果 (附效果图)
    iOS-设置导航栏"返回"按钮 (附效果图)
    常用代码整理(重要)
    NSTimer 的暂停与恢复运行。
  • 原文地址:https://www.cnblogs.com/fps2tao/p/9525386.html
Copyright © 2011-2022 走看看