複制流程:

| 線程 | 運行位置 | 職責 |
|---|---|---|
| Binlog Dump | Master | 讀取 Binlog 發送給 Slave IO 線程 |
| IO Thread | Slave | 拉取 Master Binlog 寫入 Relay Log |
| SQL Thread | Slave | 讀取 Relay Log 重放更新 Slave |
my.cnf[mysqld] server-id=6 log-bin=/var/lib/mysql/mysql-bin max_binlog_size=100M sync_binlog=0 binlog-format=MIXED binlog-ignore-db=test replicate-ignore-db=test
關鍵說明:server-id 全域唯一;log-bin 啟用 Binlog;binlog-format=MIXED 兼容效能與正確性;忽略 test 库。
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.1.7' IDENTIFIED BY 'repl';
FLUSH TABLES WITH READ LOCK; -- 僅讀,阻塞寫入 SHOW MASTER STATUS; -- 記錄 File + Position

停 Master 服務 → cp -r /var/lib/mysql/* 到 Slave 同路徑(或用 xtrabackup 熱備份) → 重啟 Master → UNLOCK TABLES;
my.cnf[mysqld] server-id=7 log-bin=/var/lib/mysql/mysql-bin max_binlog_size=100M sync_binlog=0 binlog-format=MIXED binlog-ignore-db=test replicate-ignore-db=test
mysqld_safe --skip-slave-start & # 不自動啟動複制線程 mysql -uroot -p CHANGE MASTER TO MASTER_HOST='192.168.1.6', MASTER_USER='repl', MASTER_PASSWORD='repl', MASTER_LOG_FILE='mysql-bin.000046', MASTER_LOG_POS=211991; START SLAVE;
SHOW PROCESSLIST\G; -- 觀察 IO/SQL 線程狀態 SHOW SLAVE STATUS\G; -- 核心監控指標

# Master CREATE DATABASE repltest; USE repltest; CREATE TABLE test(id INT); INSERT INTO test VALUES(1),(2); USE test; CREATE TABLE norepl(id INT); INSERT INTO norepl VALUES(1); -- test 忽略庫 # Slave SELECT * FROM repltest.test; -- 同步成功 SELECT * FROM test.norepl; -- 異常(忽略庫不同步)


SHOW SLAVE STATUS\G| 指標 | 正常值 | 異常含義 |
|---|---|---|
| Slave_IO_Running | Yes | No=IO 線程斷開(網路/認證/Binlog 損壞) |
| Slave_SQL_Running | Yes | No=SQL 線程報錯(鍵衝突/結構差異) |
| Seconds_Behind_Master | 0 | NULL=IO 斷開;>0=延遲秒數 |
| Last_IO_Error | 空 | IO 線程最近錯誤詳情 |
| Last_SQL_Error | 空 | SQL 線程最近錯誤詳情 |
| Relay_Log_Space | 適中 | 過大=SQL 線程處理慢於 IO 線程 |
| Exec_Master_Log_Pos | 接近 Read_Master_Log_Pos | 差距大=SQL 積壓 |
master.info:IO 線程記錄的 Master Binlog 讀取位置relay-log.info:SQL 線程記錄的 Relay Log 執行位置relay-bin.*:Relay Log 檔案,SQL 線程執行完自動清理--read-only:Slave 僅允許複制線程與 SUPER 用戶寫入--replicate-do-db / --replicate-ignore-db:庫級過濾--replicate-do-table / --replicate-ignore-table:表級過濾--replicate-wild-do-table / --replicate-wild-ignore-table:通配符過濾--skip-slave-start:啟動不自動拉起複制線程--slave-skip-errors=[err_codes|all]:跳過指定錯誤繼續複制(慎用)# Master Binlog Dump Has sent all binlog to slave; waiting for binlog to be updated # Slave IO Thread Waiting for master to send event # Slave SQL Thread Reading event from the relay log Has read all relay log; waiting for the slave I/O thread to update it
一主一從是基礎架構,易擴展為一主多從。但 Master 單點風險大,生產常演進為 雙主 (Master-Master)、MHA/Orchestrator 自動故障轉移、GTID 複制、半同步複制 等高可用架構。後續將專文介紹雙主複制與自動化運維體系。