MySQL 8.0版本引入了全局事務標識(GTID)的概念,使得主從復制更加可靠和可維護。GTID是一個全局唯一的標識符,用于標識一次事務。GTID跟蹤了在哪個服務器上執行了哪些事務,從而使得主從復制極其靈活,并可以有效的避免數據沖突。
要開啟GTID主從復制,我們需要在主庫和從庫上都添加一些配置項。主庫需要添加以下配置項:
# 開啟GTID模式 gtid_mode = ON # 啟動GTID主從復制 enforce_gtid_consistency = true
從庫需要添加以下配置項:
# 開啟GTID模式 gtid_mode = ON # 從庫從哪個位置開始同步數據,這里是主庫上的第一個事務 gtid_slave_pos = 1-1-1
在主庫上添加新的數據時,每個事務都會被自動分配一個全局唯一的GTID,這個GTID會被寫入到事務日志(binlog)中。從庫就可以通過讀取主庫的binlog,來獲取GTID并在自己的復制日志中應用這些事務,實現數據同步。
# 查看主庫上的GTID mysql>SHOW MASTER STATUS; # +------------------+----------+--------------+------------------+-------------------+ # | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set | # +------------------+----------+--------------+------------------+-------------------+ # | mysql-bin.000001 | 599 | | | | # +------------------+----------+--------------+------------------+-------------------+ # 查看從庫上的GTID mysql>SHOW SLAVE STATUS\G; # *************************** 1. row *************************** # Slave_IO_State: Waiting for master to send event # Master_Host: 192.168.1.1 # Master_User: repl # Master_Port: 3306 # Connect_Retry: 60 # Master_Log_File: mysql-bin.000001 # Read_Master_Log_Pos: 599 # Relay_Log_File: mysqld-relay-bin.000002 # Relay_Log_Pos: 319 # Relay_Master_Log_File: mysql-bin.000001 # Slave_IO_Running: Yes # Slave_SQL_Running: Yes # ... # Executed_GTID_Set: 11ab0527-a348-11e9-a7f2-0242ac110002:1-2 # ...
可以看到,主庫和從庫上都有各自的GTID,代表的是它們所執行的事務的序號。
GTID最大的好處是,它使得主從復制斷電后恢復更為可靠。基于GTID進行復制,確保了從庫始終可以獲取到主庫上未被復制的事務記錄,并且可以精確的記錄從庫復制的位置。
上一篇vue css懸浮球
下一篇html5怎么設置上邊距