MySQL 複製(Replication)是指從伺服器從主伺服器複製二進位日誌,並重新執行其中的事件,以達成資料同步。類似 Oracle Data Guard,但架構更輕量。主要優勢:

關鍵特性: 複製是非同步且串行化的——主庫上的並行更新在從庫上會串行執行,可能導致延遲。


MASTER_LOG_FILE 與 MASTER_LOG_POS,後續 CHANGE MASTER TO 時指定。

MASTER_LOG_FILE 與 MASTER_LOG_POS。my.cnf 設定 binlog-do-db、binlog-ignore-dbreplicate-do-db=dbname

Slave_IO_Running = Yes 且 Slave_SQL_Running = Yes。在 Master 建庫、建表、插入資料,觀察 Slave 是否同步:




主從環境下備份時,務必加上 --master-data=2 參數:
這樣備份檔會包含 Binlog 檔名與位點,新 Slave 還原後直接 START SLAVE 即可快速完成增量同步。
雙向同步,避免單點故障。最大風險: 資料衝突(如雙邊同時更新同一行)。配置方式同主從,雙向設定 CHANGE MASTER TO,注意對應 MASTER_LOG_FILE/POS。
適合「寫少讀多」場景,讀請求分散到多個從庫。但從庫過多會增加主庫 I/O 執行緒與網路頻寬壓力,導致延遲。
解決一主多從的壓力瓶頸:中間層 Slave 開啟 log_slave_updates = 1 並啟用 Binlog,充當下一層的 Master。
權衡: 層級越深,延遲風險越大。條件允許時,傾向拆分為多個獨立 Replication 叢集。
版權聲明:本文整理自 bestvivi(https://bestvivi.com/2015/09/06/MySQL%E5%A4%8D%E5%88%B6%E4%BB%8B%E7%B4%B9%E5%8F%8A%E6%90%AD%E5%BB%BA/),感謝原作者創作。