zoukankan      html  css  js  c++  java
  • MySQL 错误集-汇总

    Q&A:

    MySQl报错之@@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_MODE = ON

    导入的时候加入-f参数即可 
    
    原因分析:导出原系统开启GTID模式,而导入库没有开启GTID模式
    

    Q&A:

    ERROR 1840 (HY000) at line 24: @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty.

    【解决方案】
    方法一:reset mater
    这个操作可以将当前库的GTID_EXECUTED值置空
    方法二:--set-gtid-purged=off
    在dump导出时,添加--set-gtid-purged=off参数,避免将gtid信息导出
    

    Q&A:

    Coordinator stopped because there were error(s) in the worker(s). The most recent failure being: Worker 1 failed executing transaction 'ad904b26-5128-11e9-92eb-0242c0a80015:3' at master log binlog.000005, end_log_pos 975. See error log and/or performance_schema.replication_applier_status_by_worker table for more details about this failure or others, if any.

    【解决方案】
    查看造成问题的SQL:
    mysqlbinlog --no-defaults --base64-output=DECODE-ROWS --verbose node2-relay-bin.000002 > /tmp/mysqlbin.log
    方法一:
    STOP SLAVE;
    SET @@SESSION.GTID_NEXT = '8fc8d9ac-a62b-11e6-a3ee-a4badb1b4a00:7649';
    BEGIN; COMMIT;
    SET @@SESSION.GTID_NEXT = AUTOMATIC;
    START SLAVE;
    方法二:
    ##GTID模式下的复制,sql_slave_skip_counter是不支持的
    set global slave_exec_mode='IDEMPOTENT';##设置成IDEMPOTENT模式可以让从库避免1032(从库上不存在的键)和1062(重复键,需要存在主键或则唯一键)的错误,该模式只有在ROW EVENT的binlog模式下生效,在STATEMENT EVENT的binlog模式下无效
    stop slave;
    start slave;
    set global slave_exec_mode='STRICT'; 
    参考来源:http://www.cnblogs.com/zhoujinyi/p/8035413.html
    
    再通过pt-table-checksum和 pt-table-sync做数据一致性处理
    
    创建检查账号:
    GRANT SELECT, PROCESS, SUPER, REPLICATION SLAVE,CREATE,DELETE,INSERT,UPDATE ON *.* TO 'pt_checksum' IDENTIFIED BY '1qaz!QAZ';
    
    检查是否有差异:
    pt-table-checksum h='192.168.0.21',u='pt_checksum',p='1qaz!QAZ',P=3306 -d gtid --tables=t --nocheck-replication-filters --replicate=percona.checksums --no-check-binlog-format
    --[no]check-binlog-format        #默认会检查binlog-format,如果不是statment,就会报错退出,想避免该检查可以设置--no-check-binlog-format
    --replicate                      #用来指定存放计算结果的表名, 默认是percona.checksums,工具会默认自动创建库percona和表checksums并将checksum的检查结果输入到这个表中
    --[no]check-replication-filters  #默认在检查到在主从复制过程中有被用..ignore..过滤掉的表,检查会中断并退出,如果想避开这个检查可以设置--no-check-replication-filters
    参考来源:https://www.cnblogs.com/xiaoyanger/p/5584554.html
    
    我们使用pt-table-sync工具还同步这张表的数据:
    pt-table-sync --charset=utf8 --print --no-check-slave -d gtid -t t h=192.168.0.21,u='pt_checksum',p='1qaz!QAZ',P=3306 h=192.168.0.22,u='pt_checksum',p='1qaz!QAZ',P=3306 ##前面填主库的内容,后面填从库的内容
    --no-check-slave                 #不检查desitination是否为从库
    --print                          #打印差异变更语句
    --execute                        #执行差异变更语句
    执行变更可以直接执行差异变更SQL或者通过以下语句执行:
    pt-table-sync --charset=utf8 --execute --no-check-slave -d gtid -t t h=192.168.0.21,u='pt_checksum',p='1qaz!QAZ',P=3306 h=192.168.0.22,u='pt_checksum',p='1qaz!QAZ',P=3306
    
    注意:如果是sync主从数据,只有当需要sync的表都有唯一键(主键或唯一索引),才能使用--sync-to-master and/or --replicate。(没有唯一键,则只能在desitination上直接修改,而指定--sync-to-master and/or –replicate时只能在主库上修改),
    如果sync主从时没有指定--replicate或者--sync-to-master则所有修改都在从库上执行(不论表上是否有唯一键)
    
  • 相关阅读:
    C# 进制转换
    使用Struts1完成用户登录功能
    【Maven实战】仓库介绍和Nexus的安装
    【Maven实战】依赖的聚合和版本管理
    【Maven实战】传递性依赖的问题
    【Maven实战】依赖的范围
    【Maven实战】archetype的使用和eclipse的配置
    【Maven实战】Maven开发环境的搭建和案例展示
    【手机安全卫士02】连接服务器获取更新信息
    【手机安全卫士01】项目Splash页面的开发与设计
  • 原文地址:https://www.cnblogs.com/EikiXu/p/10616886.html
Copyright © 2011-2022 走看看