全局事务标识符
全局事务标识符(GTID)是创建的唯一标识符,并且与在源服务器(主服务器)上提交的每个事务相关联。该标识符不仅对于它起源的服务器是唯一的,而且在给定复制拓扑中的所有服务器上也是唯一的。
GTID表示为一对坐标,并用冒号(:)分隔,如下所示:
1 | GTID = source_id:transaction_id |
source_id:主服务器上的uuid
transaction_id:提交的事务id
例如,最初要在服务器上使用UUID提交的第二十三笔交易 3E11FA47-71CA-11E1-9E33-C80AA9429562
具有以下GTID:3E11FA47-71CA-11E1-9E33-C80AA9429562:23
GTID集:2174B383-5441-11E8-B90A-C80AA9429562:1-3, 24DA167-0C0C-11E8-8442-00059A3C7B00:1-19
事务的GTID通过mysqlbinlog
命令可以查询出来
设置复制
1. 如果复制已经在运行,则通过将它们设置为只读来同步两个服务器。
1 | SET @@GLOBAL.read_only = ON; |
通过上面的命令,使主从都变成只读状态,然后开始同步。
2. 停止两个服务器。
3. 重新启动两个启用了GTID并配置了正确选项的服务器。
- 主服务器配置
1 | ###########必须############ |
- 从服务器配置
1 | ###########必须############ |
4. 指示从属服务器将主服务器用作复制数据源并使用自动定位
在从服务器端执行
1 | CHANGE MASTER TO |
5. 进行新的备份
包含没有GTID的事务的二进制日志不能在启用了GTID的服务器上使用,因此在此之前进行的备份不能与新配置一起使用。
在主服务器端执行
1 | FLUSH LOGS |
6. 启动从属服务器,然后在两台服务器上禁用只读模式,以便它们可以接受更新。
1 | START SLAVE; |
1 | SET @@GLOBAL.read_only = OFF; |