文档章节

MySQL GTID (三)

o
 osc_pn11u1x9
发布于 2018/08/06 08:37
字数 876
阅读 8
收藏 0

精选30+云产品,助力企业轻松上云!>>>

###五.如何跳过一个GTID

环境见系列一

5.1 创建表,模拟数据

#主机上
create table t_test (id int primary key ,name varchar(10));

insert into t_test values(1,'aa'),(2,'bb'),(3,'cc');

#备机上插入一条,模拟冲突
insert into t_test values(4,'dd');

5.2 模拟冲突

#主机上
insert into t_test values(4,'dd');

#备机上查看复制状态
show slave status \G;

5.3 通过上图,可以定位到冲突的位置,mysqlbinlog查看具体的语句

#主库上mysqlbinlog 查看相关语句
mysqlbinlog --start-position=930 --stop-position=1193 -d test --base64-output=DECODE-ROWS -v /MySQL/my3306/log/binlog/binlog.000018   

5.4 基于GTID模式的复制,跳过一个事务,需要利用一个空事务。

stop slave;
set GTID_NEXT='9760cb92-693e-11e8-85bf-000c29b55cf0:11';

#开启一个空事务
begin;commit;

SET GTID_NEXT='AUTOMATIC';
start slave ;

#查看复制是否正常
mysql> show slave status \G;
*************************** 1. row ***************************
			   Slave_IO_State: Waiting for master to send event
				  Master_Host: 192.168.2.144
				  Master_User: rep
				  Master_Port: 3306
				Connect_Retry: 60
			  Master_Log_File: binlog.000019
		  Read_Master_Log_Pos: 194
			   Relay_Log_File: relaylog.000017
				Relay_Log_Pos: 357
		Relay_Master_Log_File: binlog.000019
			 Slave_IO_Running: Yes
			Slave_SQL_Running: Yes
			  Replicate_Do_DB: 
		  Replicate_Ignore_DB: 
		   Replicate_Do_Table: 
	   Replicate_Ignore_Table: 
	  Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
				   Last_Errno: 0
				   Last_Error: 
				 Skip_Counter: 0
		  Exec_Master_Log_Pos: 194
			  Relay_Log_Space: 804
			  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: 0
Master_SSL_Verify_Server_Cert: No
				Last_IO_Errno: 0
				Last_IO_Error: 
			   Last_SQL_Errno: 0
			   Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
			 Master_Server_Id: 101
				  Master_UUID: 9760cb92-693e-11e8-85bf-000c29b55cf0
			 Master_Info_File: /MySQL/my3306/data/master.info
					SQL_Delay: 0
		  SQL_Remaining_Delay: NULL
	  Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
		   Master_Retry_Count: 86400
				  Master_Bind: 
	  Last_IO_Error_Timestamp: 
	 Last_SQL_Error_Timestamp: 
			   Master_SSL_Crl: 
		   Master_SSL_Crlpath: 
		   Retrieved_Gtid_Set: 9760cb92-693e-11e8-85bf-000c29b55cf0:8-11
			Executed_Gtid_Set: 790ff8a6-918a-11e8-87db-000c29c27768:1,
9760cb92-693e-11e8-85bf-000c29b55cf0:1-11
				Auto_Position: 0
		 Replicate_Rewrite_DB: 
				 Channel_Name: 
		   Master_TLS_Version: 
1 row in set (0.00 sec) 

###六.利用GTID模式快速改变主从复制关系 原架构:主:192.168.2.144 从:192.168.2.138/192.168.2.147

先架构:改为级联模式

基于GTID复制,DBA可以快速调整复制的拓扑结构,只需要调整复制节点的基本信息,不需要手动寻找复制点

####6.1 停止192.168.2.147实例的复制 STOP SLAVE;

####6.2 调整192.168.2.147实例的复制关系,修改复制源为138,MASTER_AUTO_POSITION为1 CHANGE MASTER TO MASTER_HOST='192.168.2.138', MASTER_PORT=3306, MASTER_AUTO_POSITION=1;

####6.3 启动192.168.2.147 START SLAVE;

####6.4 观察复制的情况 SHOW SLAVE STATUS \G;

####6.5 START SLAVE后,节点138 与节点 147的交互如下 1.147节点向138节点发起一个Dump Binlg请求,并将自身已经执行的GTID集合信息一起发送给138节点。 2.138节点通过对比接收到147节点发送过来的GTID集合,将147节点未执行的Binlog信息发送给C节点。 3.147节点获取未执行的Binlog信息,并应用这些Binlog,在这个过程中,138节点还会不断的发送最新的Binlog到147. 4.147节点不断的apply Binlog,最终实现147节点与138节点的同步。

正常来说,到这一步级联复制就建立起来了,但是由于本文之前在192.168.2.138上跳过一个GTID,导致报错

####解决方案: RESET MASTER;

#在 192.168.2.138上 查询Executed_Gtid_Set
show MASTER status \G;
*************************** 1. row ***************************
			 File: binlog.000007
		 Position: 1385
	 Binlog_Do_DB: 
 Binlog_Ignore_DB: 
Executed_Gtid_Set: 790ff8a6-918a-11e8-87db-000c29c27768:1,
9760cb92-693e-11e8-85bf-000c29b55cf0:1-11
1 row in set (0.00 sec)

#在192.168.2.147跳过这些GTID
SET GLOBAL GTID_PURGED='9760cb92-693e-11e8-85bf-000c29b55cf0:1-11';
START SLAVE; 

#此时复制正常
show slave status \G;
*************************** 1. row ***************************
			   Slave_IO_State: Waiting for master to send event
				  Master_Host: 192.168.2.138
				  Master_User: rep
				  Master_Port: 3306
				Connect_Retry: 60
			  Master_Log_File: binlog.000007
		  Read_Master_Log_Pos: 1385
			   Relay_Log_File: relaylog.000003
				Relay_Log_Pos: 445
		Relay_Master_Log_File: binlog.000007
			 Slave_IO_Running: Yes
			Slave_SQL_Running: Yes
			  Replicate_Do_DB: 
		  Replicate_Ignore_DB: 
		   Replicate_Do_Table: 
	   Replicate_Ignore_Table: 
	  Replicate_Wild_Do_Table: 
  Replicate_Wild_Ignore_Table: 
				   Last_Errno: 0
				   Last_Error: 
				 Skip_Counter: 0
		  Exec_Master_Log_Pos: 1385
			  Relay_Log_Space: 1203
			  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: 0
Master_SSL_Verify_Server_Cert: No
				Last_IO_Errno: 0
				Last_IO_Error: 
			   Last_SQL_Errno: 0
			   Last_SQL_Error: 
  Replicate_Ignore_Server_Ids: 
			 Master_Server_Id: 102
				  Master_UUID: 790ff8a6-918a-11e8-87db-000c29c27768
			 Master_Info_File: /MySQL/my3306/data/master.info
					SQL_Delay: 0
		  SQL_Remaining_Delay: NULL
	  Slave_SQL_Running_State: Slave has read all relay log; waiting for more updates
		   Master_Retry_Count: 86400
				  Master_Bind: 
	  Last_IO_Error_Timestamp: 
	 Last_SQL_Error_Timestamp: 
			   Master_SSL_Crl: 
		   Master_SSL_Crlpath: 
		   Retrieved_Gtid_Set: 790ff8a6-918a-11e8-87db-000c29c27768:1
			Executed_Gtid_Set: 9760cb92-693e-11e8-85bf-000c29b55cf0:1-11
				Auto_Position: 1
		 Replicate_Rewrite_DB: 
				 Channel_Name: 
		   Master_TLS_Version: 
1 row in set (0.00 sec)
o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
深入理解MySQL 5.7 GTID系列(九):实际案例一

导 读 本案例是一个朋友的案例,他也做过分享: https://mp.weixin.qq.com/s/XSnFkuYzIlGWMaXIl-oPeQ 一、触发条件 二、本案例回顾 三、故障分析 其实本案例就是前文第七部分总结中的: 从案...

n88lpo
2018/04/18
0
0
深入理解MySQL 5.7 GTID系列(九):实际案例一

导 读 作者:高鹏(重庆八怪) 原文地址: https://www.jianshu.com/p/2c25842d58d3 深入理解MySQL 5.7 GTID系列文章共十篇,本文为第四篇,点击查看: 第一篇:深入理解MySQL 5.7 GTID系列(...

老叶茶馆
2018/04/13
0
0
深入理解MySQL 5.7 GTID系列

作者:高鹏(重庆八怪) 原文地址: https://www.jianshu.com/p/caae9a019dbd 深入理解MySQL 5.7 GTID系列文章共十篇,本文为第四篇, 第一篇:深入理解MySQL 5.7 GTID系列(一) 第二篇:深...

osc_rl9a6jid
2019/02/27
1
0
深入理解MySQL 5.7 GTID系列(十):实际案例二

导 读 本案例是我真实遇到过的一个坑,也在前文中不止一次地提到,当时也是非常纳闷,其实知道原因后只能说为什么会这么坑。 一、触发条件 本案列我测试过4个版本: percona Mysql 5.7.14 官...

n88lpo
2018/04/25
0
0
配置MySQL GTID 主从复制

GTID是一个基于原始mysql服务器生成的一个已经被成功执行的全局事务ID,它由服务器ID以及事务ID组合而成。这个全局事务ID不仅仅在原始服务器器上唯一,在所有存在主从关系 的mysql服务器上也...

科技小能手
2017/11/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

强制行家更新 - Force maven update

问题: I imported my working project on other computer so it started to download dependencies. 我将工作项目导入其他计算机,因此它开始下载依赖项。 Apparently in the meantime my ......

javail
51分钟前
13
0
skywalking实现分布式系统链路追踪

一、背景 随着微服务的越来越流行,我们服务之间的调用关系就显得越来越复杂,我们急需一个APM工具来分析系统中存在的各种性能指标问题以及调用关系。目前主流的APM工具有CAT、Zipkin、Pinpo...

燚-焱
57分钟前
16
0
2020最新的Spring Boot 分布式锁的具体实现(内附代码)

前言 面试总是会被问到有没有用过分布式锁、redis 锁,大部分读者平时很少接触到,所以只能很无奈的回答 “没有”。本文通过 Spring Boot 整合 redisson 来实现分布式锁,并结合 demo 测试结...

北柠Java
今天
28
0
Shiro中获取Cookie

自定义shiro的SessionIdCookie 在使用shiro的时候,曾经有段时间很苦恼,因为我cookie的sessionId经常无故被改,然后抛There is no session with id [xxxx]的异常。我们知道,当请求过来,s...

豫华商
今天
14
0
JPA和Hibernate有什么区别? [关闭] - What's the difference between JPA and Hibernate? [closed]

问题: I understand that JPA 2 is a specification and Hibernate is a tool for ORM. 我知道JPA 2是一个规范,而Hibernate是ORM的工具。 Also, I understand that Hibernate has more fea......

富含淀粉
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部