MySQL Replication (主從複制) 採用**非同步**模式 (5.1.7+ 另支援半同步),核心由**三個執行緒**協作完成:
[mysqld] log-bin=mysql-bin server-id=1
若無 Binlog,複制無法工作。
MASTER_LOG_FILE + MASTER_LOG_POS 之後的 Binlog。mysql-relay-bin.xxxxxx),並更新 master.info 記錄下次請求座標。| 檔案 | 位置 | 用途 |
|---|---|---|
Binlog (mysql-bin.*) | Master | 記錄所有資料變更事件 (ROW/STATEMENT/MIXED 格式) |
Relay Log (mysql-relay-bin.*) | Slave | 暫存從 Master 拉取的事件,供 SQL Thread 重放 |
| master.info | Slave | 記錄 Master 連線資訊、當前 Binlog 檔名/位置、重試間隔 |
| relay-log.info | Slave | 記錄 SQL Thread 已執行至的 Relay Log 檔名/位置 |
Seconds_Behind_Master 監控關鍵。master.info 記錄位置繼續拉取。Slave_SQL_Running=No 停止複制,**嚴禁直接寫入從庫**。auto_increment_increment/offset 避免 ID 衝突,且業務邏輯保證無寫入衝突。Master 至少收到**一個 Slave** 確認收到 Binlog (寫入 Relay Log) 才提交交易,降低主庫掛掉導致資料丟失風險,但增加延遲。配置:
-- Master INSTALL PLUGIN rpl_semi_sync_master SONAME 'semisync_master.so'; SET GLOBAL rpl_semi_sync_master_enabled=1; -- Slave INSTALL PLUGIN rpl_semi_sync_slave SONAME 'semisync_slave.so'; SET GLOBAL rpl_semi_sync_slave_enabled=1;