https://yq.aliyun.com/articles/155827?spm=5176.8067842.tagmain.6.RFPTAL

MySQL 传统的主从复制方式使用 master_log_files 和 master_log_pos 两个参数来确定复制位点。当出现复制错误时,可以设置跳过出错的事务来恢复同步,MySQL 提供了 sql_slave_skip_counter 参数来实现此功能。使用方法如下:

root@(none) >stop slave;
Query OK, 0 rows affected (0.00 sec) root@(none) >SET GLOBAL SQL_SLAVE_SKIP_COUNTER = N; #跳过N个事务
Query OK, 0 rows affected (0.00 sec) root@(none) >start slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)

如果使用 GTID 的主从复制方式,上面这种方法并不会生效。如果有同学做过尝试,应该会收到如下报错信息。

ERROR 1858 (HY000): sql_slave_skip_counter can not be set when the server is running with @@GLOBAL.GTID_MODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction

在 GTID 模式下使用 sql_slave_skip_counter 参数将会引发错误:

root@(none) >stop slave;
Query OK, 0 rows affected (0.00 sec) root@(none) >set global sql_slave_skip_counter = 1;
ERROR 1858 (HY000): sql_slave_skip_counter can not be set when the server is running with @@GLOBAL.GTID_MODE = ON. Instead, for each transaction that you want to skip, generate an empty transaction with the same GTID as the transaction

那使用 GTID 复制的数据库出现复制错误时该如何处理呢?其实上面的报错信息已经提示了解决方法:在发生错误的 GTID 事务号上插入一个空的事务,来实现跳过此复制错误的效果。

操作方法:

1 "show slave status\G" 找到发生复制错误的 GTID 事务号(示例只展示复制错误信息,其他信息省略),可以找到发生复制错误的 GTID 为:ab1b2733-2401-11e7-82fc-525400abbf4b:50

root@(none) >show slave status\G
1. row **
Last_Error: Worker 7 failed executing transaction 'ab1b2733-2401-11e7-82fc-525400abbf4b:50' at master log mysql-bin.000012, end_log_pos 156045; Could not execute Delete_rows_v1 event on table test.test2; Can't find record in 'test2', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log FIRST, end_log_pos 156045

2 向上面找到的 GTID 插入一个空的事务

stop slave;                 # 关闭 slave 复制
SET GTID_NEXT='$GTID_NO'; # 设置 GTID_NEXT 为复制出错的 GTID_NO
begin; commit; # 向 $GTID_NO 写入空事务
SET GTID_NEXT="AUTOMATIC"; # 重新设置 GTID_NEXT 为自动获取
start slave; # 启动 slave 复制

示例:

root@(none) >stop slave;
Query OK, 0 rows affected (0.00 sec) root@(none) >SET GTID_NEXT='ab1b2733-2401-11e7-82fc-525400abbf4b:50';
Query OK, 0 rows affected (0.00 sec) root@(none) >begin;
Query OK, 0 rows affected (0.00 sec) root@(none) >commit;
Query OK, 0 rows affected (0.00 sec) root@(none) >SET GTID_NEXT="AUTOMATIC";
Query OK, 0 rows affected (0.00 sec) root@(none) >start slave;
Query OK, 0 rows affected, 1 warning (0.03 sec)

3 重要:数据订正

MySQL GTID 主从复制错误修复方法的更多相关文章

  1. VNC错误修复⽅方法

    VNC错误修复方法 VNC错误描述 vnc viewer开启后弹窗提示 Could not connect to session bus: Failed to connect to socket /t ...

  2. MySQL GTID复制错误处理之跳过错误

    某Slave报错信息: mysql> show slave status\G; mysql> show slave status\G; ************************** ...

  3. VNC (vnc viewer)错误修复方法

    VNC错误描述 vnc viewer开启后弹窗提示 Could not connect to session bus: Failed to connect to socket /tmp/dbus-XX ...

  4. sqlserver数据库出现可疑错误修复方法

    一.主数据库出现可疑修复方法: 第一种方法: 当数据库发生这种操作故障时,可以按如下操作步骤可处理此要领,打开数据库里的Sql查询编辑器窗口,运行以下的命令: ?修改数据库为紧急模式 ALTER DA ...

  5. 解决mysql使用GTID主从复制错误问题

    做MySQL主从的话肯定会遇到很多同步上的问题,大多数都是由于机器宕机,重启,或者是主键冲突等引起的从服务器停止工作,这里专门收集类似问题并提供整理解决方案,仅供参考. 1.主从网络中断,或主服务器重 ...

  6. mysql GTID主从复制故障后不停机恢复同步流程

    GTID实现主从复制数据同步 GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组成,这个全局事务ID不仅仅在原始服务器上唯一,在所有主从关系的m ...

  7. 安装Mysql提示1045错误解决方法

    MySQL安装提示一下错误 The security settings could not be applied to the database because the connection has ...

  8. mysql gtid 主从复制

    基于GTID环境搭建主从复制 1.环境 ----------------------------------------------------------| |mysql版本 | 5.7.14 | ...

  9. MySQL Errno : 1062 错误修复

    网站突然出现如下错误: MySQL Error : Duplicate entry '1' for key 'views' MySQL Errno : 1062 Message : Duplicate ...

随机推荐

  1. HDU 6060 17多校3 RXD and dividing(树+dfs)

    Problem Description RXD has a tree T, with the size of n. Each edge has a cost.Define f(S) as the th ...

  2. PAT 乙级 1061. 判断题(15)

    判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分. 输入格式: 输入在第一行给出两个不超过100的正整数N和M,分别是学生人数和判断题数量.第二行给出M个不超过5的正 ...

  3. 【Python】多进程-4

    #练习:用event事件控制进程执行顺序,下面例子中,主进程main函数在创建了子进程之后,依然会往下执行,所以会出现主进程先打印出来的情况 import multiprocessing import ...

  4. 从输入URL到页面加载发生了什么?

    总体来说分为以下几个过程: DNS解析 TCP连接 发送HTTP请求 服务器处理请求并返回HTTP报文 浏览器解析渲染页面 连接结束 具体内容点这里

  5. element.dataset API

    不久之前我向大家展示了非常有用的classList API,它是一种HTML5里提供的原生的对页面元素的CSS类进行增.删改的接口,完全可以替代jQuery里的那些CSS类操作方法.而另外一个非常有用 ...

  6. 调整Windows XP 输入法顺序

    執行 Regedit.exe 至 HKEY_CURRENT_USER\Keyboard Layout\Preload 調整輸入法順序,右邊欄中名稱為 1 的鍵值就是內定的輸入法,其值一般為 00000 ...

  7. jsp-servlet(2)响应HTML文档-书籍管理系统

    基础知识预备:  目标: 构建一个书籍管理系统,实现以下功能. 功能: 1 图书信息查询,(查) 2 书籍管理:添加书籍 3 书籍管理:修改书籍信息 4 书籍管理:删除书籍 一.预备工作 Book{ ...

  8. 如何上传本地项目到github

    github作为git的代码托管,而许多大神都在上面托管自己的开源项目.现在,我来记录一下我是如何将本地项目上传到github上. 一.安装git工具(具体方法见百度) 二.配置全局 三.创建.ssh ...

  9. C++学习(三十三)(C语言部分)之 队列

    队列测试代码笔记如下: #include<stdio.h> #define SIZE 10 typedef struct Queue { int data[SIZE]; //队列的容量 i ...

  10. LeetCode – Number of Islands II

    A 2d grid map of m rows and n columns is initially filled with water. We may perform an addLand oper ...