首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 主從複製配置標準化操作手冊:從停機拷貝到 CHANGE MASTER TO 動態管理

     編輯:MySQL 綜合教學

MySQL 主從複製標準化部署與運維操作手冊

採用「停機拷貝 + 配置雙端 + CHANGE MASTER TO 動態同步」標準化流程,避免鎖表長時間阻塞業務,支援動態參數調整。驗證環境:MySQL 5.x/8.x 通用。

標準化 8 步部署流程

第一步:停止雙端服務

systemctl stop mysqld  # 主從均執行

第二步:主庫數據目錄完整拷貝至從庫

# 主庫
tar czf /backup/mysql_data.tar.gz /var/lib/mysql/
scp /backup/mysql_data.tar.gz slave_ip:/backup/
# 從庫
tar xzf /backup/mysql_data.tar.gz -C /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql

優勢:比 mysqldump 快 10 倍+,保留表空間、權限、統計信息完整一致。

第三步:主庫 my.cnf (通常無需改動,默認即主庫模式)

[mysqld]
server-id=1
log-bin=mysql-bin
binlog_format=ROW          # 推薦 ROW 格式,減少主從不一致
# binlog-do-db=business_db  # 可選:只記錄業務庫

第四步:從庫 my.cnf 核心配置

[mysqld]
server-id=2                              # 唯一,≠1
master-host=192.168.1.100                # 主庫 IP
master-user=repl_user
master-password=repl_pass
master-port=3306
master-connect-retry=60
replicate-do-db=business_db              # 可選:只同步業務庫
relay-log=relay-bin
relay-log-index=relay-bin.index
log-slave-updates=1                      # 支持鏈式複製
read-only=1                              # 防誤寫入

第五步:創建複製賬號 (主庫執行)

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'192.168.1.%' IDENTIFIED BY 'repl_pass';
FLUSH PRIVILEGES;

第六步:重啟雙端服務

systemctl start mysqld

第七步:驗證主庫 Binlog 狀態

SHOW MASTER STATUS\G;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000007 | 39259    |              |                  |
+------------------+----------+--------------+------------------+

第八步:從庫動態同步座標並啟動複製

-- 從庫客戶端
STOP SLAVE;
CHANGE MASTER TO
    MASTER_HOST='192.168.1.100',
    MASTER_USER='repl_user',
    MASTER_PASSWORD='repl_pass',
    MASTER_LOG_FILE='mysql-bin.000007',   -- 第七步記錄的 File
    MASTER_LOG_POS=39259;                 -- 第七步記錄的 Position
START SLAVE;
SHOW SLAVE STATUS\G;

關鍵成功指標:Slave_IO_Running: Yes、Slave_SQL_Running: Yes、Seconds_Behind_Master: 0

動態參數調整 (無需改 my.cnf 重啟)

STOP SLAVE;
CHANGE MASTER TO
    MASTER_HOST='new_master_ip',
    MASTER_PORT=3306,
    MASTER_LOG_FILE='mysql-bin.000010',
    MASTER_LOG_POS=120;
START SLAVE;

適用場景:主庫遷移、Binlog 清理後重新同步、故障切換。

Binlog 清理零停機標準流程

  1. 主庫:FLUSH TABLES WITH READ LOCK;
  2. 從庫:STOP SLAVE;
  3. 主庫:SHOW MASTER STATUS; 記錄新 File、Position
  4. 主庫:UNLOCK TABLES;
  5. 從庫:CHANGE MASTER TO MASTER_LOG_FILE='new_file', MASTER_LOG_POS=new_pos;
  6. 從庫:START SLAVE;
  7. 主庫:PURGE MASTER LOGS TO 'new_file'; (保留從庫未處理的日志)

常見故障排查速查

現象排查命令典型原因解決
IO 線程 NoSHOW SLAVE STATUS\G 看 Last_IO_Error網絡不通、賬號密碼錯、主庫 Binlog 丟失檢查防火牆、重建賬號、重新搭建從庫
SQL 線程 No看 Last_SQL_Error主從數據不一致、DDL 衝突、外鍵約束SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE; (慎用)
延遲高Seconds_Behind_Master 大從庫硬件弱、大事務、長查詢阻塞優化從庫硬件、並行複製 slave_parallel_workers
主鍵衝突Error 1062雙主未配置 auto_increment_offset配置 auto_increment_offset/increment
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved