萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 雙機熱備(主從複寫)架構部署全流程 (1/3)

架構原理

MySQL 複寫基於二進制日誌:主庫 寫入 binlog → 從庫 I/O 執行緒拉取 → 寫入中繼日誌 → SQL 執行緒重放。實現資料近即時同步、讀寫分離、災備。

版本需求

  • 主從版本 ≥ 3.23(建議同主版本,或從庫版本 ≥ 主庫)。
  • 主庫必須啟用 log-bin。

主庫配置 (my.cnf)

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = db_name          # 只同步指定庫(可多個,逗號分隔)
binlog-ignore-db = test,tmp     # 排除庫
# 同步用戶
# GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'slavepass';

配置完成重啟 MySQL。

主庫鎖定與基準備份

-- 主庫鎖表
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;  -- 記錄 File、Position
-- 打包資料目錄或 mysqldump --master-data=2
-- 解鎖
UNLOCK TABLES;

從庫配置 (my.cnf)

[mysqld]
server-id = 2
relay-log = relay-bin
read-only = 1              # 防止誤寫入
# replicate-do-db = db_name  # 可選,配合主庫 do/ignore

建立複寫連線

CHANGE MASTER TO
    MASTER_HOST='192.168.1.10',
    MASTER_USER='repl',
    MASTER_PASSWORD='slavepass',
    MASTER_LOG_FILE='mysql-bin.000001',
    MASTER_LOG_POS=107;
START SLAVE;
SHOW SLAVE STATUS\G
-- 關鍵:Slave_IO_Running=Yes, Slave_SQL_Running=Yes, Seconds_Behind_Master=0

驗證與監控

  • SHOW SLAVE STATUS\G 定期檢查 Seconds_Behind_Master。
  • 設置 pt-heartbeat(Percona Toolkit)精準監控延遲。
  • 關鍵告警:IO/SQL 執行緒停止、延遲 > 300 秒、錯誤碼非 0。

下一篇預告

第 2/3 篇將講解:GTID 模式部署、多從庫拓撲、半同步複寫、故障切換 (MHA/Orchestrator)。

copyright © 萬盛學電腦網 all rights reserved