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

MySQL 基於日誌點的主從復制完整配置指南

     編輯:MySQL 綜合教學

MySQL 基於日誌點的主從復制完整配置指南

MySQL 復制機制主要分為基於日誌點的傳統復制與基於 GTID 的全域事務識別符復制兩大類。本文將詳細解析基於日誌點復制的完整部署流程,涵蓋從帳號建立、參數配置、數據初始化到驗證測試的各個關鍵步驟。

一、建立復制專用賬號

在主資料庫伺服器上建立具備 REPLICATION SLAVE 權限的專用帳號,建議限制來源 IP 段以增強安全性:

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

二、主資料庫伺服器配置

編輯 my.cnf(或 Windows 下的 my.ini),在 [mysqld] 區段加入以下核心參數:

[mysqld]
log-bin=mysql-bin          # 啟用二進制日誌並指定基礎名稱
server_id=100              # 集群內唯一標識,範圍 1~2³²-1

修改後重啟 MySQL 服務使配置生效。

三、從資料庫伺服器配置

[mysqld]
log-bin=mysql-bin
server_id=101
relay_log=mysql-relay-bin   # 中繼日誌名稱
log_slave_updates=ON        # 若此從庫需作為下一級主庫,必須開啟
read_only=ON                # 防止誤寫入,保護數據一致性

四、從庫數據初始化

提供兩種主流方案,根據業務停機容忍度選擇:

方案 A:mysqldump 邏輯備份(需加鎖,適合較小數據量)

mysqldump -uroot -p -P3308 \
  --single-transaction \
  --master-data=2 \
  --triggers --routines \
  --all-databases > all.sql
  • --single-transaction:InnoDB 表確保一致性視圖,不阻塞寫入
  • --master-data=2:在導出文件中以註釋形式記錄主庫當前 Binlog 文件名與位置

方案 B:xtrabackup 物理熱備(不阻塞,適合大數據量)

xtrabackup --backup --slave-info --target-dir=/backup/full

備份完成後,將文件傳輸至從庫並還原:

mysql -uroot -p -P3309 < all.sql   # 邏輯備份還原
# 或使用 xtrabackup --copy-back 還原物理備份

五、啟動復制鏈路

在從庫執行 CHANGE MASTER TO 指定主庫連接資訊與同步起點:

CHANGE MASTER TO
  MASTER_HOST='master_host_ip',
  MASTER_USER='repl',
  MASTER_PASSWORD='repl',
  MASTER_LOG_FILE='mysql-bin.000005',
  MASTER_LOG_POS=2162;

關鍵提示:MASTER_LOG_FILE 與 MASTER_LOG_POS 可從導出的 all.sql 文件頭部註釋中獲取(如圖所示)。

導出文件中的 Binlog 位置信息

啟動復制線程並檢查狀態:

START SLAVE;
SHOW SLAVE STATUS\G

SHOW SLAVE STATUS 輸出示例

重點關注 Slave_IO_Running 與 Slave_SQL_Running 均為 Yes,且 Seconds_Behind_Master 為 0 或較小值。

查看線程狀態確認復制架構:

SHOW PROCESSLIST;
  • 主庫:顯示 Binlog Dump 線程,負責向從庫推送日誌
  • 從庫:包含 Slave_IO(接收日誌寫入中繼日誌)與 Slave_SQL(重放中繼日誌)兩個線程

從庫進程列表

主庫進程列表

六、驗證復制效果

在主庫建立測試表並插入數據:

CREATE TABLE test_repl (id INT PRIMARY KEY, val VARCHAR(20));
INSERT INTO test_repl VALUES (1, 'replication_test'), (2, 'binlog_pos');

主庫寫入測試數據

從庫查詢確認同步:

SELECT * FROM test_repl;

從庫數據同步驗證

七、優缺點總結

優點缺點
MySQL 最早支持的復制技術,成熟穩定,Bug 相對較少故障切換時需手動獲取新主庫的 Binlog 文件與位點,運維複雜度高
對 SQL 查詢無特殊限制,兼容性好多級復制拓撲下,位點管理容易出錯
故障排查相對直觀,工具鏈完善不支援自動容錯轉移,需配合 MHA、Orchestrator 等外部工具

生產環境建議結合 GTID 模式與自動化故障轉移工具,構建高可用架構。

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