當資料庫讀寫頻繁、資料量龐大時,讀寫分離可顯著提升效能(亦可作備份用途)。MySQL 內建複寫功能正是解決之道。本文實測跨平台同步:Windows Master ↔ Linux Slave。
| 角色 | 作業系統 | MySQL 版本 | IP 位址 |
|---|---|---|---|
| Master(主庫) | Windows | 5.0.51 | 192.168.1.156 |
| Slave(從庫) | Linux | 5.0.67 | 192.168.1.154 |
Slave 端複寫由兩執行緒協作:
accountaccount 導入 Slavemy.cnf[mysqld]
server-id = 1
log-bin = d:/log-bin.log
binlog-do-db = account
說明:server-id 唯一標識;log-bin 指定二進制日誌路徑;binlog-do-db 僅記錄指定資料庫變更。
my.cnf[mysqld]
server-id = 2
master-host = 192.168.1.156
master-user = repl_user
master-password = repl_pass
master-port = 3306
replicate-do-db = account
log-bin 路徑是否生成日誌檔調整 log-bin 路徑並重啟後,同步失效,錯誤:Could not find first log file name in binary log index。經排查發現 master.info 檔案記錄了舊日誌位置資訊。刪除該檔並重啟 MySQL,同步恢復正常。
經驗:變更 Binary Log 路徑時,務必同步清理master.info、relay-log.info等元資料檔案。