mysql GTID主从复制 跳过复制错误

在mysqlGTID下,使用

SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n

会产生如下错误

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

根据报错提示,我们可以看到我们可以通过执行空事务来跳过复制错误

STOP SLAVE;
SET GTID_NEXT="7d72f9b4-8577-11e2-a3d7-080027635ef5:5";
BEGIN; COMMIT;
SET GTID_NEXT="AUTOMATIC";
START SLAVE;

但是当需要跳过的事务较多时,这个方法比较麻烦。可以使用MySQL Utilities中的mysqlslavetrx跳过错误
mysqlslavetrx使用说明

mysqlslavetrx --gtid-set=87fd24be-683d-11e6-ba97-1418774c98d8:3-40 --slaves=root:beijing@localhost:/home/mysql/my3306.sock

参数说明:

 --dryrun

Execute the utility in dry-run mode, show the transactions (GTID) that would have been skipped for each slave but without effectively skipping them. This option is useful to verify if the correct transactions will be skipped.

 --gtid-set=<gtid-set>

Set of Global Transaction Identifiers (GTID) to skip.

 --help

Display a help message and exit.

 --license

Display license information and exit.

 --slaves=<slaves_connections>

Connection information for slave servers. List multiple slaves in comma-separated list.

To connect to a server, it is necessary to specify connection parameters such as the user name, host name, password, and either a port or socket. MySQL Utilities provides a number of ways to supply this information. All of the methods require specifying your choice via a command-line option such as --server, --master, --slave, etc. The methods include the following in order of most secure to least secure.

Use login-paths from your .mylogin.cnf file (encrypted, not visible). Example : <login-path>[:<port>][:<socket>]

Use a configuration file (unencrypted, not visible) Note: available in release-1.5.0. Example : <configuration-file-path>[:<section>]

Specify the data on the command-line (unencrypted, visible). Example : <user>[:<passwd>]@<host>[:<port>][:<socket>]

 --ssl-ca

The path to a file that contains a list of trusted SSL CAs.

 --ssl-cert

The name of the SSL certificate file to use for establishing a secure connection.

 --ssl-key

The name of the SSL key file to use for establishing a secure connection.

 --ssl

Specifies if the server connection requires use of SSL. If an encrypted connection cannot be established, the connection attempt fails. Default setting is 0 (SSL not required).

 --verbose, -v

Specify how much information to display. Use this option multiple times to increase the amount of information. For example, -v = verbose, -vv = more verbose, -vvv = debug.

 --version

Display version information and exit.

也可以通过

set global gtid_purged='887fd24be-683d-11e6-ba97-1418774c98d8:3-40';

跳过已经purge的部分,之后重新开启复制即可。
完成这些操作后,如果对数据一致性的问题有顾虑,可以通过 pt-table-checksum来进行一致性检查。

时间: 2024-11-01 08:31:13

mysql GTID主从复制 跳过复制错误的相关文章

MySQL GTID 主从复制错误修复方法

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

配置MySQL GTID 主从复制

GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组合而成.这个全局事务ID不仅仅在原始服务器器上唯一,在所有存在主从关系 的mysql服务器上也是唯一的.正是因为这样一个特性使得mysql的主从复制变得更加简单,以及数据库一致性更可靠.本文主要描述了快速配置一个基于GTID的主从复制架构,供大家参考. 一.GTID的概念 1.全局事务标识:global transaction identifiers. 2.GTID是一个事务一一对应,并且全

MySQL GTID 错误处理汇总

MySQL GTID是在传统的mysql主从复制的基础之上演化而来的产物,即通过UUID加上事务ID的方式来确保每一个事物的唯一性.这样的操作方式使得我们不再需要关心所谓的log_file和log_Pos,只是简单的告诉从库,从哪个服务器上去找主库就OK了.简化了主从的搭建以及failover的过程,同时比传统的复制更加安全可靠.由于GTID是连续没有空洞的,因此主从库出现数据冲突时,可以通过注入空事物的方式进行跳过.本文主要讲述GTID主从架构的错误处理方式. 一.GTID的相关特性 配置My

MySQL的主从复制步骤详解及常见错误解决方法_Mysql

 mysql主从复制(replication同步)现在企业用的比较多,也很成熟.它有以下优点: 1.降低主服务器压力,可在从库上执行查询工作. 2.在从库上进行备份,避免影响主服务器服务. 3.当主库出现问题时,可以切换到从库上. 不过,用它做备份时就会也有弊端,如果主库有误操作的话,从库也会收到命令.     下面直接进入操作.这里使用的是debian5操作系统,mysql5.0,默认引擎innodb      10.1.1.45 主库      10.1.1.43 从库 1.设置主库 1)修

MySQL中主从复制重复键问题修复方法_Mysql

-------------------quote begin------------------------ 3. If you decide that you can skip the next statement from the master, issue the following statements: mysql> SET GLOBAL SQL_SLAVE_SKIP_COUNTER = n; mysql> START SLAVE; The value of n should be

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

解决mysql使用GTID主从复制错误问题 做MySQL主从的话肯定会遇到很多同步上的问题, 大多数都是由于机器宕机,重启,或者是主键冲突等引起的从服务器停止工作, 这里专门收集类似问题并提供整理解决方案,仅供参考! 1.主从网络中断,或主服务器重启,或从服务器重启,从会根据配置文件中的时间(默认1分钟)去自动重连主服务器,直到网络和服务均可正常连接,连接正常后可自动继续同步之前文件,不需要任何人工干预! 2.当主从因为人为原因出现不同步的时候,可以用下面命令进行同步:  代码如下 复制代码 L

mysql基于RHCS、Gtid主从复制的高性能、LB、HA集群架构

mysql基于RHCS.Gtid主从复制的高性能.LB.HA集群架构 本文基于2个角度进行 1:mysql主从复制,读写分离部分 2:RHCS实现mysql-proxy.mysql-master.lvs高可用 架构图 可能会用到的yum源 http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm http://elrepo.org/elrepo-release-6-5.el6.elrepo.noarch.r

MySQL master-slave主从复制环境搭建初试

原文:MySQL master-slave主从复制环境搭建初试   环境为centos 7.2+mysql 5.7,网上教程很多,原理也不复杂(深知自己踩的坑还不够) 正常情况下,配置起来比较简单.另外,根据个人感受,MySQL的复制感觉要比SQL Server的复制要清爽很多(尽管功能上可能有一些差异).      master服务器,首先是开启了二进制日志,同时设置server-id为一个具体的数值 1,创建复制用户 GRANT REPLICATION SLAVE ON *.* to 're

解决Mysql主从同步的Last_IO_Errno:1236错误问题

从服务器错误代码: Last_IO_Errno: 1236 Last_IO_Error: Got fatal error 1236 from master when reading data from binary log: 'Slave can not handle replication events with the checksum that master is configured to log; the first event 'mysql-bin.000005' at 167508