然后再操作从传统复制模式切换为 GTID 复制模式的过程
实施过程如下:
(1) 在主从库上同时修改参数 enforce_gtid_consistency=warn, 确保在 error log 中不会出现警告信息如果有, 需要先修复, 才能往后继续执行
(2) 在主从服务器上把 enforce_gtid_consistency 改为 on, 保证 GTID 的一致性
(3) 在主从服务器上同时调整 GTID 模式为 off_permissive
(4) 在主从服务器上同时调整 GTID 模式为 on_permissive
(5) 确认从库的 Ongoing_anonymous_transaction_count 参数是否 0, 如果为 0, 意味着没有等待的事务, 可以直接进行下一步操作了
(6) 在主从库上同时设置 gtid_mode=on
查看 GTID 参数设置, 目前都是开启状态
(7) 把传统复制模式改为 GTID 复制先要把原有的传统复制停掉, 执行 stop slave 操作, 然后再执行 change master to master_auto_position=1
执行完 stop slave, 查看当前主从的状态为:
然后再执行 change master to master_auto_position=1, 开启主从复制 start slave
(8) 验证是否切换成功
首先向主库的 zs 库下的 tt 表中插入一条数据:
查看从库, 这条数据同步成功
然后在从库中执行 show slave status 查看主从复制状态, 发现 GTID 的值增加了证明开启了 GTID 复制方式, 切换成功
GTID 使用中的限制条件
GTID 复制是针对事务来说的, 一个事务只对应一个 GTID, 好多的限制就在于此
(1) 不能使用 create table table_name select * from table_name
(2) 在一个事务中既包含事务表的操作又包含非事务表
(3) 不支持 CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE 语句操作
(4) 使用 GTID 复制从库跳过错误时, 不支持执行该 sql_slave_skip_counter 参数的语法
来源: http://blog.51cto.com/sumongodb/2090307