MySQL運維實戰(7.1) 開啟GTID複製

發表於2024-02-27

作者:俊達
MySQL從5.6版本開始支援GTID複製。開啟GTID之後,主庫上執行的每一個事務都有一個全域性唯一的ID。GTID由兩部分組成:server_uuid和事務序列號。初始化資料庫時,會生成一個全域性唯一的server_uuid,server_uuid儲存在datadir下的auto.cnf中:

# cat auto.cnf
[auto]
server-uuid=e7ce5684-09b8-11ee-9dd0-fa8338b09400

如果刪除auto.cnf,重啟例項時會重新生成。事務序列號在事務提交時按順序生成。

GTID事務複製到備庫時,GTID保持不變。開啟GTID有很多優點:

1、MySQL會記錄執行過的GTID事務,這樣就可以避免重複執行同一個事務。如果沒有開啟GTID,change master時如果指定的位點不對,可能會重複執行事務,引起主備資料不一致或複製中斷。

2、change master時支援自動定位,mysql會根據當前例項已經執行過的GTID事務,自動判斷需要同步哪些binlog。

1、主庫開啟GTID

除了常規的引數,主庫需要配置

enforce_gtid_consistency和gtid_mode

enforce_gtid_consistency=ON
gtid_mode=ON

log_bin=/data/mysql5.6/binlog/binlog
log_slave_updates=ON
binlog_format=ROW
server_id=234

2、主庫建立複製賬號

在進行主庫和備庫之間的複製前,需要在主庫上建立一個專用於複製的賬號,並授予相應的許可權。以下是建立複製賬號的步驟:

-- 建立複製賬號
CREATE USER 'rep'@'%' IDENTIFIED BY 'rep123';

-- 授予複製賬號必要的許可權
GRANT REPLICATION SLAVE ON *.* TO 'rep'@'%';

建立完複製賬號後,備庫可以使用這個賬號連線到主庫,並透過複製賬號進行資料同步。在備庫上配置複製時,將會使用這個賬號的憑證資訊。

3、備庫配置

5.6版本開啟GTID時,備庫也必須開啟log-bin和log-slave-updates,否則無法啟動例項。

enforce_gtid_consistency=ON
gtid_mode=ON

log_bin=/data/mysql5.6/binlog/binlog

log_slave_updates=ON
binlog_format=ROW
server_id=236

5.6版本開啟GTID,不設定log-bin和log-slave-updates,例項無法啟動:

2023-06-14 14:56:35 23275 [ERROR] --gtid-mode=ON or UPGRADE_STEP_1 or UPGRADE_STEP_2 requires --log-bin and --log-slave-updates
2023-06-14 14:56:35 23275 [ERROR] Aborting

從5.7版本開始,備庫不開啟binlog和log-slave-updates也可以使用GTID。

4、備庫初始化

這一步和非GTID的步驟基本一樣。不過開啟GTID後,通常需要記錄GTID_PURGED,作為複製的起點。

/opt/mysql5.7/bin/mysqldump -uroot -h127.0.0.1 -P3357 -pabc123 --all-databases \ 
--master-data=2 --routines --flush-privileges --triggers --events > /tmp/mysql57_dump.sql

--gtid-mode=auto:如果資料庫開啟了GTID,則備份檔案中會加入set global GTID_PURGED=xxx;

5、備庫建立複製通道

change master to master_host='172.16.121.234',master_port=3356,\
master_user='rep',master_password='rep123', master_auto_position=1;

開啟GTID之後,可以在change master時指定master_auto_position=1,啟用自動定位。這樣就不需要指定具體的binlog位點。slave會根據gtid_executed自動計算需要同步主庫的哪些binlog。

更多技術資訊請檢視雲掣官網https://yunche.pro/?t=yrgw

相關文章