[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = powerdns -- 僅同步此庫
binlog-ignore-db = mysql -- 忽略系統庫
# binlog_format = ROW -- 5.7+ 建議 ROW,避免非確定性函數導致不一致
重啟:`systemctl restart mysqld`
GRANT REPLICATION SLAVE ON *.* TO 'slave'@'192.168.1.2' IDENTIFIED BY 'strong_pass';
FLUSH PRIVILEGES;
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000002 | 309 | powerdns | mysql |
+------------------+----------+--------------+------------------+
記錄 `File` 和 `Position`。
[mysqld]
server-id = 2
# log-bin = mysql-bin # 可選:開啟利於鏈式/備份
# relay-log = relay-bin # 可選:自定義 relay log 名稱
read_only = 1 -- 強烈推薦防誤寫
重啟:`systemctl restart mysqld`
mysql> CHANGE MASTER TO
MASTER_HOST='192.168.1.1',
MASTER_USER='slave',
MASTER_PASSWORD='strong_pass',
MASTER_LOG_FILE='mysql-bin.000002',
MASTER_LOG_POS=309;
mysql> START SLAVE;
mysql> SHOW SLAVE STATUS\G
*************************** 1. row ***************************
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Seconds_Behind_Master: 0
...
**核心指標:** 兩個 `Yes` + `Seconds_Behind_Master = 0` (或極小) = 同步正常。
| 現象 | 原因 | 解決 |
|---|---|---|
| IO_Running: Connecting | 網絡不通/防火牆/密碼錯/bind-address | telnet master 3306;Master `bind-address=0.0.0.0` |
| SQL_Running: No | 數據衝突/Schema 不同/觸發器錯誤 | `SHOW SLAVE STATUS\G` 看 `Last_SQL_Error`;修復數據後 `START SLAVE` |
| Seconds_Behind_Master 停滯增長 | 大事務/慢查詢/硬件瓶頸/單線程複製 | 5.6+ 開啟 `slave_parallel_workers`;優化慢 SQL;升級硬件 |
| 主鍵衝突 1062 | 雙寫/手動操作 Slave/自增衝突 | Slave `read_only=1`;雙主用 `auto_increment_offset/increment` |
[mysqld]
gtid_mode = ON
enforce_gtid_consistency = ON
log_slave_updates = 1
-- Slave 啟動無需指定 File/Position,自動定位
CHANGE MASTER TO MASTER_HOST='...', MASTER_AUTO_POSITION=1;