相較 MongoDB、Redis 等 NoSQL 複寫,MySQL 複寫架構較為複雜。本文系統梳理複寫原理、主從配置、資料初始化、關鍵日誌含義,為故障排查打基礎。

| 座標組 | 欄位 | 含義 |
|---|---|---|
| 下一個傳輸的 Binlog | Master_Log_File, Read_Master_Log_Pos | I/O Thread 已讀取至主庫 Binlog 的位置 |
| 下一個執行的 Binlog | Relay_Master_Log_File, Exec_Master_Log_Pos | SQL Thread 已重放至主庫 Binlog 的位置 |
| 下一個執行的 Relay Log | Relay_Log_File, Relay_Log_Pos | SQL Thread 已讀取至本地 Relay Log 的位置 |
理解這三組座標對故障診斷 (如主從延遲、同步中斷、GTID 遷移) 至關重要。
[mysqld]
server_id = 100
log_bin = mysql-bin
log_bin_index = mysql-bin.index
sync_binlog = 1
innodb_flush_log_at_trx_commit = 1
innodb_support_xa = 1
server_id 全域唯一,避免衝突log_bin,防主機名變更導致檔名改變[mysqld]
server_id = 200
log_bin = mysql-bin
log_bin_index = mysql-bin.index
relay_log = mysql-relay-bin
relay_log_index = mysql-relay-bin.index
read_only = 1
skip_slave_start = 1
log_slave_updates = 1
read_only=1 防誤寫入 (SUPER 權限用戶除外)skip_slave_start=1 防止啟動自動複寫,便於手動控制log_slave_updates=1 從庫記錄 Binlog,利於後續提升為主庫mysqldump --all-databases --master-data=1 > data.sql
mysqldump --all-databases --single-transaction --master-data=1 > data.sql
FLUSH TABLES WITH READ LOCK;SHOW MASTER STATUS; (記下 File & Position)UNLOCK TABLES;後續將介紹複寫故障診斷、GTID、多源複寫等進階主題。