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

MySQL 主從復制配置全流程指南:從原理到實戰操作

     編輯:MySQL 資料庫相關知識

核心原理

MySQL 支持單向、異步復制。Master 寫入 Binlog,Slave 通過 I/O 線程拉取 Binlog 寫入 Relay Log,SQL 線程重放 Relay Log 實現數據同步。三線程協作:

  • Master:Binlog Dump 線程發送二進制日志
  • Slave I/O 線程:接收 Binlog 寫入本地 Relay Log
  • Slave SQL 線程:讀取 Relay Log 重放更新

主從架構價值

  1. 高可用:Master 故障可切換 Slave 服務
  2. 讀寫分離:查詢分流至 Slave,降低 Master 壓力(嚴禁雙寫)
  3. 非侵入式備份:在 Slave 執行備份,不影響 Master 寫入

配置步驟詳解

1. Master 配置 (/etc/my.cnf)

[mysqld]
server_id = 1                    # 全局唯一
log-bin = /data/mysql/3306/binlog/binlog
binlog_format = ROW              # 推薦行級,數據一致性最強
expire_logs_days = 7             # 自動清理舊日志
max_binlog_size = 512M

重啟:systemctl restart mysqld

2. Slave 配置 (/etc/my.cnf)

[mysqld]
server_id = 2                    # 與 Master 不同
log-bin = /data/mysql/3306/binlog/binlog   # 建議開啟,便於級聯/切主
relay_log = /data/mysql/3306/relaylog/relay
read_only = 1                    # 防止誤寫入
skip_slave_start = 1             # 手動控制啟動

3. Master 授權同步賬號

GRANT REPLICATION SLAVE ON *.* TO 'repl_user'@'slave_ip' IDENTIFIED BY 'strong_password';
FLUSH PRIVILEGES;

4. 獲取 Master 同步坐標

SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File             | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| binlog.000001    | 4826     |              |                  |
+------------------+----------+--------------+------------------+

5. Slave 建立復制關係

STOP SLAVE;
CHANGE MASTER TO
  MASTER_HOST='master_ip',
  MASTER_USER='repl_user',
  MASTER_PASSWORD='strong_password',
  MASTER_LOG_FILE='binlog.000001',
  MASTER_LOG_POS=4826;
START SLAVE;

6. 驗證同步狀態

SHOW SLAVE STATUS\G
關鍵指標:
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0

常用管理命令

操作命令
查看 Binlog 內容mysqlbinlog binlog.000001
重置 BinlogRESET MASTER
查看 Master 狀態SHOW MASTER STATUS
刷新日志FLUSH LOGS
啟動/停止 SlaveSTART/STOP SLAVE
基於 Binlog 時間點恢復mysqlbinlog binlog.000001 | mysql -p(未執行 RESET MASTER 前有效)

避坑指南

  • server_id 必須全局唯一,否則報錯
  • Slave 必須能網絡連通 Master 3306 端口
  • 防火牆/安全組放行雙向通訊
  • 大數據量初始同步建議:mysqldump --master-data=2 導出導入後再 CHANGE MASTER TO 指定位點
  • 監控 Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running 三大核心指標
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved