GTID复制详解

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介: 前言GTID复制是MySQL 5.6后的新功能,在传统的方式里,主从切换后,需要找到binlog和POS点,然后执行命令change master to 指向新的主库。对于不是很有经验的人来说,往往会找错,造成主从同步复制报错,在MySQL 5.6版本里,无须再找binlog和POS点,只需要知道master的IP、端口、账号和密码即可,因为同步复制是自动的,MySQL会通过内部机制GTID(Global Transaction ID)自动找点同步。

前言

GTID复制是MySQL 5.6后的新功能,在传统的方式里,主从切换后,需要找到binlog和POS点,然后执行命令change master to 指向新的主库。对于不是很有经验的人来说,往往会找错,造成主从同步复制报错,在MySQL 5.6版本里,无须再找binlog和POS点,只需要知道master的IP、端口、账号和密码即可,因为同步复制是自动的,MySQL会通过内部机制GTID(Global Transaction ID)自动找点同步。另外,MariaDB 10.0版本中,默认开启GTID,无需设置任何参数。

GTID复制名词解释

server_uuid

服务器身份ID。在第一次启动MySQL时,会自动生成一个server_uuid并写入数据目录下的auto.cnf文件里,官方不建议修改。并且server_uuid跟GTID有密切联系。

GTID

全局事务标识符。使用这个功能时,每次事务提交都会在binlog里生成一个唯一的标识符,它由UUID和事务ID组成。首次提交的事务ID为1,第二次为2,第三次为3,依次类推。
开启GTID时,slave进行同步复制的时候,无须找到binlog日志和POS点,直接change master to master_auto_position = 1即可,它会自动找点同步。

GTID的工作流程

1、在master上一个事务提交,并写入binlog里
2、binlog日志发送到slave,slave接收完并写入中继日志里,slave读取到这个GTID,并设置gtid_next的值。例如:

SET@@SESSION.GTID_NEXT='B0869D03-D4A9-11E1-A2E-000C290A6B8F:3;'

然后告诉slave接下来的事务必须使用GTID,并写入它自动的binlog里。
3、slave检查并确认这个GTID没有被使用,如果没有被使用,那么开始执行这个事务并写入它自已的binlog里。
4、由于gtid_next的值不为空,slave不会尝试去生成一个新的gtid,而是通过主从同步来获取GTID

注意: 如果使用了GTID,就不能使用传统的binlog和POS方式。

GTID的局限性包含以下几方面

  • GTID同步复制是基于事务的,所以MyISAM表不支持,这可能导致多个GTID分配给同一个事务
  • 不支持CREATE TABLE...SELECT 语句。因为该语句会被拆分成create table和insert两个事务,并且,如果这两个事务被分配了同一个GTID,则会导致instert被备库忽略掉。

设置MySQL 5.6 GTID方式的主从同步

在my.cnf中加入:

log-bin = mysql-bin
binlog_format = row
log_slave_updates = 1
gtid_mode = ON
enforce_gtid_consistency = ON

在master导入数据到slave后,在slave执行:

mysql> CHANGE MASTER TO 
> MASTER_HOST = master-host,
> MASTER_PORT = master-port,
> MASTER_USER = repl-user,
> MASTER_PASSWORD = repl-password,
> MASTER_AUTO_POSITION = 1;
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
目录
相关文章
|
传感器 安全 中间件
深入浅出:SOME/IP协议中的服务发现机制解析
深入浅出:SOME/IP协议中的服务发现机制解析
958 1
uniapp input框监听回车搜索事件效果demo(整理)
uniapp input框监听回车搜索事件效果demo(整理)
|
JavaScript 前端开发
使用typora生成时序图
掌握生产力工具,使用typora和mermaid生成时序图
801 0
|
自然语言处理 Windows
Internet Download Manager (简称IDM)2023绿色下载器介绍
Internet Download Manager是一款拥有续传功能的下载软件,多线程下载,提升你的下载速度最多达5倍。续传功能可以让因为网络问题、计算机死机甚至无预警的停电导致只能下载到一半的软件继续下载,与浏览器搭配使用有着非常舒适的下载体验。
1521 1
|
11月前
|
XML Java 数据安全/隐私保护
Spring Aop该如何使用
本文介绍了AOP(面向切面编程)的基本概念和术语,并通过具体业务场景演示了如何在Spring框架中使用Spring AOP。文章详细解释了切面、连接点、通知、切点等关键术语,并提供了完整的示例代码,帮助读者轻松理解和应用Spring AOP。
310 2
Spring Aop该如何使用
|
SQL BI 数据库
带你理解 只读事务(@Transactional(readOnly = true)
带你理解 只读事务(@Transactional(readOnly = true)
785 1
|
消息中间件 Java 调度
一次线上服务CPU100%的排查过程
文章记录了一次线上服务CPU使用率达到100%的排查过程,通过使用top命令和jstack工具确定了导致高CPU使用的线程,并分析了Disruptor组件的不当配置是问题原因,通过修改组件的策略成功解决了问题。
306 0
|
网络安全
vscode 安装TONGYILingma插件后无法使用
vscode 安装TONGYILingma插件后无法使用
681 1
|
Kubernetes 流计算 混合部署
Flink 数据集成服务在小红书的降本增效实践
实时引擎研发工程师袁奎,在 Flink Forward Asia 2022 数据集成专场的分享。
784 0
 Flink 数据集成服务在小红书的降本增效实践
|
Python
Python编程:使用textrank4zh、jieba、snownlp提取中文文章关键字和摘要
Python编程:使用textrank4zh、jieba、snownlp提取中文文章关键字和摘要
575 0