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

MySQL 雙機熱備 (主從複制) 完整設定指南

     編輯:MySQL 資料庫相關知識

版本需求與原則

  • MySQL ≥ 3.23 支援複制。
  • Slave 版本 ≥ Master 版本 (向上相容),不可相反。
  • 複制基於 Master 二進制日志,Master 必須啟用 log-bin。

Master 設定

[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = db_name        # 只記錄指定庫 (多庫用逗號分隔)
binlog-ignore-db = test       # 忽略指定庫

# 建立同步專用帳號
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
# 4.0.2 以前版本用 GRANT FILE ON *.* ...
FLUSH PRIVILEGES;

備份基準資料並記錄位點

-- 鎖表防寫入
FLUSH TABLES WITH READ LOCK;

-- 方式一:直接打包 data 目錄 (建議)
tar czf /backup/master_data.tar.gz /var/lib/mysql/db_name

-- 方式二:mysqldump (需加 --master-data)
mysqldump --master-data -u root -p db_name > dump.sql

-- 記錄位點
SHOW MASTER STATUS\G;
-- 記下 File (如 mysql-bin.003) 和 Position (如 73)

-- 解鎖
UNLOCK TABLES;

Slave 設定

[mysqld]
server-id = 2                # 唯一,不可與 Master 或其他 Slave 重複
master-host = master_ip
master-port = 3306
master-user = repl
master-password = slavepass
master-connect-retry = 60
report-host = slave_ip

# 匯入 Master 備份資料
# 啟動 Slave (若未加 --skip-slave-start 需手動)
STOP SLAVE;

-- 設定同步參數
CHANGE MASTER TO
    MASTER_HOST='master_ip',
    MASTER_USER='repl',
    MASTER_PASSWORD='slavepass',
    MASTER_LOG_FILE='mysql-bin.003',   -- Master 記錄的 File
    MASTER_LOG_POS=73;                 -- Master 記錄的 Position

START SLAVE;

驗證與維護

SHOW PROCESSLIST\G;  -- 檢查 Slave_IO_Running / Slave_SQL_Running 皆為 Yes

-- 日志過大時清理流程
FLUSH TABLES WITH READ LOCK;   -- Master 鎖表
STOP SLAVE;                    -- Slave 停止
SHOW MASTER STATUS;            -- 記下新 File/Position
UNLOCK TABLES;                 -- Master 解鎖
CHANGE MASTER TO MASTER_LOG_FILE='new_file', MASTER_LOG_POS=new_pos;  -- Slave 更新位點
START SLAVE;

掌握以上流程,即可建立穩定的 MySQL 雙機熱備架構。

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