MySQL中GTID 模式的使用

 更新时间:2026年02月19日 09:43:44   作者:dreams_dream  
MySQL GTID模式是MySQL复制体系的一种机制,用来唯一标识每一个事务,从而让主从复制变得更可靠、更自动化、更不容易出错,下面就来详细的介绍一下如何使用,感兴趣的可以了解一下

TID(Global Transaction ID,全局事务 ID)是 MySQL 复制体系的一种机制,用来唯一标识每一个事务,从而让主从复制变得更可靠、更自动化、更不容易出错。

一句话总结:

GTID = 给每个事务一个全球唯一的身份证号,让复制自动、可追踪、可恢复。

GTID 的结构

GTID 的格式是:

source_id:transaction_id 

例如:

3E11FA47-71CA-11E1-9E33-C80AA9429562:12345 
  • source_id:通常是主库的 server_uuid
  • transaction_id:从 1 开始递增的事务序号

GTID 模式解决了什么问题?

传统复制(基于 binlog 文件 + position)有几个痛点:

问题传统复制GTID
主从切换需要手动找 binlog 文件和位置自动定位,秒级切换
数据恢复容易错位、跳点自动跳过已执行事务
复制一致性依赖人工操作事务级别精确一致
故障恢复麻烦自动找位置、自动恢复

所以 GTID 的核心价值是:

让复制变得自动化、可恢复、可追踪,特别适合高可用架构(MGR、主从、ProxySQL)。

GTID 的工作原理(你会喜欢这个解释)

  • 主库执行一个事务 → 生成一个唯一 GTID
  • 主库把 GTID 写入 binlog
  • 从库拉取 binlog
  • 从库检查:
    • 如果这个 GTID 已经执行过 → 跳过
    • 如果没执行 → 执行并记录
  • 从库把已执行的 GTID 集合记录在 gtid_executed

这意味着:

从库永远不会重复执行事务,也不会漏执行事务。

GTID 模式常见配置(MySQL 8.0.36 环境)

在 my.cnf 中:

gtid_mode=ON
enforce_gtid_consistency=ON
log_slave_updates=ON
binlog_format=ROW

你现在的 MGR 环境本身就依赖 GTID,所以你已经在使用它。

为什么 MGR 必须使用 GTID?

因为 MGR 是“事务级复制 + 共识协议”,它需要:

  • 全局唯一事务 ID
  • 精确的事务顺序
  • 自动冲突检测

没有 GTID,MGR 根本无法工作。

你作为架构师应该记住的 GTID 核心价值

  • 自动定位复制位置(不用再找 binlog 文件和 pos)
  • 自动跳过重复事务
  • 主从切换更快、更安全
  • 故障恢复更简单
  • MGR、半同步、ProxySQL 都依赖它

GTID 是现代 MySQL 高可用体系的基础。

到此这篇关于MySQL中GTID 模式的使用的文章就介绍到这了,更多相关MySQL GTID模式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL排序与分页讲解

    MySQL排序与分页讲解

    这篇文章主要介绍了MySQL排序与分页讲解,使用 ORDER BY 对查询到的数据进行排序操作,按照dept_id的降序排列,salary的升序排列相关展开文章,需要的小伙伴可以参考一下
    2022-01-01
  • mysql大批量插入数据的正确解决方法

    mysql大批量插入数据的正确解决方法

    这篇文章主要介绍了mysql大批量插入数据的正确做法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • mysql中EXISTS和IN的使用方法比较

    mysql中EXISTS和IN的使用方法比较

    这篇文章主要给大家介绍了关于mysql中EXISTS和IN使用方法比较的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 详解如何在阿里云服务器安装Mysql数据库

    详解如何在阿里云服务器安装Mysql数据库

    这篇文章主要介绍了详解如何在阿里云服务器安装Mysql数据库,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • mysql 查询第几行到第几行记录的语句

    mysql 查询第几行到第几行记录的语句

    mysql 查询第几行到第几行记录 查询最后一行和第一行记录 查询前几行和后几行记录
    2011-07-07
  • MySql使用存储过程进行单表数据迁移的实现

    MySql使用存储过程进行单表数据迁移的实现

    近期在进行业务解耦,对冗余在一起切又属于不同业务的代码进行分离,同时也将数据库进行分离存储,那么这时候就涉及到多个表的数据要进行迁移,本文就来介绍一下MySql使用存储过程进行单表数据迁移,感兴趣的可以了解一下
    2023-11-11
  • MySQL 慢查询日志深入理解

    MySQL 慢查询日志深入理解

    这篇文章主要介绍了MySQL 慢查询日志的相关资料,帮助大家更好的理解和学习使用MySQL,感兴趣的朋友可以了解下
    2021-04-04
  • mysql中如何使用正则表达式查询

    mysql中如何使用正则表达式查询

    这篇文章主要介绍了mysql中如何使用正则表达式查询,需要的朋友可以参考下
    2014-06-06
  • MySQL rand()函数、rand(n)、生成不重复随机数

    MySQL rand()函数、rand(n)、生成不重复随机数

    MySQL提供了rand()函数来生成随机数,包括无参数rand()和有参数rand(n)等,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • mysql如何查询重复数据并删除

    mysql如何查询重复数据并删除

    这篇文章主要介绍了mysql如何查询重复数据并删除问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12

最新评论