MySQL 內建的複寫功能建立在兩台或多台伺服器之間,透過配置主從關係來實現資料同步。其中一台作為主伺服器,其餘作為從伺服器。本文將詳細說明如何配置雙伺服器架構,並說明它們之間的切換處理流程。本教學基於 MySQL 3.23.25 版本進行配置與測試,官方建議生產環境使用最新穩定版本,且主從伺服器版本應保持一致。需注意 3.23 系列屬於測試版,可能不支援向下相容。
指定兩台伺服器:A(IP:192.168.0.1)作為主伺服器,B(IP:192.168.0.2)作為從伺服器。
複寫運作流程為:從伺服器連接主伺服器,讀取主伺服器的二進位更新日誌,將變更合併到自身資料庫。因此從伺服器需要一組帳號連接主伺服器。在主伺服器建立帳號並僅授予 FILE 權限:
MySQL> GRANT FILE ON *.* TO replicate@192.168.0.2 IDENTIFIED BY 'passWord';
執行權限刷新生效:
MySQL> FLUSH PRIVILEGES;
稍後步驟會重啟服務,暫時不必擔心權限即時生效問題。
需取得主伺服器資料庫快照,並配置主伺服器產生二進位更新日誌。編輯 my.cnf,在 [mysqld] 區段加入:
[mysqld]
log-bin
重啟服務後,主伺服器將產生命名為 <主機名>-bin.<增量序號> 的二進位日誌檔案。
為使二進位日誌生效,需關閉 MySQL 服務,將主伺服器所有資料庫目錄備份至另一目錄,再重新啟動 mysqld。