mysql gtid 开启失败_mysql开启GTID跳过错误的方法【转】

1、数据库版本

MySQL> select version()

-> ;

+-------------------------------------------+

| version()                                 |

+-------------------------------------------+

| 5.7.17                                  |

+-------------------------------------------+

1 row in set (0.00 sec)

--主从同步

10.10.6.87  主

10.10.90 从

2、产生问题过程

(1)主从库开启了GTID模式

(2)在从库某表添加了唯一索引,然后去主库给某表添加索引,导致问题 (此处为了测试,故意为之,制造问题)

'Duplicate key name 'i_index'' on query. Default database: 'test'. Query: 'create unique index i_index on t(id)'

(3) 查看从库状态,发现Slave_SQL_Running: No

mysql> show slave status \G;

*************************** 1. row ***************************

Slave_IO_State: Waiting for master to send event

Master_Host: 10.10.6.87

Master_User: rep

Master_Port: 3306

Connect_Retry: 60

Master_Log_File: mysql-bin.000028

Read_Master_Log_Pos: 1113

Relay_Log_File: mysql-bin.000007

Relay_Log_Pos: 1151

Relay_Master_Log_File: mysql-bin.000028

Slave_IO_Running: Yes

Slave_SQL_Running: No

Replicate_Do_DB:

Replicate_Ignore_DB: mysql,information_schema

Replicate_Do_Table:

Replicate_Ignore_Table:

Replicate_Wild_Do_Table:

Replicate_Wild_Ignore_Table:

Last_Errno: 1061

Last_Error: Error 'Duplicate key name 'i_index'' on query. Default database: 'test'. Query: 'create unique index i_index on t(id)'

Skip_Counter: 0

Exec_Master_Log_Pos: 938

Relay_Log_Space: 2301

Until_Condition: None

Until_Log_File:

Until_Log_Pos: 0

Master_SSL_Allowed: No

Master_SSL_CA_File:

Master_SSL_CA_Path:

Master_SSL_Cert:

Master_SSL_Cipher:

Master_SSL_Key:

Seconds_Behind_Master: NULL

Master_SSL_Verify_Server_Cert: No

Last_IO_Errno: 0

Last_IO_Error:

Last_SQL_Errno: 1061

Last_SQL_Error: Error 'Duplicate key name 'i_index'' on query. Default database: 'test'. Query: 'create unique index i_index on t(id)'

Replicate_Ignore_Server_Ids:

Master_Server_Id: 2

Master_UUID: 8f9e146f-0a18-11e7-810a-0050568833c8

Master_Info_File: /var/lib/mysql/master.info

SQL_Delay: 0                                            #SQL延迟同步

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp: 170421 15:44:05

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 8f9e146f-0a18-11e7-810a-0050568833c8:1-4

Executed_Gtid_Set: 8f9e146f-0a18-11e7-810a-0050568833c8:1-3,     #多出了一个GTID(本身实例执行的事务)

f7c86e19-24fe-11e7-a66c-005056884f03:1-9

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

ERROR:

No query specified

3、解决问题过程:

mysql> stop slave sql_thread;

Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> 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

mysql> stop slave;

Query OK, 0 rows affected (0.01 sec)

mysql> 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原因

3.1 分析出现问题时候GTID值

通过分析法获取gtid值

通过查看mysql> show slave status \G;

查看一下信息并记录下来:

Retrieved_Gtid_Set: 8f9e146f-0a18-11e7-810a-0050568833c8:1-4  --跳过此事务

Executed_Gtid_Set: 8f9e146f-0a18-11e7-810a-0050568833c8:1-3,f7c86e19-24fe-11e7-a66c-005056884f03:1-9

通过上面的信息可以知道已经执行的gtid是8f9e146f-0a18-11e7-810a-0050568833c8:1-3,准备要执行8f9e146f-0a18-11e7-810a-0050568833c8:4的时候出问题了,所以条跳过此步骤

或者 通过日志查看  (推荐)

#170421 15:36:28 server id 2  end_log_pos 938 CRC32 0x9f9f38d8

Xid = 140

COMMIT/*!*/;

# at 938

#170421 15:39:10 server id 2  end_log_pos 1003 CRC32 0x20f00692

GTID last_committed=3sequence_number=4

SET @@SESSION.GTID_NEXT= '8f9e146f-0a18-11e7-810a-0050568833c8:4'/*!*/;

# at 1003

#170421 15:39:10 server id 2  end_log_pos 1113 CRC32 0x4b10f015

Query thread_id=25420exec_time=0error_code=0

use `test`/*!*/;

SET TIMESTAMP=1492760350/*!*/;

create unique index i_index on t(id)

/*!*/;

SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;

DELIMITER ;

# End of log file

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;

解决办法一:跳过错误

(1)停止slave进程

mysql> STOP SLAVE;

(2)设置事务号,事务号从Retrieved_Gtid_Set获取

在session里设置gtid_next,即跳过这个GTID

mysql> SET @@SESSION.GTID_NEXT= '8f9e146f-0a18-11e7-810a-0050568833c8:4'

(3)设置空事物

mysql> BEGIN; COMMIT;

(4)恢复事物号

mysql> SET SESSION GTID_NEXT = AUTOMATIC;

(5)启动slave进程

mysql> START SLAVE;

解决办法二:重置master方法跳过错误

mysql>  STOP SLAVE;

mysql> RESET MASTER;

mysql>   SET @@GLOBAL.GTID_PURGED ='8f9e146f-0a18-11e7-810a-0050568833c8:1-4'

mysql>  START SLAVE;

上面这些命令的用意是,忽略8f9e146f-0a18-11e7-810a-0050568833c8:1-4 这个GTID事务,下一次事务接着从 5 这个GTID开始,即可跳过上述错误。

解决办法三:使用pt-slave-restart工具

pt-slave-restart工具的作用是监视某些特定的复制错误,然后忽略,并且再次启动SLAVE进程(Watch and restart MySQL replication after errors)。

忽略所有1062错误,并再次启动SLAVE进程

[root@dgt mysql]# pt-slave-resetart -S /var/lib/mysql/mysql.sock —error-numbers=1062

检查到错误信息只要包含 test.t1,就一概忽略,并再次启动 SLAVE 进程

[root@dgt mysql]# pt-slave-resetart -S /var/lib/mysql/mysql.sock  —error-text=”test.t1”

下面举例解决错误问题号

Last_SQL_Error: Could not execute Delete_rows event on table test.t; Can't find record in 't', Error_code: 1032; handler error HA_ERR_KEY_NOT_FOUND; the event's master log mysql-bin.000028, end_log_pos 1862

Replicate_Ignore_Server_Ids:

Master_Server_Id: 2

Master_UUID: 8f9e146f-0a18-11e7-810a-0050568833c8

Master_Info_File: /var/lib/mysql/master.info

SQL_Delay: 0

SQL_Remaining_Delay: NULL

Slave_SQL_Running_State:

Master_Retry_Count: 86400

Master_Bind:

Last_IO_Error_Timestamp:

Last_SQL_Error_Timestamp: 170421 17:45:11

Master_SSL_Crl:

Master_SSL_Crlpath:

Retrieved_Gtid_Set: 8f9e146f-0a18-11e7-810a-0050568833c8:1-7

Executed_Gtid_Set: 8f9e146f-0a18-11e7-810a-0050568833c8:1-6,

f7c86e19-24fe-11e7-a66c-005056884f03:1

Auto_Position: 0

Replicate_Rewrite_DB:

Channel_Name:

Master_TLS_Version:

1 row in set (0.00 sec)

[root@dgt mysql]# pt-slave-restart  -S  /var/lib/mysql/mysql.sock   --error-numbers=1032   --user=root --password='bc.123456'

2017-04-21T17:53:27 S=/var/lib/mysql/mysql.sock,p=...,u=root mysql-bin.000015         620 1032

2017-04-21T17:54:31 S=/var/lib/mysql/mysql.sock,p=...,u=root mysql-bin.000015        1140 1032

参数解释:

--slave-password=s     Sets the password to be used to connect to the slaves

--slave-user=s         Sets the user to be used to connect to the slaves

--sleep=i              Initial sleep seconds between checking the slave ( default 1)

--socket=s         -S  Socket file to use for connection=

--password=s       -p  Password to use when connecting

pt-slave-resetart  -S./mysql.sock —error-numbers=1032

--error-numbers=h      Only restart this comma-separated list of errors

--host=s           -h  Connect to host

--user=s           -u  User for login if not current user

转自

mysql开启GTID跳过错误的方法 - wll的专栏 - CSDN博客

http://blog.csdn.net/wll_1017/article/details/70332107

GTID | iMySQL | 老叶茶馆

http://imysql.cn/tag/gtid

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/380897.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

处理机流水线------经典五段流水线

文章是在我遇到这部分问题时查找的所有感觉挺好的内容的整合(全部是转载的) 流水线基础理论就不加了,最新的处理器流水线处理的机制也没有(一般以用不到),想了解去随便找个芯片厂商官网下个手册自己查。 这…

mysql 复制用户_MySQL修改复制用户及密码

在生产环境中有时候需要修改复制用户账户的密码,比如密码遗失,或者由于多个不同的复制用户想统一为单独一个复制账户。对于这些操作应尽可能慎重以避免操作不同导致主从不一致而需要进行修复。本文描述了修改复制账户密码以及变更复制账户。 1、更改复制…

MUL,IMUL指令溢出

MUL 用途: 该指令完成两个无符号值的乘法运算。   语法结构/举例   mul regB|memB   mul bl   mul regW|memW   mul [aword]   仅80386有:   mul regDW|memDW mul ebx   示范代码   DATASEG   multiplicand dw 1024   multiplier …

求1+2+......+100的和

如何求12…100的和?有很多方法,这里我介绍用三种循环方法去求12…100的和 方法一:for循环: 代码如下: /**1. 求12......100的和2. 方法1:for循环*/ public class Demo2 {public static void main(String[…

台湾游戏企业抢滩大陆 研发成竞争核心

近日,台湾游戏企业进驻大陆设立研发机构、产品同大陆企业联合运营、大陆企业的产品进入台湾联运,以及最新的政策新闻,都将大陆和台湾这对本是同根的产业兄弟推上了风口浪尖。 在正在举行的“第二届中国优秀游戏制作人评选大赛”上&#xff0c…

phpstud如何安装mysql新版_MySQL_图解MySQL数据库的安装和操作,一、MySQL下载与安装 1、 - phpStudy...

图解MySQL数据库的安装和操作一、MySQL下载与安装1、下载介绍MySQL相信大家一定听说过,如果不知道它是干什么的,可以去google一下。MySQL的大本营:http://www.mysql.com/MySQL的下载地址:http://dev.mysql.com/downloads/ 因为要从…

erlang小技巧

.列表操作 lists:foreach(fun(X) -> io:format("E~p~n",[X]) end, [1,2,3]). lists:duplicate(10, 16#f). % [15,15,15,15,15,15,15,15,15,15] "abc-123" -> "abc" no_vsn(Name) -> lists:takewhile(fun($-)->false;(_)-> true …

mysql 插入中文 ERROR 1366 (HY000): Incorrect string value: '\xE7\x8E\x9E\x97' for column

1、出现这个问题,是因为我们的字符编码设置出现了问题,用cmd打开命令终端,查看我们的数据库设置: 2、输入命令use crm(crm是我创建的数据库,大家在修改时换成自己的数据库名即可) 再输入:show …

handlersocket mysql_Mysql插件之HandlerSocket的安装、配置、使用

HandlerSocket简介HandlerSocket是针对Mysql的一个NoSQL插件,它作为一个守护进程工作在mysqld进程里面,接收tcp连接,并处理来自客户端的请求。HandlerSocket不支持SQL查询,作为替代,它支持表的简单的CRUD操作。由于下面的原因&…

【转】TeeChart的用法

/// <summary> /// 获得数据集 /// </summary> /// <param name"sqlStr">传递查询语句</param> /// <returns>返回数据集</returns> public static DataSet GetDataSet(string sqlStr) { string conns…

java,jdk安装,配置环境变量,window10系统

1、找到我们要安装的jdk软件&#xff0c;软件下载我就不介绍了&#xff0c;jdk下载连接地址 然后安装&#xff0c;一直点下一步就可以了&#xff0c;这里不建议跟换软件目录&#xff0c;毕竟第一次用&#xff0c;出了什么错就不好弄了&#xff0c;注&#xff1a;记得软件的安装…

solr mysql数据注入_(solr系列:四)将mysql数据库中的数据导入到solr中

在前面的博文中&#xff0c;已完成了在tomcat中对solr的部署&#xff0c;为solr添加了一个自定义的core,并且引入了ik分词器。那么该如何将本地的mysql的数据导入到solr中呢&#xff1f;准备工作&#xff1a;1、mysql数据源&#xff1a;myuser库中的user表(8条数据)/*Navicat M…

40种Javascript中常用的使用小技巧【转】

1. οncοntextmenu"window.event.returnValuefalse" 将彻底屏蔽鼠标右键< table border οncοntextmenureturn(false)>< td>no< /table> 可用于Table 2. < body onselectstart"return false"> 取消选取、防止复制 3. οnpaste&q…

超链接去下划线

在a标签里加上 style"text-decoration: none

Silverlight学习笔记(三):创建第一个Silverlight应用程序

在开始创建程序之前&#xff0c;还是要提一下关于Silverlight开发环境搭建的问题。如果使用VS2010&#xff0c;这可以搭建Silverlight4的开发环境。我推荐大家看这篇由大牛jv9撰写的【轻松建立Silverlight 4开发环境】。 我使用的是VS2008&#xff0c;所以要搭建的是Silverlig…

按钮旁边加一个提示_地铁站的那些“红色按钮”,你知道是干啥用的吗?乱按可能被拘留...

地铁紧急停车按钮图片来自网络位置&#xff1a;站台两侧墙壁上&#xff0c;靠近列车车头、车尾两侧。外观&#xff1a;上锁的红色四方小盒子&#xff0c;按钮为红色&#xff0c;旁边写有“紧急停车按钮”等字样。使用&#xff1a;紧急时刻击碎中间玻璃&#xff0c;按压按钮。红…

java中的局部变量、成员变量、类变量

局部变量&#xff1a;在方法、构造函数或者语句块中定义的变量被称为局部变量。 特点&#xff1a;变量的声明和初始化都是在方法中&#xff0c;方法结束后&#xff0c;变量就会自动销毁。 例&#xff1a;下面代码块的s2 成员变量&#xff1a;成员变量是定义在类中&#xff0c;…

根据F12在页面中调整div的大小

我们先随便写一个div大小&#xff0c;然后在chrome浏览器打开&#xff0c;显示效果&#xff1a; #logo{border: 1px solid black;width: 1300px;height: 50px;} .top{border: blue solid 1px;width: 420px;height: 50px;float: left;}<div id"logo"><div c…

头文件

1、头文件用于声明而不是用于定义 定义只可以出现一次&#xff0c;而声明可以出现多次。下列语句是一些定义&#xff0c;不应该放在头文件里&#xff1a; extern int ival 10; double fica_rate; 虽然ival声明为extern&#xff0c;但是它有初始化式&#xff0c;代表这条语句是…

删除了注册表winsock项及winsock2项怎么办

国庆节期间要值一天班&#xff0c;看看网站有没有什么问题&#xff0c;可是打开电脑去上不了网&#xff0c;于是在网上寻找答案&#xff0c;就这么着看到一个贴子&#xff0c;让删除注册表中的winsock及winsock2两项&#xff0c;哎&#xff0c;这一删可出大事了&#xff0c;网更…