本文整理自官方英文手冊,保留完整章節結構,提煉核心概念與配置要點。
log-bin、設定唯一 server-id。GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'pwd';FLUSH TABLES WITH READ LOCK; SHOW MASTER STATUS;mysqldump --master-data 或物理拷貝(InnoDB 可不鎖表)。server-id、CHANGE MASTER TO ... MASTER_LOG_FILE=..., MASTER_LOG_POS=...; → START SLAVE;source_id:transaction_id(如 3E11FA47-71CA-11E1-9E33-C80AA9429562:23),全域唯一標識事務。gtid_mode=ON、enforce_gtid_consistency=ON、CHANGE MASTER TO MASTER_AUTO_POSITION=1;CREATE TABLE ... SELECT、臨時表、sql_slave_skip_counter。master_info_repository=TABLE、relay_log_info_repository=TABLE。CHANGE MASTER TO ... FOR CHANNEL 'master-1'; START SLAVE FOR CHANNEL 'master-1';gtid_mode 可動態調整:OFF → OFF_PERMISSIVE → ON_PERMISSIVE → ON(嚴格順序,每步需全集群同步完成)。ENFORCE_GTID_CONSISTENCY=WARN → ON → GTID_MODE=OFF_PERMISSIVE → ON_PERMISSIVE → 等待匿名事務清零 → ON。| 格式 | 優點 | 缺點 |
|---|---|---|
| Statement (SBR) | Binlog 小、審計友好、歷史久 | 非確定性函數/UDF/存儲過程不安全、鎖爭用大 |
| Row (RBR) | 完全安全、行鎖少 | Binlog 大、無法直接閱讀 SQL、MyISAM 表鎖重 |
| Mixed | 兼顧性能與安全(預設推薦) | 複雜度略高 |
mysql.slave_master_info、mysql.slave_relay_log_info),建議用表(Crash-safe)。read_only、FLUSH TABLES WITH READ LOCK 做冷/熱備份,不影響 Master。default_storage_engine 不複制,需手動 ALTER TABLE。log-slave-updates) → Slaves,減輕 Master 網路/CPU 壓力。mysqlfailover 自動化;傳統複制需腳本監控 + CHANGE MASTER TO 手動切換。rpl_semi_sync_master_enabled=1,平衡一致性與效能。CHANGE MASTER TO MASTER_DELAY=N;,防誤操作、歷史審計。UUID()、NOW() 等)在 SBR 下導致主從不一致 → 用 Mixed/RBR。replicate-do-db / replicate-ignore-db 與 USE db 配合易觸發 Bug(#77684)→ 推薦用表級 replicate-do-table。slave_parallel_workers (5.7+)、優化索引、拆分大事務。