Mysql开启GTID后遇到错误跳过方法
时间:2019-08-23 17:28 来源:linux.it.net.cn 作者:IT
处理方法如下:
一:跳过错误
这个GTID_NEXT的4,是在master 上正常执行的最大id + 1,即Executed_Gtid_Set
里面master uuid执行过的最大值 3+ 1
STOP SLAVE ; #首先停止gtid复制
SET @@SESSION.GTID_NEXT= '8f9e146f-0a18-11e7-810a-0050568833c8:4' ; 设置当前下一个执行的事务Id
BEGIN; COMMIT; # 设置空事务,直接提交
SET @@session.gtid_next=automatic;; #恢复下一个事务号
START SLAVE; # 继续开启事务
二,重置master跳过错误
手工调整SLAVE已清除的GTID列表GTID_PURGED,人为通知SLAVE哪些事务已经被清除了,后续可以忽略:
STOP SLAVE;
RESET MASTER;
SET @@GLOBAL.GTID_PURGED = '00018601-1111-1111-1111-111111111123:1-2031';
START SLAVE;
#在slave 运行时刻 reset master 命令不被支持
#在GTID环境中,RESET MASTER会清除掉系统变量gtid_purged和gtid_executed的值
上面 gtid_next 的值 00018601-1111-1111-1111-111111111123:2030是个会话级变量。
-
uuid是
Retrieved_Gtid_Set
的uuid,一般是 Master_UUID
的值,但如果是级联复制(master -> slavel1 -> slave2),那么要找到出错事务最原先在哪执行的
-
trx_id(或叫position)是 master 上正常执行的最大id + 1,即
Executed_Gtid_Set
里面master uuid执行过的最大值 2030+ 1
(责任编辑:IT)
处理方法如下: 一:跳过错误
这个GTID_NEXT的4,是在master 上正常执行的最大id + 1,即 STOP SLAVE ; #首先停止gtid复制 SET @@SESSION.GTID_NEXT= '8f9e146f-0a18-11e7-810a-0050568833c8:4' ; 设置当前下一个执行的事务Id BEGIN; COMMIT; # 设置空事务,直接提交 SET @@session.gtid_next=automatic;; #恢复下一个事务号 START SLAVE; # 继续开启事务 二,重置master跳过错误 手工调整SLAVE已清除的GTID列表GTID_PURGED,人为通知SLAVE哪些事务已经被清除了,后续可以忽略: STOP SLAVE; RESET MASTER; SET @@GLOBAL.GTID_PURGED = '00018601-1111-1111-1111-111111111123:1-2031'; START SLAVE; #在slave 运行时刻 reset master 命令不被支持 #在GTID环境中,RESET MASTER会清除掉系统变量gtid_purged和gtid_executed的值
上面 gtid_next 的值 00018601-1111-1111-1111-111111111123:2030是个会话级变量。
(责任编辑:IT) |