系統梳理主從復制三層原理、三種類型、配置前提、單向/雙向部署步驟,附多實例環境下的實戰命令序列與避坑指南。

| 類型 | 特點 | 版本 |
|---|---|---|
| Statement-based (SBR) | 記錄 SQL、體積小、非確定性函數風險 | 默認 |
| Row-based (RBR) | 記錄行變更、安全、體積大 | 5.0+ |
| Mixed | 默認 SBR,檢測不安全自動切 RBR | 5.1+ |
server-id 唯一# 1. 配置 /etc/my.cnf server_id=102 log-bin=mysql3306-bin # 2. 重啟、授權 GRANT REPLICATION SLAVE ON *.* TO 'kongzhong'@'192.168.1.100' IDENTIFIED BY 'kongzhong'; FLUSH PRIVILEGES; # 3. 記錄位點 SHOW MASTER STATUS; -- File: mysql3306-bin.000001, Pos: 414 # 4. 鎖表備份傳輸 FLUSH TABLES WITH READ LOCK; mysqldump -P3306 -uroot -p -S /usr/local/mysql/mysqld3306.sock --all-databases > /tmp/mysql.sql UNLOCK TABLES; scp /tmp/mysql.sql root@192.168.1.100:/tmp
# 1. 配置 server_id
server_id=100
# 2. 重啟、還原
mysql -uroot -S /usr/local/mysql/mysqld3306.sock -p < /tmp/mysql.sql
# 3. 指定源並啟動
CHANGE MASTER TO
MASTER_HOST='192.168.1.102',
MASTER_USER='kongzhong',
MASTER_PASSWORD='kongzhong',
MASTER_PORT=3306,
MASTER_LOG_FILE='mysql3306-bin.000001',
MASTER_LOG_POS=414;
START SLAVE;
# 4. 驗證
SHOW SLAVE STATUS\G;
-- Slave_IO_Running: Yes, Slave_SQL_Running: Yes
在單向基礎上:
log-bin、配置唯一 server-idCHANGE MASTER TO 指向 SlaveSTART SLAVE,雙向形成
| 參數 | 含義 |
|---|---|
| MASTER_HOST | 主庫 IP |
| MASTER_USER/PASSWORD | 復制帳號憑證 |
| MASTER_PORT | 主庫端口(多實例必填) |
| MASTER_LOG_FILE | 主庫 Binlog 文件名(來自 SHOW MASTER STATUS) |
| MASTER_LOG_POS | 主庫 Binlog 位點 |
iptables stop / setenforce 0MASTER_PORT 必須顯式指定