首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 5.6.14 主從復制(A/B 復制)環境配置全流程:從原理到落地的標準化交付

     編輯:MySQL 資料庫相關知識

一、復制原理三步走

  1. Master 寫入 → 記錄 Binary Log (binlog)
  2. Slave I/O 線程 → 拉取 binlog → 寫入 Relay Log
  3. Slave SQL 線程 → 重放 Relay Log → 數據重演

二、復制類型

  • Statement-based (SBR): 默認,記錄 SQL 語句,效率高,但部分函數/觸發器不安全
  • Row-based (RBR): 記錄行變更,絕對安全,Binlog 大
  • Mixed: 默認 SBR,不安全場景自動切 RBR(推薦生產)

三、前置條件

  • 主從版本一致(5.6.14)
  • 初始數據一致(備份恢復/目錄拷貝)
  • 主庫開啟 binlog,主從 server_id **全局唯一**
  • SELinux 關閉,防火牆放行 3306

四、單向主從(A→B)標準配置步驟

1. 主庫配置 (/etc/my.cnf)

[mysqld]
server_id = 102
log-bin = mysql3306-bin
重啟:systemctl restart mysqld

2. 主庫授權復制賬號

GRANT REPLICATION SLAVE ON *.* TO 'kongzhong'@'192.168.1.100' IDENTIFIED BY 'kongzhong';
FLUSH PRIVILEGES;

3. 主庫獲取 Binlog 位置(鎖表備份)

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
-- 記錄 File: mysql3306-bin.000001, Position: 414
UNLOCK TABLES;

4. 主庫備份傳輸

mysqldump -uroot -p -S /tmp/mysql3306.sock --all-databases > /tmp/mysql.sql
scp /tmp/mysql.sql root@192.168.1.100:/tmp

5. 從庫配置 (/etc/my.cnf)

[mysqld]
server_id = 100
重啟,導入備份:mysql -uroot -p -S /tmp/mysql3306.sock < /tmp/mysql.sql

6. 從庫指定主庫並啟動復制

CHANGE MASTER TO
  MASTER_HOST='192.168.1.102',
  MASTER_USER='kongzhong',
  MASTER_PASSWORD='kongzhong',
  MASTER_PORT=3306,
  MASTER_LOG_FILE='mysql3306-bin.000001',
  MASTER_LOG_POS=414;

START SLAVE;
SHOW SLAVE STATUS\G;
-- 核心確認:Slave_IO_Running: Yes, Slave_SQL_Running: Yes

五、雙向主從(A↔B)擴展

  • 雙方均開啟 log-bin、設置唯一 server_id
  • 雙方互相授權復制賬號(各自 IP)
  • 雙方均執行 CHANGE MASTER TO ... 指向對方
  • 警告: 雙主易產生衝突,**生產極不推薦**,除非有業務級隔離(不同庫/表)

六、驗證與監控

-- 主庫寫入測試
CREATE TABLE test_repl (id INT PRIMARY KEY);
INSERT INTO test_repl VALUES (1);

-- 從庫查詢確認
SELECT * FROM test_repl;  -- 應可見

-- 監控關鍵指標
SHOW SLAVE STATUS\G;
-- Seconds_Behind_Master: 0
-- Slave_IO_Running / Slave_SQL_Running: Yes
-- Last_IO_Error / Last_SQL_Error: 空

七、避坑清單

  1. server_id 衝突 → 復制斷裂
  2. 備份未加鎖/未解鎖 → 數據不一致
  3. 從庫手工寫入 → 主鍵衝突 → SQL 線程停止
  4. 防火牆/SELinux 未放行 → IO 線程連不上
  5. Binlog 格式不一致(主 ROW,從 STATEMENT)→ 數據差異

總結

**單向主從 = 主庫開 binlog + 唯一 server_id + 授權 + 鎖表備份 + 從庫導入 + CHANGE MASTER + START SLAVE**。將此流程固化為《MySQL 主從部署 SOP》,新環境交付「對著清單勾、跑著腳本跑」,零失誤上線。

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