mysql replication(主从复制)(三)GTIDs

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

1、理论部分

1.1、什么是GTIDs?

1)GTIDs(Global transaction identifiers)是mysql5.65新加入的一项技术

2)档使用GITDs时,无论是在Master上提交事务还是在Slave上应用,每一个事务都可以被识别并跟踪。

3)添加新的Slave或者当发生故障需要将Master身份迁移到Slave上时,都无需考虑那一个二进制日志以及哪一个position。这样极大简化相关操作。

4)GTIDs是完全基于事务的,因此,不支持MYISAM存储引擎。


这是由MyISAM 和 InnoDB 区别造成:

InnoDB和MyISAM是许多人在使用MySQL时最常用的两个表类型,这两个表类型各有优劣,视具体应用而定。

基本的差别为:MyISAM类型不支持事务处理等高级处理,而InnoDB类型支持。MyISAM类型的表强调的是性能,其执行数度比InnoDB类型更快,但是不提供事务支持,而InnoDB提供事务支持已经外部键等高级数据库功能。

1.2、GTID的组成:

1)GTID由source_id和transaction_id两部分组成。

2)source_id来自于server_uuid,可以在auto.cnf中查看。

3)transaction_id是一个序列数字,从小到大自动生成。

例子:

fc6e129e-a2b4-11e3-a7d8-000c297d497f:23

":"前是server-uuid,后是transaction_id

查看server-uuid:

1
cat  /var/lib/mysql/auto .cnf

1.3、GTIDs的工作原理

1)Slave发送已经执行过的GTID的范围给Master。

2)Master根据收到的GTID范围,补充发送每一个丢失的事物给Slave。

wKiom1YDU1_iMiHBAAB63oz4okk358.jpg

如上图所示:

你想从Trx4开始复制,但Trx2在数据库中因某种原因丢失:

Transaction_id处理方式:

直接从Trx4开始同步,Trx2再也不被执行。

GTIDs的处理方式:

Trx2被补充性复制,从Trx4开始往后复制。

1.4、使用GTIDs的限制条件

1)不支持MYSAM。这可能导致多个GTID分配给同一个实务。

2)create table ...select(子查询创建表)语句不支持。

3)create/drop temporary teble语句不支持。

4)必须使用enforce-gtid-consistency参数。

5)slq-slave-skip-counter不支持。

6)在MySQL5.6.9之后的版本导入使用mysqldump制作的备份时,需要保证二进制日志不包含GITDs。

7)在MySQL5.6.7之前,使用mysql_upgrade命令会出现问题。

1.5、旧MySQL版本对配置GTIDs的要求

配置基于GTIDs的Replication

生产环境中,大多数情况下使用的MySQL5.6基本上都是MySQL5.5或更低版本升级而来。这就意味着之前的MySQL Replication的方案是基于传统的方式。所以,我们需要利用已有的环境升级至基于GITDs的Replication。

2、实验部分

2.1、实验的前提


以下实验以“mysql replication(主从复制)(一)MS模式”为基础,如果你做如下测试,请先参阅如下链接:

http://cmdschool.blog.51cto.com/2420395/1696474

以下操作目的是将mysql升级到5.6版本。

In Master&Slave

2.1.1、step1

查看未升级前的版本:

1
mysql -V

wKioL1YD55nTUZWlAAB3aMOe2Pw617.jpg

2.1.2、step2

安装mysql的yum源:

1
yum -y  install  http: //dev .mysql.com /get/mysql-community-release-el6-5 .noarch.rpm

如果以上源不适用请自行到官方网站下载:

http://dev.mysql.com/downloads/repo/

升级mysql相关部件:

1
yum -y update mysql mysql-devel mysql-server

2.1.3、step3

查看升级后的版本:

1
mysql -V

wKioL1YD7RSRE_BNAABD8DWgGK0543.jpg

2.1.4、step4

尝试启动服务:

1
/etc/init .d /mysqld  start

有可能服务不能启用:

wKioL1YD5aPA2BolAABC1yDk_ec013.jpg

查看日志中的报错:

1
tail  -n 200  /var/log/mysqld .log

wKiom1YD5dShW-KRAAbEBLsQeOw991.jpg

1
2
3
cd  /var/lib/mysql/
rm  ibdata1 ib_logfile0 ib_logfile1
/etc/init .d /mysqld  start

wKioL1YD5oiBlg2QAAAwJRTQNq4986.jpg

“/var/lib/mysql/”请根据自己数据库实际存放路径调整。  

2.1.5、step5

更新自带的数据库

1
mysql_upgrade -u root -p

wKiom1YQomyQVhWlAAHQQiwOXpA645.jpg

2.2、实验的步骤

2.2.1、step1

In Master&Slave

服务器都设置为read-only

1
mysql>  set  @@ global .read_only= on ;

wKioL1YErO7yX5s-AABdZzIViTQ756.jpg

2.2.2、step2

In Master&Slave

停止服务:

1
/etc/init .d /mysqld  stop

wKioL1YEr3ejT3GyAAA0l4r7pAA196.jpg

2.2.3、step3

开启GTIDS

In Master&Slave

两台机器都包含以下配置参数,用vim编辑他们的/etc/my.cnf

1
2
3
4
5
[mysqld]
gtid-mode=on
enforce-gtid-consistency 
log-slave-updates
log-bin

wKioL1YErbWiRfq-AAIRYyHwkDc679.jpg

In Slave

vim编辑Slave的/etc/my.cnf

1
skip-slave-start

wKiom1YEroiQiMU0AAGsR5oYpKg450.jpg

注意:

1)“skip-slave-start”参数目的是启服务时“Slave_IO_Running”&“Slave_SQL_Running”为“NO”状态,你需要在做完实验后注解掉。

2)“binlog-format=row”如果Master端开启Slave端也要开启,否则Slave状态会异常。

2.2.4、step4

In Master&Slave

1
/etc/init .d /mysqld  start

wKioL1YEr_iB0TgQAAA5hZintLE890.jpg

In Slave

重新配置Slave的change master

1
2
3
4
5
6
7
mysql> change master to
     -> master_host= '10.168.0.103' ,
     -> master_port=3306,
     -> master_user= 'repl' ,
     -> master_password= 'repl' ,
     -> master_auto_position=1;
mysql> start slave;

wKiom1YEtBrDhCOWAADqa4EGPoY846.jpg

检查:

1
show slave status\G

wKiom1YE8WCANP_DAAJK0aOUEiQ209.jpg

wKioL1YE8RLCFPbwAAJlt7t7kh8579.jpg

注意查看:auto_position的参数状态。









本文转自 tanzhenchao 51CTO博客,原文链接:http://blog.51cto.com/cmdschool/1697570,如需转载请自行联系原作者

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
2月前
|
SQL 关系型数据库 MySQL
mysql主从复制概述和配置
【10月更文挑战第22天】MySQL 主从复制是一种将主服务器的数据复制到一个或多个从服务器的技术,实现读写分离,提高系统性能和可用性。主服务器记录变更日志,从服务器通过 I/O 和 SQL 线程读取并应用这些变更。适用于读写分离、数据备份和恢复、数据分析等场景。配置步骤包括修改配置文件、创建复制用户、配置从服务器连接主服务器并启动复制进程。
127 1
|
2月前
|
监控 关系型数据库 MySQL
深入了解MySQL主从复制:构建高效稳定的数据同步架构
深入了解MySQL主从复制:构建高效稳定的数据同步架构
143 1
|
7天前
|
关系型数据库 MySQL 数据库
docker高级篇(大厂进阶):安装mysql主从复制
docker高级篇(大厂进阶):安装mysql主从复制
65 24
|
2月前
|
存储 关系型数据库 MySQL
MySQL主从复制原理和使用
本文介绍了MySQL主从复制的基本概念、原理及其实现方法,详细讲解了一主两从的架构设计,以及三种常见的复制模式(全同步、异步、半同步)的特点与适用场景。此外,文章还提供了Spring Boot环境下配置主从复制的具体代码示例,包括数据源配置、上下文切换、路由实现及切面编程等内容,帮助读者理解如何在实际项目中实现数据库的读写分离。
121 1
MySQL主从复制原理和使用
|
2月前
|
SQL 关系型数据库 MySQL
Mysql中搭建主从复制原理和配置
主从复制在数据库管理中广泛应用,主要优点包括提高性能、实现高可用性、数据备份及灾难恢复。通过读写分离、从服务器接管、实时备份和地理分布等机制,有效增强系统的稳定性和数据安全性。主从复制涉及I/O线程和SQL线程,前者负责日志传输,后者负责日志应用,确保数据同步。配置过程中需开启二进制日志、设置唯一服务器ID,并创建复制用户,通过CHANGE MASTER TO命令配置从服务器连接主服务器,实现数据同步。实验部分展示了如何在两台CentOS 7服务器上配置MySQL 5.7主从复制,包括关闭防火墙、配置静态IP、设置域名解析、配置主从服务器、启动复制及验证同步效果。
Mysql中搭建主从复制原理和配置
|
3月前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
128 6
|
3月前
|
存储 关系型数据库 MySQL
分析MySQL主从复制中AUTO_INCREMENT值不一致的问题
通过对 `AUTO_INCREMENT`不一致问题的深入分析和合理应对措施的实施,可以有效地维护MySQL主从复制环境中数据的一致性和完整性,确保数据库系统的稳定性和可靠性。
77 1
|
3月前
|
关系型数据库 MySQL Java
MySQL主从复制实现读写分离
MySQL主从复制(二进制日志)、 Sharding-JDBC实现读写分离
MySQL主从复制实现读写分离
|
4月前
|
存储 关系型数据库 MySQL
实战!MySQL主从复制一键搭建脚本分享
实战!MySQL主从复制一键搭建脚本分享
98 2
|
4月前
|
SQL 关系型数据库 MySQL
说一下MySQL主从复制的原理?
【8月更文挑战第24天】说一下MySQL主从复制的原理?
66 0