参考官方文档:
https://dev.mysql.com/doc/refman/5.7/en/replication-gtids.html

——————————
思维导图:

——————————
GTID = Global Transaction Identifier
GTID,是对一个已经提交的事务的全局唯一编号。

GTID,由两部分组成:
1. server_uuid,存储在MySQL数据库数据目录的文件【auto.cnf】中;【auto.cnf】文件非常重要,不能删除;并且UUID这一部分是不会变的
2. 事务ID,执行事务的唯一标志(这一部分通常是自增的)

以上两个部分以冒号分隔【:】,后面的章节里,会看到GTID的例子。

GTID的历程有这么几个阶段:
1. MySQL 5.6.2,开始支持GTID
2. MySQL 5.6.10+,得到完善

一个事务的一个GTID,在整个MySQL主从复制的架构中,是不会改变的;不论位于主库或者是从库都一样。

在启用了GTID后,数据会按照以下方式进行:

——————————
环境介绍:
在我的环境中,有两台服务器:
1. 10.158.1.129
2. 10.158.1.132

MySQL的版本:5.7.25-28(数据库已经装好了)
目标:配置基于GTID的主从复制。

当前Linux系统状态:

开始本文前,MySQL软件确认装好了。

——————————
GTID = Global Transaction Identifier
GTID,是对一个已经提交的事务的全局唯一编号。

GTID由两部分组成:
1. server_uuid
2. 执行事务的唯一标志(这一部分通常是自增的)

——————————

一、主库(Primary)

MySQL配置文件:my.cnf

创建需要的目录(主从都一样):

主库(Primary)启动服务:

服务启动的日志:

主库数据库启动后,查看数据目录:

以上,是按照普通方式启动的。

下面,按照GTID的方式启动:

停止服务:

修改配置文件:

再次启动服务:

再次看启动日志:

修改默认的临时口令:

主库(Primary):登录

主库(Primary)查看GTID的信息:

查看当前主库的UUID:
会记录在数据目录的文件【auto.cnf】中:

在数据库中查看参数【server_uuid】:

可以看到,这两个UUID的信息是一致的。

在MySQL中,【server_uuid】是一个数据库实例的唯一标识。

上面说过GTID是由两部分组成的:
1. server_uuid
2. 事务ID

上面的步骤里,我们已经开启了主库的GTID模式。
接下来就可以看看GTID的真实样子了:

如上:
【1-3】的部分就是事务ID。

用户:创建用于主从复制的用户:【repl】

至此,基于GTID的复制的主库的配置暂告一段落。

二、从库(SLAVE)

从库(Slave)参数:my.cnf

创建目录结构:

启动服务:

修改口令:

从库,测试主库创建的复制账户的连通性:

从库:设置到主库的同步

从库的日志:

从库:开启同步:

这个过程中:
从库的日志:

主库的日志:

上面,启动复制进程的命令【start slave】,也可以拆分成两条命令执行:

这时候:
在从库的【show master status】也可以看到主库的信息:

主库的【show master status】:

三、验证

当前状态:
主库:

从库:

执行变更:
主库上创建一个数据库,并且创建一个表,写入一些数据:

主库变更做完了。
从库看看是否同步到了变更:

同步成功。

————————————
至此,MySQL基于GTID的主从复制,完成。

————————————
Done。

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

隐藏
变装