今日遇到问题:GTID模式不支持“CTAS”语句,因此需要将语句分解为:
CREATE TABLE t1_tmp LIKE t1;
INSERT INTO t1_tmp SELECT * FROM t1;
如果是CTAS是将表联查询结果作为新表,则无法使用like了,需要取消GTID模式才能使用“CTAS”(create table ... as select...)
在线关闭gtid模式需要5.7.6版本以上的mysql
整体步骤:关闭从库复制进程→关闭主库gtid模式→关闭从库gtid模式→以传统方式开启主从复制
平滑关闭步骤:
(1):stop slave;(如果是主库就不必执行此步骤)
(2):SET GLOBAL GTID_MODE = 'ON_PERMISSIVE';
(3):SET GLOBAL GTID_MODE = 'OFF_PERMISSIVE';
(4):SET GLOBAL GTID_MODE = 'OFF';
之后查看状态:
select @@GLOBAL.GTID_MODE;
配置文件中GTID_MODE = OFF;
关闭ENFORCE_GTID_CONSISTENCY:
在线修改 :SET @@GLOBAL.ENFORCE_GTID_CONSISTENCY = off;
配置文件中 :ENFORCE_GTID_CONSISTENCY = off;
(从库还需要执行CHANGE MASTER TO MASTER_AUTO_POSITION = 0)
传统主从复制的binlog和position号选择切换时间的第一个binlog的第一号
一般习惯是在主库关gtid后紧接着create一个测试空库,
create database test;
之后从库开启传统复制后空库同步过来的话说明可以
网友评论