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

MySQL Master/Slave 主從復制集群搭建全流程(基於 GTID)

     編輯:MySQL 綜合教學

MySQL Master/Slave 主從復制集群搭建全流程(基於 GTID)

本文基於 MySQL 5.6+(推薦 5.7/8.0)詳細記錄基於 GTID 的主從復制搭建步驟,涵蓋安裝、配置、啟動、驗證、故障切換準備,適用於讀寫分離、有限高可用架構。

架構說明

  • Master:承擔寫入、關鍵讀取,開啟 Binlog(ROW 格式)、GTID
  • Slave:承擔讀取、備份、分析查詢,Relay Log 重放
  • 有限 HA:Master 故障時數據不丟失(同步/半同步),但需人工介入切換;追求自動故障轉移請用 MHA、Orchestrator、InnoDB Cluster

環境準備

項目MasterSlave
OSCentOS 7 / Ubuntu 20.04同
MySQL5.7.x / 8.0.x(版本一致)同
IP10.0.1.1010.0.1.20
Server ID1020

步驟 1:安裝 MySQL(略,官方 RPM/APT/YUM 均可)

確保雙節點版本一致、字符集 utf8mb4、時區一致(system 或 UTC)。

步驟 2:Master 配置 /etc/my.cnf

[mysqld]
server-id = 10
log-bin = mysql-bin
binlog-format = ROW
gtid-mode = ON
enforce-gtid-consistency = ON
log-slave-updates = 1          # 從庫也需開啟,支持鏈式復制
skip-name-resolve
max_connections = 2000
innodb_flush_log_at_trx_commit = 1
sync_binlog = 1                # 最高數據安全
# 半同步復制(可選,推薦)
rpl_semi_sync_master_enabled = 1
rpl_semi_sync_master_timeout = 1000

步驟 3:Slave 配置 /etc/my.cnf

[mysqld]
server-id = 20
log-bin = mysql-bin            # 從庫也開 binlog,支持鏈式/備庫升主
binlog-format = ROW
gtid-mode = ON
enforce-gtid-consistency = ON
log-slave-updates = 1
skip-name-resolve
read-only = 1                  # 防止誤寫入
super-read-only = 1            # 8.0+,連 super 用戶也限制
relay-log = relay-bin
relay-log-recovery = 1         # 啟動時自動修復損壞 relay log

步驟 4:重啟雙節點並創建復制用戶

-- Master 執行
CREATE USER 'repl'@'10.0.1.%' IDENTIFIED BY 'ReplPassw0rd!';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'10.0.1.%';
FLUSH PRIVILEGES;

步驟 5:數據初始同步(兩種方式)

方式 A:xtrabackup 物理熱備(大庫推薦,速度快、不阻塞)

# Master 備份
xtrabackup --backup --target-dir=/backup/full --user=root --password=xxx

# 傳輸到 Slave
rsync -av /backup/full/ slave:/var/lib/mysql/

# Slave 恢復
xtrabackup --prepare --target-dir=/var/lib/mysql
chown -R mysql:mysql /var/lib/mysql
systemctl start mysqld

方式 B:mysqldump 邏輯備份(小庫適用)

# Master
mysqldump --all-databases --single-transaction --master-data=2 --flush-logs --gtid --routines --triggers -uroot -p > full.sql

# Slave
mysql -uroot -p < full.sql

步驟 6:啟動復制(GTID 模式自動定位)

-- Slave 執行
CHANGE MASTER TO
    MASTER_HOST = '10.0.1.10',
    MASTER_USER = 'repl',
    MASTER_PASSWORD = 'ReplPassw0rd!',
    MASTER_AUTO_POSITION = 1;  -- GTID 核心:無需指定 File/Position

START SLAVE;

步驟 7:驗證狀態

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