Mysql中基于GTID的复制模式是什么

59次阅读
没有评论

共计 1624 个字符,预计需要花费 5 分钟才能阅读完成。

自动写代码机器人,免费开通

这篇文章主要介绍了 Mysql 中基于 GTID 的复制模式是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让丸趣 TV 小编带着大家一起了解一下。

GTID 定义

GTID(Global Transaction Identifier)全局事务标识。GTID 是 5.6 版本引入的一个有关于主从复制的重大改进,相对于之前版本基于 Binlog 文件 +Position 的主从复制,基于 GTID 的主从复制,数据一致性更高,主从数据复制更健壮,主从切换、故障切换不易出错,很少需要人为介入处理。

表示方式

GTID = server_uuid:transaction_id
其 GTID 通常会记录在 MySQL 的系统变量 @@GLOBAL.gtid_executed 以及系统表 mysql.gtid_executed 中,系统变量 @@GLOBAL.gtid_executed 在内存中,属于非持久化存储,而系统表 mysql.gtid_executed 属于持久化存储。

GTID 比传统复制的优势

更简单的搭建主从复制

更简单的实现 failover (主从切换),不用以前那样一步一步的去找 log_file 和 log_pos

GTID 是连续的没有空洞的,保证数据的一致性,零丢失。

复制集群有一个统一的方式识别复制位置,给集群管理带来了便利

GTID 的限制

在一个事务里面混合使用引擎如 Innodb,myisam,造成多个 GTIDS

CREATE TABLE…..SELECT 不能使用

CREATE TEMPORARY TABLE and DROP TEMPORARY TABLE 不能在事务内使用

主从复制流程图

Mysql 中基于 GTID 的复制模式是什么
Mysql 中基于 GTID 的复制模式是什么

GTID 生命周期

当一个事务在一个主库上被执行和提交,那么这个事务就会被分配一个和该主库 uuid 相关联的 gtid,这个 gtid 被写入到主库的 binlog 文件中。

当这个 binlog 文件达到最大值发生轮转,或者 MySQL Server 关闭时,上一个 binlog 文件中的事务 GTID 将会被写入到 mysql.gtid_executed 表中。

事务提交时,该事务的 gtid 会很快的添加到系统变量 @@GLOBAL.gtid_executed, 但是系统表 mysql.gtid_executed 则不会,应为有部分 gtid 还在 binlog 中,需要等到 binlog 轮转或者 mysqlServer 关闭时才会写入到 mysql。gtid_executed 表中.

主库上的 binlog 通过主从复制协议传送到从库,并写入到从库的 relay log(中继日志), 从库读取 relay log 中的 gtid 和对应的事务信息,把 gtid_next 设置为该 gtid 值,使得从库使用该 gtid 值应用其对应的事务

如果多个线程并发应用同一个事务,比如多个线程设置 gtid_next 为同一个值,MySQL Server 只允许其中一个线程执行,gtid_owned 系统变量记录着谁拥有该 GTID.

传统更换 GTID 复制模式

配置 GTID

所有服务器设置 global.read_only 参数,等待主从服务器同步完毕;

mysql  SET @@global.read_only = ON;

依次重启主从服务器;

使用 change master 更新主从配置;

mysql  CHANGE MASTER TO
MASTER_HOST = host,
MASTER_PORT = port,
MASTER_USER = user,
MASTER_PASSWORD = password,
MASTER_AUTO_POSITION = 1;

5、开启复制

mysql  START SLAVE;

6、验证主从复制

mysql  show slave status \G

感谢你能够认真阅读完这篇文章,希望丸趣 TV 小编分享的“Mysql 中基于 GTID 的复制模式是什么”这篇文章对大家有帮助,同时也希望大家多多支持丸趣 TV,关注丸趣 TV 行业资讯频道,更多相关知识等着你来学习!

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-16发表,共计1624字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)