評估 MySQL 主從/主主複製架構在實際業務場景下的可行性,涵蓋資料類型、SQL 語法、存儲引擎、版本差異等多維度相容性。
| 特性/場景 | 支援模式 | 引擎 | 版本備註 | 風險等級 |
|---|---|---|---|---|
| AUTO_INCREMENT 欄位 | ALL | InnoDB | ≥ 5.5.30 安全 | 低 |
| 複合主鍵含 AUTO_INCREMENT 非首欄 | ALL | InnoDB | INSERT 不安全 | 高 |
| 字符集 UTF8 | Mixed | InnoDB | 主從統一 UTF8 | 低 |
| 臨時表 | Mixed | InnoDB | 計數器無法自動清零,需 stop/flush slave | 中 |
| CREATE TABLE ... SELECT | Mixed | InnoDB | 正常 | 低 |
| RAND(), UUID(), LAST_INSERT_ID() | Mixed Only | InnoDB | 需 ROW/MIXED 模式 | 中 |
| LIMIT 子句 | Mixed | InnoDB | 正常 | 低 |
| 主從表定義不一致 | Mixed | InnoDB | 欄位順序必須相同 | 中 |
| MEMORY 引擎表 | Mixed | Memory | 大小限制需一致 | 中 |
| FLUSH 操作 | 不複製 | InnoDB | 從庫需單獨維護 | 高 |
| LOAD DATA INFILE | Mixed/Row | InnoDB | ≥ 5.5.6 正常 | 低 |
| 慢查詢日誌 | 不複製 | ALL | 需單獨配置 | 低 |
| REPAIR TABLE | 不複製 | ALL | 維護前需停止複製 | 高 |
| 系統函數 | Mixed-Row | ALL | 正常 | 低 |
| 浮點數精度 | 不支援 | ALL | 建議用 DECIMAL | 高 |
| 主從關機 | 安全 | ALL | 異常關機可能丟數據,建議 sync_binlog=1 | 中 |
| max_allowed_packet | 正常 | ALL | 大 TEXT 導致主庫失敗會終止複製 | 中 |
| 系統資料庫 mysql | Mixed | ALL | 正常同步 | 低 |
| 查詢優化器差異 | 風險 | ALL | 可能導致執行計劃不一致 | 中 |
| 保留字衝突 | 風險 | ALL | 升級後需改欄位名 | 中 |
| SET PASSWORD + Row-based | 已知 Bug | ALL | 5.1→5.5 不複製 | 高 |
| TRUNCATE TABLE | Mixed | InnoDB | 正常 | 低 |
| 視圖 | 複製 | ALL | 注意忽略複製表 | 低 |
binlog_format = ROW 或 MIXEDgtid_mode = ON 簡化故障轉移sync_binlog = 1, innodb_flush_log_at_trx_commit = 1 確保零資料遺失read_only = ON, super_read_only = ON 防誤寫入slave_skip_errors,優先修復根因根據業務所需特性 (事務、觸發器、視圖、分區表、DDL 線上變更等),目前 MySQL 複製架構 可正常投入生產使用。關鍵在於:統一 SQL_MODE、字符集、版本;選擇 ROW 格式;建立完善監控與故障演練機制。