CREATE TEMPORARY TABLE or DROP TEMPORARY TABLE statements inside transactions
Transactions or statements that update both transactional and nontransactional tables. There is an exception that nontransactional DML is allowed in the same transaction or in the same statement as transactional DML, if all nontransactional tables are temporary.
在线开启GTID过程如下:
① 所有的server上执行
set @@global.enforce_gtid_consistency = warn; 特别注意: 这一步是关建的一步使用不能出现警告。会将不符合的语句记入错误日志
② 所有的server上执行:
set @@global.enforce_gtid_consistency = on;
③ 所有的Server上执行(不关心最先最后,但要执行完):
set @@global.gtid_mode = off_permissive;
④ 所有的server上执行:
set @@global.gtid_mode=on_permissive;
实质在这一步骤生成的日志都是带GTID的日志了,这个步骤号称是不关心任何节点,但从实际管理上推荐在slave上先执行,然后再去master上执行。
⑤ 确认传统的binlog复制完毕,该值为0
show status like 'ongoing_anonymous_transaction_count';
所有节点进行判断 show status like 'ongoing_anonymous_transaction_count’; 为零
⑥ 所有的节点执行: flush logs; 用于切换一下日志。
⑦ 所有的节点启用gtid_mode
set @@global.gtid_mode=on;
⑧ 启用Gtid的自动查找节点复制:
stop slave;
change master to master_auto_position=1;
start slave;
⑨ 把gtid_mode = on相关配置写入配置文件
gtid_mode=on
enforce_gtid_consistency=on
最后可以看到传统复制的一个变化,通过BINLOG观察: