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

CentOS MySQL 主從同步配置全流程:GTID 與傳統 Binlog 位點雙模式實戰

     編輯:MySQL 綜合教學

CentOS MySQL 主從同步配置全流程:傳統位點與 GTID 雙模式實戰

本文記錄在 CentOS 環境下搭建 MySQL 主從復制的完整步驟,涵蓋防火牆/SELinux 關閉、主庫 Binlog 配置、從庫 CHANGE MASTER TO 動態配置、啟動驗證、故障排查、測試驗證全鏈路。兼容 MySQL 5.6+(傳統位點)與 5.7+(GTID)兩種模式。

一、環境準備

角色IPServer_IDMySQL 版本
Master192.168.1.22215.7.x
Slave192.168.1.13725.7.x

前置操作(雙節點):

systemctl stop firewalld; systemctl disable firewalld
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
reboot  # 生效需重啟

二、主庫配置

1. my.cnf 核心參數

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-format=ROW
binlog-do-db=repl
binlog-ignore-db=mysql,information_schema,performance_schema
gtid-mode=ON
enforce-gtid-consistency=ON
log-slave-updates=1

systemctl restart mysqld

2. 創建復制賬號

CREATE USER 'repl'@'192.168.1.%' IDENTIFIED BY 'ReplPass123';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.%';
FLUSH PRIVILEGES;

3. 獲取同步起點(傳統模式需記錄,GTID 模式可忽略)

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+-------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+------------------+----------+--------------+------------------+-------------------+
| mysql-bin.000003 |      98  | repl         | mysql,...        | xxxxxxxx:1-10     |
+------------------+----------+--------------+------------------+-------------------+
UNLOCK TABLES;

三、從庫配置

1. my.cnf 核心參數

[mysqld]
server-id=2
relay-log=relay-bin
log-slave-updates=1
gtid-mode=ON
enforce-gtid-consistency=ON
read-only=1

systemctl restart mysqld

2. 動態配置主庫連接信息(MySQL 5.6+ 推薦方式,不寫入 my.cnf)

-- 傳統位點模式
CHANGE MASTER TO
    MASTER_HOST='192.168.1.222',
    MASTER_USER='repl',
    MASTER_PASSWORD='ReplPass123',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='mysql-bin.000003',
    MASTER_LOG_POS=98,
    MASTER_CONNECT_RETRY=60;

-- GTID 模式(5.7+,無需位點,自動定位)
CHANGE MASTER TO
    MASTER_HOST='192.168.1.222',
    MASTER_USER='repl',
    MASTER_PASSWORD='ReplPass123',
    MASTER_PORT=3306,
    MASTER_AUTO_POSITION=1;

3. 啟動並驗證

START SLAVE;
SHOW SLAVE STATUS\G
-- 關鍵指標:
-- Slave_IO_Running: Yes
-- Slave_SQL_Running: Yes
-- Seconds_Behind_Master: 0
-- Last_IO_Error: (空)
-- Last_SQL_Error: (空)

四、常見故障與排查

現象原因解決
ERROR 1200: not configured as slave未執行 CHANGE MASTER TO執行完整 CHANGE MASTER TO 後 START SLAVE
Slave_SQL_Running: NoSQL 線程報錯停止查看 Last_SQL_Error,修正數據衝突後 STOP SLAVE; START SLAVE;
Slave_IO_Running: Connecting網絡不通/賬號密碼錯/防火牆telnet master 3306、檢查賬號、開放端口
Seconds_Behind_Master 偏大從庫硬件弱/大事務/長查詢阻塞優化從庫硬件、並行復制 slave_parallel_workers
Duplicate entry 錯誤 (1062)主庫寫入未同步前從庫已有數據跳過錯誤 SET GLOBAL sql_slave_skip_counter=1; 或重新搭建從庫

五、驗證測試

-- Master 執行
USE repl;
CREATE TABLE test_sync (id INT, name CHAR(10));
INSERT INTO test_sync VALUES (1, 'zaq'), (2, 'xsw');

-- Slave 查詢
USE repl;
SELECT * FROM test_sync;
-- 應返回相同兩行,同步成功

六、運維建議

  • 監控 Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running 三大核心指標,納入告警體系。
  • 定期對比主從 CHECKSUM TABLE 或 pt-table-checksum 校驗數據一致性。
  • 主庫異常切換時,使用 CHANGE MASTER TO MASTER_AUTO_POSITION=1 實現無感故障轉移(GTID 必備)。
  • 備份策略:從庫停止 SQL 線程(STOP SLAVE SQL_THREAD)做邏輯/物理備份,不影響主庫。

掌握傳統位點與 GTID 雙模式配置,可應對從 MySQL 5.5 到 8.0 的所有版本主從搭建場景,構建高可用 MySQL 架構的基石。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved