MySQL 複寫基於二進制日誌:主庫 寫入 binlog → 從庫 I/O 執行緒拉取 → 寫入中繼日誌 → SQL 執行緒重放。實現資料近即時同步、讀寫分離、災備。
log-bin。[mysqld]
server-id = 1
log-bin = mysql-bin
binlog-do-db = db_name # 只同步指定庫(可多個,逗號分隔)
binlog-ignore-db = test,tmp # 排除庫
# 同步用戶
# GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'slavepass';
配置完成重啟 MySQL。
-- 主庫鎖表
FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS; -- 記錄 File、Position
-- 打包資料目錄或 mysqldump --master-data=2
-- 解鎖
UNLOCK TABLES;
[mysqld]
server-id = 2
relay-log = relay-bin
read-only = 1 # 防止誤寫入
# replicate-do-db = db_name # 可選,配合主庫 do/ignore
CHANGE MASTER TO
MASTER_HOST='192.168.1.10',
MASTER_USER='repl',
MASTER_PASSWORD='slavepass',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=107;
START SLAVE;
SHOW SLAVE STATUS\G
-- 關鍵:Slave_IO_Running=Yes, Slave_SQL_Running=Yes, Seconds_Behind_Master=0
SHOW SLAVE STATUS\G 定期檢查 Seconds_Behind_Master。pt-heartbeat(Percona Toolkit)精準監控延遲。第 2/3 篇將講解:GTID 模式部署、多從庫拓撲、半同步複寫、故障切換 (MHA/Orchestrator)。