| 線程 | 位置 | 職責 |
|---|---|---|
| Binlog Dump | Master | 發送 Binlog 給從庫 |
| I/O Thread | Slave | 接收 Binlog 寫入本地 Relay Log |
| SQL Thread | Slave | 讀取 Relay Log 重放執行 |
可用 SHOW PROCESSLIST 觀察三線程狀態。
host_name-relay-bin.nnnnnn,格式同 Binlog,SQL Thread 執行完自動刪除。host_name-relay-bin.index,追蹤當前使用的 Relay Log。CHANGE MASTER TO 管理。GRANT REPLICATION SLAVE ON *.* TO 'replication'@'%.yourdomain.com' IDENTIFIED BY 'slavepass';
FLUSH TABLES WITH READ LOCK;
-- 另開終端打包數據目錄
tar -cvf /tmp/mysql-snapshot.tar ./data
-- 記錄 Binlog 位置
SHOW MASTER STATUS;
-- 記下 File 和 Position
UNLOCK TABLES;
[mysqld]
log-bin
server-id=1
重啟生效。[mysqld]
server-id=2
server-id 必須唯一、非 0。chown -R mysql:mysql。CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='replication',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.003',
MASTER_LOG_POS=73;
START SLAVE;
SHOW SLAVE STATUS\G 關注 Slave_IO_Running、Slave_SQL_Running 均為 Yes。HOSTNAME.err 記錄復制報錯。--log-bin,MASTER_LOG_FILE 填 '',MASTER_LOG_POS 填 4。server-id 衝突是常見阻礙。生產環境建議啟用 GTID(MySQL 5.6+)、半同步復制、多線程 SQL Thread(5.7+)、監控延遲告警。