MySQL集群部署(基于GTID方式)

news/2025/1/13 7:39:32/

GTID概念

GTID 是什么

GTID 指的是全局事务 ID,全程是 Global Transaction Identifier ,在整个事务流程中每一个事务 ID 是全局唯一的,且在整个主从复制架构中该 ID 都不会相同。

GTID 主从复制方式

基于 GTID 的主从复制方式的出现,主要是用于替换传统的日志点 复制方式。通过GTID 可以保证每个主库提交的事务在集群中都有 唯一 的一个事务 ID。强化了数据库主从的一致性和故障恢复数据的容错能力,在主库 宕机发生主从切换 的情况下,GTID 方式可以让其他从库自动找到新主库复制的位置。而且 GTID 可以忽略已经执行过的事务,减少了数据发生错误的概率。

GTID 的组成

GTID 由server_uuid +tid 组成,其中:

  • server_uuid: server_uuid 是在 Mysql 首次启动过程中自动生成的一个uuid(128位) 随机值,生成后会将该值存储到数据目录的auto.cnf 中。因为是随机值,所以不同服务器的 Mysql 的server_uuid 都是不相同的。
  • tid: 代表了该实例上已经提交的事务数量,是一个整数,初始值是 1 ,每次提交事务的时候分配给这个事务并加1 。

其组成样式如下:

fb90fba5-60cf-11eb-b5fa-000c295fbc5f:21

GTID 复制工作原理

假设从库开启了 binlog,那么执行流程如下:

  • ① 主节点执行事务提交前会产生一个 GTID ,其会随着事务一起记录到 binlog 日志中。
  • ② 从节点 I/O Thread 会读取主节点的 binlog 日志文件并存储在从节点的 relaylog 日志中。从节点将主节点的 GTID 这个值配置到 gtid_next 中,即下一个要读取的 GTID 值。
  • ③ 从节点读取 gtid_next 中的值,然后查找自己的 binlog 日志中是否有这个 GTID 。
  • ④ 如果有这个记录,说明这个 GTID 的事务已经执行过了,就忽略掉。
  • ⑤ 如果没有这个记录,从节点就会执行该 GTID 事务,并记录到自己的 binlog 日志中。在读取执行事务前会先检查其他session 中是否持有该 GTID ,确保不被重复执行。
  • ⑥ 在解析过程中会判断是否有主键,如果没有就用二级索引,如果没有就用全部扫描。

http://www.ppmy.cn/news/1008829.html

相关文章

Kubernetes(K8s)从入门到精通系列之九:使用kubeadm工具快速安装K8s集群

Kubernetes K8s从入门到精通系列之九:使用kubeadm工具快速安装K8s集群 一、安装kubeadm二、修改kubeadm的默认配置三、下载K8s相关镜像四、运行kubeadm imit命令安装Master节点五、将新的Node加入集群六、安装CNI网络插件七、验证K8s集群是否工作正常八、搭建高可用K8s集群详细…

Python2.x 与 3​​.x 版本区别

Python2.x 与 3​​.x 版本区别 Python 的 3​​.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。 为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下相容。 许多针对早期 …

HttpServletRequest和HttpServletResponse的获取与使用

相关笔记:【JavaWeb之Servlet】 文章目录 1、Servlet复习2、HttpServletRequest的使用3、HttpServletResponse的使用4、获取HttpServletRequest和HttpServletResponse 1、Servlet复习 Servlet是JavaWeb的三大组件之一: ServletFilter 过滤器Listener 监…

基于java任务发布接收平台设计与实现

【摘要】 在如今的互联网发展的时代,互联网成了时代的主角,是这个时代的超级呈现家。在互联网的大家族中,任务发布永远是一个关键点。因为我们所有人离不开任务的发布与任务的管理,因为他给了人们一种管理的奋斗,他是一…

layui中渲染table表格

页面布局 可直接根据文档要求去写 table 组件&#xff08;这个不重要&#xff09; <table lay-filter"SyDictTable" id"SyDictTable" lay-data"{id: SyDictTable}"></table>Js 重要的是去修改JS里面的东西&#xff0c;比如&#…

剑指 Offer 12. 矩阵中的路径(回溯 DFS)

文章目录 题目描述思路分析完整代码 题目描述 给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 单词必须按照字母顺序&#xff0c;通过相邻的单元格内的字母构成&#xff…

java基础复习(第五日)

java基础复习(五) 1.如何在Map中遍历删除指定的 key? 如何在List 中遍历删除指定的元素? 两个方法都使用iterator解决 过程&#xff1a; 获取 map/list的iterator whlie&#xff08;iterator.hasNext&#xff09;{ //获取下一个元素 entry iterator.next(); if(entr…

车载总线系列——J1939 二

车载总线系列——J1939 二 我是穿拖鞋的汉子&#xff0c;魔都中坚持长期主义的汽车电子工程师。 老规矩&#xff0c;分享一段喜欢的文字&#xff0c;避免自己成为高知识低文化的工程师&#xff1a; 没有人关注你。也无需有人关注你。你必须承认自己的价值&#xff0c;你不能站…