在線切換的版本要>=5.7.6
gitd_mode 解釋
OFF 不產(chǎn)生GTID,Slave只接收不帶GTID的事務
OFF_PERMISSIVE 不產(chǎn)生GTID,Slave接收不帶GTID的事務也接收帶GTID的事務
ON_PERMISSIVE 產(chǎn)生GTID,Slave接收不帶GTID的事務也接收帶GTID的事務
ON 產(chǎn)生GTID,Slave只接收帶GTID的事務
環(huán)境
MySQL版本為5.7.18
Master:192.168.1.41 3306 GTID
Slave:192.168.1.42 3306 GTID
實驗一 將傳統(tǒng)復制切換到GTID復制
在主從庫執(zhí)行 set global enforce_gtid_consistency=WARN;
在主從庫執(zhí)行 set global enforce_gtid_consistency=on;
在主從庫執(zhí)行 set @@GLOBAL.GTID_MODE = OFF_PERMISSIVE;
在從庫執(zhí)行 set @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
在主庫執(zhí)行 set @@GLOBAL.GTID_MODE = ON_PERMISSIVE;
查看 show status like 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';是否為0,等于0是表示所有連接都轉為gtid復制
主從庫執(zhí)行 set global gtid_mode=on;
主從庫執(zhí)行 set global master_info_repository = 'TABLE';
主從庫執(zhí)行 set global relay_log_info_repository = 'TABLE';
在從庫執(zhí)行
stop slave;
change master to master_auto_position=1;
start slave;
記得更改配置文件
主
gtid-mode = on
enforce-gtid-consistency = 1
master-info-repository = TABLE
relay-log-info-repository = TABLE
sync-master-info = 1
slave-parallel-workers = 2
binlog-checksum = CRC32
master-verify-checksum = 1
slave-sql-verify-checksum = 1
binlog-rows-query-log_events = 1
從
log-slave-updates = 1
gtid-mode = on
enforce-gtid-consistency = 1
master-info-repository = TABLE
relay-log-info-repository = TABLE
sync-master-info = 1
slave-parallel-workers = 4
binlog-checksum = CRC32
master-verify-checksum = 1
slave-sql-verify-checksum = 1
binlog-rows-query-log_events = 1
relay_log_recovery=1
實驗二 將GTID的環(huán)境切換到非GTID
stop slave;
change master to master_auto_position=0;
start slave;
主從庫執(zhí)行set @@GLOBAL.GTID_MODE = ON_PERMISSIVE
主庫執(zhí)行set @@GLOBAL.GTID_MODE = OFF_PERMISSIVE
這個時候已經(jīng)從gtid轉到傳統(tǒng)復制了,不過還是中間狀態(tài)
在從庫執(zhí)行set @@GLOBAL.GTID_MODE = OFF_PERMISSIVE
主從庫執(zhí)行select @@GLOBAL.GTID_OWNED;是不是為空
主庫執(zhí)行set global gtid_mode=0;
主庫執(zhí)行set global enforce_gtid_consistency=off;
記得配置文件修改