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

MySQL 主從復制實戰筆記:配置要點、常見坑與狀態驗證全記錄

     編輯:MySQL 資料庫相關知識

環境與前置條件

  • 兩台機器同一路由器下,網絡互通。
  • 主從 MySQL 版本一致,數據目錄結構一致。
  • **關鍵:啟動復制前,主從庫數據必須完全一致**(用 mysqldump 導入或物理拷貝+binlog位置)。

配置文件關鍵設置

主庫 my.cnf

[mysqld]
server-id=1
log-bin=mysql-bin
binlog-do-db=videoCommunity   # 只同步指定庫(可選)
# binlog-ignore-db=test       # 排除庫
sync_binlog=1                 # 事務提交強制刷盤,最安全
innodb_flush_log_at_trx_commit=1

從庫 my.cnf

[mysqld]
server-id=2
relay-log=relay-bin
log-slave-updates=1           # 從庫也寫 binlog,支持級聯
read-only=1                   # 防止誤寫入
replicate-do-db=videoCommunity

啟動復制步驟

  1. 主庫:建立復制賬號
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'password';
  2. 主庫:鎖表導出一致性快照 + 記錄 binlog 位置
    FLUSH TABLES WITH READ LOCK;
    SHOW MASTER STATUS;
    -- 記錄 File (mysql-bin.000001) 和 Position (603)
    mysqldump --master-data=2 --single-transaction db_name > dump.sql
    UNLOCK TABLES;
  3. 從庫:導入數據
    mysql -u root -p db_name < dump.sql
  4. 從庫:配置主庫連接並啟動
    CHANGE MASTER TO
      MASTER_HOST='master_ip',
      MASTER_USER='repl',
      MASTER_PASSWORD='password',
      MASTER_LOG_FILE='mysql-bin.000001',
      MASTER_LOG_POS=603;
    START SLAVE;
  5. 驗證
    SHOW SLAVE STATUS\G
    -- 關鍵指標:
    Slave_IO_Running: Yes
    Slave_SQL_Running: Yes
    Seconds_Behind_Master: 0
    Last_Error: (空)

避坑指南(血淚教訓)

  • 必須刪除從庫舊的 master.info、relay-log.info、所有 relay-bin.*,否則從庫按舊坐標復制導致報錯/數據不一致。
  • 主庫重啟後 binlog 文件名可能變化,CHANGE MASTER TO 需用最新 SHOW MASTER STATUS 返回值。
  • 防火牆放行 3306,主庫允許從庫 IP 訪問。
  • 網絡抖動導致 IO 線程斷開,檢查 Last_IO_Error,調整 slave_net_timeout、master_retry_count。

監控指標

納入監控系統:Slave_IO_Running、Slave_SQL_Running、Seconds_Behind_Master、Last_Error、Relay_Log_Space。

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