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
  • 相关阅读:
    RedisCacheTool参考其中的文件读写功能
    eclipse eayExplorer 查看代码的资源管理器打开方式
    有关写代码效率的问题
    Eclipse
    解决pdm打开只显示表名不显示字段的步骤
    绝对定位元素的水平垂直居中
    Maven依赖之Scope
    无提示关闭弹出窗口
    Maven模块与模块间的依赖
    Maven+Hibernate4注解0配置示例
  • 原文地址:https://www.cnblogs.com/fps2tao/p/9525386.html
Copyright © 2011-2022 走看看