首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 從庫搭建全流程:GTID 模式、權限授予、數據同步、驗證監控

     編輯:MySQL 綜合教學

MySQL 從庫搭建全流程:GTID 模式、權限授予、數據同步、驗證監控

從庫是讀寫分離、備份卸載、故障轉移候選的核心角色。本文基於 GTID 模式(MySQL 5.6+),提供標準化搭建清單,涵蓋主庫配置、權限、數據初始化、CHANGE MASTER、驗證監控。

前置條件

  • 主從版本一致(建議 5.7/8.0)
  • 網路互通、防火牆開放 3306
  • 主庫 server-id 唯一、log-bin 啟用、gtid_mode=ON

步驟 1:主庫配置與權限

-- my.cnf [mysqld]
server-id=100
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
log-slave-updates=1  # 從庫也開啟,支援鏈式

-- 建立複寫專用帳號
CREATE USER 'repl'@'192.168.0.%' IDENTIFIED BY 'StrongReplPass123!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%';
FLUSH PRIVILEGES;

步驟 2:主庫狀態確認

SHOW MASTER STATUS\G
-- 記錄 File、Position(非 GTID 模式需用)
-- GTID 模式下無需位點,自動定位

步驟 3:從庫數據初始化(三種方式)

方式 A:mysqldump 邏輯備份(小庫 <50GB)

# 主庫
mysqldump --single-transaction --master-data=2 --all-databases \
  --routines --triggers --events -u root -p > full_backup.sql

# 傳輸到從庫
scp full_backup.sql replica:/backup/

# 從庫導入
mysql -u root -p < /backup/full_backup.sql

方式 B:Percona XtraBackup 物理熱備份(大庫、零停機)

# 主庫備份
xtrabackup --backup --target-dir=/backup/full --user=root --password=xxx --slave-info

# 準備備份
xtrabackup --prepare --target-dir=/backup/full

# 傳輸到從庫 datadir,修正權限
rsync -av /backup/full/ replica:/data/mysql/
chown -R mysql:mysql /data/mysql

# 從庫啟動前建立 auto.cnf (server-uuid)
# 或啟動後自動生成

方式 C:Clone Plugin (8.0.17+)

# 從庫安裝 clone 插件
INSTALL PLUGIN clone SONAME 'mysql_clone.so';

# 從庫執行克隆(自動獲取 GTID、配置、數據)
CLONE INSTANCE FROM 'repl'@'master_host':3306 IDENTIFIED BY 'password'
  DATA DIRECTORY=/data/mysql;  -- 目標目錄需為空

步驟 4:從庫配置與啟動複寫

-- my.cnf [mysqld]
server-id=101
log-bin=mysql-bin
binlog_format=ROW
gtid_mode=ON
enforce_gtid_consistency=ON
relay-log=relay-bin
log-slave-updates=1
read_only=1
super_read_only=1  # 8.0+ 更嚴格

-- 重啟從庫
systemctl restart mysqld

-- GTID 模式啟動複寫(無需指定 File/Position)
CHANGE MASTER TO
  MASTER_HOST='192.168.0.232',
  MASTER_USER='repl',
  MASTER_PASSWORD='StrongReplPass123!',
  MASTER_AUTO_POSITION=1;

START SLAVE;

步驟 5:驗證監控

SHOW SLAVE STATUS\G

-- 核心指標必須為 Yes
Slave_IO_Running: Yes
Slave_SQL_Running: Yes

-- 關鍵延遲指標
Seconds_Behind_Master: 0

-- GTID 執行進度
Retrieved_Gtid_Set: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:1-1000
Executed_Gtid_Set: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx:1-1000
Auto_Position: 1

常見故障處理

故障現象處理
IO 線程掛掉Slave_IO_Running: No / Connecting檢查網路、防火牆、帳號密碼、主庫 Binlog 存在性
SQL 線程掛掉Slave_SQL_Running: No / Last_Error 有內容查 Last_Error,常見主鍵衝突、外鍵失敗、字符集不匹配
GTID 不一致Executed_Gtid_Set 缺少主庫已執行事務重新初始化數據、或用 SET GTID_PURGED 修正 (極謹慎)
延遲過大Seconds_Behind_Master > 300從庫硬體升級、多線程複寫 slave_parallel_workers=4、大事務拆分

SQL 線程報錯跳過 (緊急方案)

STOP SLAVE;
SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1;  -- 跳過 1 個事件
START SLAVE;
-- 或 GTID 模式
SET GTID_NEXT='aaaa-bbbb-cccc:1234'; BEGIN; COMMIT; SET GTID_NEXT=AUTOMATIC;

生產級強化清單

  • 啟用 半同步複寫:rpl_semi_sync_master=ON、rpl_semi_sync_slave=ON,降低 RPO
  • 部署 Orchestrator / MHA / ProxySQL:自動故障轉移、拓撲管理
  • 監控告警:Seconds_Behind_Master、Slave_*_Running、Relay_Log_Space、Executed_Gtid_Set 差異
  • 定期 pt-table-checksum 校驗主從一致性
  • 備份策略:從庫做物理備份 (XtraBackup) 卸載主庫壓力
  • 多級複寫:A(主) → B(從/主) → C(從) 需 B 開啟 log-slave-updates
GTID 模式是現代 MySQL 複寫標準:自動定位、故障轉移簡單、拓撲變更安全。新搭建從庫強制要求 GTID。搭建只是開始,監控、演練、自動化故障轉移才是高可用體系的核心。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved