關鍵限制:Slave 重放為串行,Master 並行寫入在 Slave 端順序執行。
binlog_format=MIXED)。[mysqld]
server-id=1
log-bin=mysql-bin
# 可選:binlog_format=MIXED
創建復制帳號:
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'slave_ip' IDENTIFIED BY 'pass';
FLUSH PRIVILEGES;
[mysqld]
server-id=2
relay-log=mysql-relay-bin
log-slave-updates=1 # 若作為下級 Master
read-only=1 # 防止誤寫
CHANGE MASTER TO
MASTER_HOST='master_ip',
MASTER_USER='repl',
MASTER_PASSWORD='pass',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=4;
START SLAVE;
SHOW SLAVE STATUS\G
-- 關鍵:Slave_IO_Running=Yes, Slave_SQL_Running=Yes, Seconds_Behind_Master=0
mysql-bin.index:binlog 文件索引。mysql-relay-bin.index:relay log 索引。master.info:記錄 Master 連接信息、binlog 位點(勿刪)。relay-log.info:SQL 線程執行位點。| 架構 | 特點 | 適用場景 |
|---|---|---|
| 一主多從 | 讀寫分離,從庫分擔讀壓力 | 讀多寫少,90%+ 生產場景 |
| 雙主 (Active-Active) | 雙向寫入,需解決衝突 | 異地雙活,業務可容忍衝突 |
| 雙主 (Active-Passive) | 一主一備,備庫只讀 | 高可用,故障手動/自動切換 |
| 級聯 (Master-Slaves-Slaves) | 一級從庫作二級主,減輕主庫壓力 | 從庫極多(>10),主庫 I/O 瓶頸 |
| 雙主+級聯 | 備主承接級聯,主庫純寫 | 大規模讀擴展+高可用 |
單 Slave 可從多 Master 復制不同庫/表,通道隔離:
CHANGE MASTER TO MASTER_HOST='m1', ... FOR CHANNEL 'c1';
CHANGE MASTER TO MASTER_HOST='m2', ... FOR CHANNEL 'c2';
START SLAVE FOR CHANNEL 'c1';
Seconds_Behind_Master、Slave_*_Running、Relay Log 積壓。SHOW SLAVE STATUS、SHOW MASTER STATUS 對比位點。--single-transaction),主庫避免備份壓力。