GTID:全局事务ID,其保证为每一个在主上提交的事务在复制集群中可以生成一个唯一的ID
GTID=source_id:transaction_id
原理:从库告诉主库已执行的GTID值,然后主库把没有执行的GTID告诉唯一的一个从库,从库在执行这些GTID值
优点:可以很方便的进行故障转移(启动了log_slave_update从库保存了主库的二进制日志,从而可以很方便的进行切换)
从库不会丢失主库上的任何修改(主库二进制日志没删除的情况下)
缺点:故障处理比较复杂(比如从库的主键冲突,必须在从库上插入空事务的方式才能跳过这种错误) ,对执行的SQL有一定的限制。

配置步骤:
1. 创建复制账号(同日志点复制),一定不要在其他从库上手动建立相同的账号。
create user ‘reple’@‘172.20.249.%’ identified by ‘123456’;
grant replication slave, replication client on . to ‘repl’@‘172.20.249.%’;
2. 配置主从库
主库(必须):
log-bin=/usr/local/mysql/log/mysql-bin
server_id = 1
gtid_mode = on ##启动gtid模式复制
enforce-gtid-consistency
注意此参数主要:SQL一些语句就不能使用了:create table …select;在事务中使用create temporary 建立临时表使用关联更新事务表和非事务表。
log-slave-updates=on(5.7已经去掉了)
从库(必须):
server_id=2
relay_l

本文介绍了MySQL从5.6版本开始引入的GTID(全局事务ID)复制功能,GTID确保集群中每个事务的唯一性。通过从库报告已执行的GTID,主库将未执行的GTID发送给从库,实现故障转移和避免数据丢失。但也存在主键冲突和特定SQL语句限制等缺点。配置包括设置GTID模式、用户权限、日志位置等,并提供故障恢复和备份策略。在实际操作中,遇到error.log文件权限问题,解决方法是手动创建并调整权限。
最低0.47元/天 解锁文章
126

被折叠的 条评论
为什么被折叠?



