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

MySQL 主從同步完整部署教學(CentOS 5.2 + MySQL 5.1)

     編輯:MySQL 資料庫相關知識

環境規劃

角色IP版本
Master192.168.1.22CentOS 5.2 / MySQL 5.1.35
Slave192.168.1.33CentOS 5.2 / MySQL 5.1.35

Master 端設定

  1. 建立同步帳號
    GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.22' IDENTIFIED BY 'repl';
  2. 修改 my.cnf
    [mysqld]
    server-id=1
    log-bin=mysql-bin
    註:移除預設的 server-id=1 重複行
  3. 啟動 MySQL 並加全域讀鎖
    FLUSH TABLES WITH READ LOCK;
  4. 取得 Binlog 位置
    SHOW MASTER STATUS;
    記下 File(如 mysql-bin.0000010)與 Position(如 106)。
  5. 備份同步資料庫
    mysqldump test > test.sql
  6. 解鎖
    UNLOCK TABLES;

Slave 端設定

  1. 修改 my.cnf
    [mysqld]
    server-id=2
  2. 啟動 MySQL
  3. 設定同步參數
    CHANGE MASTER TO
      MASTER_HOST='192.168.1.22',
      MASTER_USER='repl',
      MASTER_PASSWORD='repl',
      MASTER_LOG_FILE='mysql-bin.0000010',
      MASTER_LOG_POS=106;
  4. 啟動 Slave 執行緒
    START SLAVE;
  5. 驗證狀態
    SHOW SLAVE STATUS\G
    關鍵指標:Slave_IO_Running: Yes、Slave_SQL_Running: Yes、Seconds_Behind_Master: 0

常見問題與解決

Server ID 衝突

錯誤:The slave I/O thread stops because master and slave have equal MySQL Server ids
解決:修改 Slave my.cnf 的 server-id 為唯一值,重啟 MySQL。

進階維護操作

手動同步(資料不一致時)

  1. Master:FLUSH TABLES WITH READ LOCK; → SHOW MASTER STATUS; 記下新位置
  2. Slave:SELECT MASTER_POS_WAIT('mysql-bin.0000011', 260); 等待同步完成
  3. Master:UNLOCK TABLES;

主從切換(Master 故障時)

  1. Slave:STOP SLAVE IO_THREAD; 確認 Has read all relay log
  2. Slave:STOP SLAVE; RESET MASTER;
  3. 刪除 master.info、relay-log.info,重啟即為新 Master

my.cnf 進階參數備忘

  • Master:binlog-do-db、binlog-ignore-db
  • Slave:replicate-do-db、replicate-ignore-db、master-connect-retry=60
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved