【複製系列】在線啓動/禁用 GTID事務 原

前言

在MySQL 5.7.6或更高版本,可以在線切換複製,即 不必關閉MySQL數據庫。

 

在線啓用GTID複製

1、修改參數 enforce_gtid_consistency

以下操作 均在 主從中執行
# 在錯誤日誌中監控修改參數之後是否會出現警告
tail -f  error.log
set global enforce_gtid_consistency=warn; 

# 當不會出現警告了,再執行該修改爲on
set global enforce_gtid_consistency=on; 

2、修改參數gtid_mode

仔細觀察會發現,在將參數gtid_mode修改爲on_permissive 和 on 時,都會自動使用下一個新的binlog文件。

# 主從均修改
set global gtid_mode=off_permissive;

# 主從均修改
set global gtid_mode=on_permissive;

# 只要顯示了一次 零 即可
SHOW STATUS LIKE 'ONGOING_ANONYMOUS_TRANSACTION_COUNT';

#請等待,所有匿名事務都被複制了,使用一下操作檢驗:
show master status;     # 在主庫查看
select master_pos_wait('mybinlog.000009','4580');       # 在從庫校驗,值爲0纔可以

# 在執行此步驟之前,要確定沒有傳統事務存在任何地方了(主從均修改)
set global gtid_mode=on; 

3、建立主從連接,開始複製

直接使用 master_auto_position=1,它會自動判斷binlog的文件和位置。

# 至此,確保每個事務都有GTID了,開始建立複製連接:
stop slave;

change master to master_auto_position=1,master_host='192.168.1.128',master_port=3306,\
master_user='repl',master_password='repl';

start slave;

show slave status\G

4、修改配置文件,使修改持久化

# 在主從上,均修改文件 my.cnf
gtid-mode=on
enforce_gtid_consistency=on

 

在線禁用GTID複製

1、停止複製,修改change master to ,開始複製

stop slave;

change master to master_auto_position=0,master_host='192.168.1.128',master_port=3306,\
master_user='repl',master_password='repl',master_log_file='mybinlog.000006',master_log_pos=2774;

start slave;

show slave status\G

其中,在編寫 change master to 語句時,需要注意幾點:

  • 指向的主庫binlog文件是:relay_master_log_file。
  • 指向的主庫binlog位置是:exec_master_log_pos。
  • 並將自定定義主庫的位置的參數 關閉。

2、參數的動態修改

在主從庫,均操作:
set global gtid_mode=on_permissive;        # 產生GTID,但是傳統和gtid都可以複製
set global gtid_mode=off_permissive;       # 不再產生GTID,但是傳統和gtid都可以複製

SELECT @@GLOBAL.GTID_OWNED;           # 等到它爲空

# 在從庫執行,填寫在主庫查到的信息,功能:從庫距離主庫的4580這個位置還有多少事務
select master_pos_wait('mybinlog.000009','4580');

# 等待,直到不使用具有GTID事務的二進制日誌,必須保證複製拓撲中任何地方不存在GTID事務,再執行以下步驟

# 在主從庫,均操作: 
set global gtid_mode=off;             # 不再產生GTID,只複製傳統的文件和位置,此時會產生新的binlog文件
set global enforce_gtid_consistency=off;

3、複製正常之後,修改配置文件,使修改持久化

# 在主從均修改文件my.cnf
gtid-mode=off
enforce_gtid_consistency=off

 

小結

在啓用或禁用GTID複製時,每執行一次參數的修改,都要仔細觀察,尤其是觀察之前的舊事務是否執行完了,再將gtid_mode 改爲ON 或OFF!還有,最後一定要持久化到配置文件,否則數據庫在某個時刻重啓了會有意想不到的驚嚇哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章