MySQL 3.23.15+ 提供 Replication 功能,透過二進制日誌實現資料同步。支援主從(單向)與雙主(雙向)兩種模式。
| 角色 | IP | Server ID |
|---|---|---|
| A (Master/雙主) | 10.10.10.22 | 1 |
| B (Slave/雙主) | 10.10.10.53 | 2 |
-- 兩台均建立同步帳號
GRANT FILE ON *.* TO 'backup'@'對方IP' IDENTIFIED BY '1234';
CREATE DATABASE backup;
[mysqld]
server-id = 1
log-bin
binlog-do-db = backup
重啟後驗證:SHOW MASTER STATUS;
[mysqld]
server-id = 2
master-host = 10.10.10.22
master-user = backup
master-password = 1234
master-port = 3306
master-connect-retry = 60
replicate-do-db = backup
重啟後驗證:SHOW SLAVE STATUS\G 確認 Slave_IO_Running=Yes、Slave_SQL_Running=Yes。
重要:修改 Slave 設定前需刪除資料目錄下的 master.info,否則舊設定優先生效。
在主從基礎上,雙向加入對方為 Master 設定:
master-host = 10.10.10.53
master-user = backup
master-password = 1234
replicate-do-db = backup
master-connect-retry = 10
log-bin = c:/mysqllog/mysqllog
binlog-do-db = backup
雙方重啟後實現雙向同步。
*.err 記錄,SQL 執行緒停止SLAVE START 恢復同步Seconds_Behind_Master、Slave_IO_Running、Slave_SQL_Running向 B 批量插入 187 萬行,A 端每秒同步約 2500 行,網路與磁碟 I/O 為主要瓶頸。
rpl_semi_sync_master=ON 降低資料遺失風險pt-table-checksum)