[toc]
## 將基于日志的復制變更為基于GTID的復制處理步驟
### **先決條件**
1. 集群中所有的服務器版本均高于5.7.6
2. 集群中所有的服務器gtid\_mode都設置為off(使用 show variables like 'gtid\_mode' 命令查看)
### 設置參數
gtid\_mode在5.7版本有一下4個值
* off:關閉
* off\_permissive:準備關閉
* on\_permissive:準備開啟
* on:開啟
這4個值只能從`off-->off\_permissive-->on\_permissive-->on`或者(`off<--off\_permissive<--on\_permissive<--on`)的順序設置
>[info] 在設置的過程中用`tail -f`命令查看一下`mysql-error.log`是否有異常信息。
#### master
~~~
set @@global.enforce_gtid_consistency=warn; //強制設置gtid一致性,值為:warn。
set @@global.enforce_gtid_consistency=on; //強制設置gtid一致性,值為:on
set @@global.gtid_mode=off_permissive; //設置gtid_mode為準備關閉狀態
set @@global.gtid_mode=on_permissive; //設置gtid_mode為準備開啟狀態
# 查看從服務器 show status like 'ongoing_anonymous_transaction_count' 為0或者空以后設置
set @@global.gtid_mode=on; ? ? ? ? ? ? ? ? ? ? ? //設置gtid_mode為開啟狀態
~~~
**show status like 'ongoing\_anonymous\_transaction\_count'**
查看基于日志的復制的事務數量,為0或者為空表示正常。這一步是為了保證基于日志復制的數據的一致性,防止有事務在主服務器上執行完成,在從服務器上沒有被執行,導致數據丟失
#### slave
~~~
set @@global.enforce_gtid_consistency=warn; //強制設置gtid一致性,值為:warn。
set @@global.enforce_gtid_consistency=on; //強制設置gtid一致性,值為:on
set @@global.gtid_mode=off_permissive; //設置gtid_mode為準備關閉狀態
set @@global.gtid_mode=on_permissive; //設置gtid_mode為準備開啟狀態
set @@global.gtid_mode=on; ? ? ? ? ? ? ? ? ? ? ? //設置gtid_mode為開啟狀態
stop slave; # 關閉主從復制
change master to master_auto_position=1 # 改變復制方式
start slave; # 重啟主從復制
show slave status; # 查看當前復制狀態
~~~


### 持久配置(重要操作)
確認成功切換到基于事物的復制之后,需要將一下2個參數添加到my.cnf中(所有的mysql服務器節點)
保證在下次重啟mysql服務器的時候會自動的啟動全局事物復制的方式進行主從同步
* enforce\_gtid\_consistency=on
* gtid\_mode=on
## 將基于事物復制變更為基于日志的復制
由于工具或接入的第三方應用不支持事務的復制,則要改為基于日志的復制
??
### **先決條件**
1. 集群中所有的服務器版本均高于5.7.6
2. 集群中所有的服務器gtid\_mode都設置為on(使用 show variables like 'gtid\_mode' 命令查看)
### 配置步驟
#### master
```
# 獲得file和position,然后去slave切換為日志復制
show master status;
set @@global.gtid_mode=on_permissive; -- 設置gtid_mode為準備開啟狀態
set @@global.gtid_mode=off_permissive; -- 設置gtid_mode為準備關閉狀態
select @@global.gtid_owned;
-- 查看gtid_ownend是否為空字符串(在所有服務器上均要查看)
set @@global.gtid_mode=off; -- 關閉
```
#### slave
```
stop slave;
change master to master_auto_position=0,master_log_file='edu-mysql-bin.000006',master_log_pos=461; -- //停止事務復制,設置日志復制的日志文件和日志文件節點
start slave;
set @@global.gtid_mode=on_permissive; -- 設置gtid_mode為準備開啟狀態
set @@global.gtid_mode=off_permissive; -- 設置gtid_mode為準備關閉狀態
select @@global.gtid_owned;
-- 查看gtid_ownend是否為空字符串(在所有服務器上均要查看)
set @@global.gtid_mode=off; -- 關閉
show slave status;
```

### 持久配置
修改my.cnf中(所有的mysql服務器節點)
* enforce\_gtid\_consistency=off
* gtid\_mode=off
- 【mysql的編程專題①】流程控制與其他語法
- 【mysql的編程專題②】觸發器
- 【mysql的編程專題③】內置函數
- 【mysql的編程專題④】存儲過程
- 【mysql的編程專題⑤】自定義函數
- 【mysql的編程專題⑥】視圖
- 【mysql的設計與優化專題(1)】ER圖,數據建模與數據字典
- 【mysql的設計與優化專題(2)】數據中設計中的范式與反范式
- 【mysql的設計與優化專題(3)】字段類型與合理的選擇字段類型
- 【mysql的設計與優化專題(4)】表的垂直拆分和水平拆分
- 【mysql的設計與優化專題(5)】慢查詢詳解
- 【mysql的設計與優化專題(6)】mysql索引攻略
- 【Mysql問題集錦(1)】mysql不能使用innodb存儲引擎
- 【Mysql進階技巧(2)】利用mysql生成唯一序號
- 【Mysql進階技巧(1)】MySQL的多表關聯與自連接
- 【Mysql高可用架構(1)】基于日志點的主從復制
- 【Mysql高可用架構(2)】主從管理的系統視圖
- 【Mysql高可用架構(3)】基于GTID的主從復制
- 【Mysql高可用架構(4)】在線變更復制類型
- 【Mysql高可用架構(5)】多源復制(多主一從)
- 【Mysql高可用架構(6)】多線程復制
- 【Mysql高可用架構(7)】在線設置復制過濾
- 【Mysql高可用架構(8)】解決主從不一致
- 【Mysql高可用架構(9)】初識mycat以及制作mycat鏡像
- 【Mysql高可用架構(10)】mycat配置mysql讀寫分離
- MyCat 集群部署(HAProxy + MyCat)
- 常用復雜sql語句整理