| 執行緒 | 所在端 | 職責 |
| Binlog Dump Thread | 主庫 | 讀取 Binlog 發送給從庫 I/O 執行緒 |
| I/O Thread (Slave) | 從庫 | 接收事件,寫入本地 Relay Log |
| SQL Thread (Slave) | 從庫 | 讀取 Relay Log,重放 SQL 更新資料 |
可透過 SHOW PROCESSLIST 觀察三執行緒狀態。
三、中繼日誌與狀態檔案
- Relay Log:
host_name-relay-bin.nnnnnn,格式同 Binlog,可用 mysqlbinlog 解析。SQL Thread 執行完畢自動清理。
- Relay Log Index:
host_name-relay-bin.index,追蹤目前使用的 Relay Log。
- master.info: 記錄主庫連線資訊、已讀取的 Binlog 檔名與位置。
- relay-log.info: 記錄已執行的 Relay Log 位置。
- 以上檔案位於從庫
datadir,持久化保存,重啟後斷點續傳。
四、主從複寫部署前提
- 主從版本一致,建議最新穩定版(如 5.7/8.0)。
- 主庫啟用
log-bin、設定唯一 server-id。
- 從庫設定唯一
server-id(不可與主庫重複)。
- 網路互通:從庫可連線主庫 3306 埠。
- 主庫建立專用複寫帳號,僅授予
REPLICATION SLAVE 權限。
五、主庫端配置步驟
1. 建立複寫帳號
GRANT REPLICATION SLAVE ON *.*
TO 'replication'@'%.yourdomain.com' IDENTIFIED BY 'slavepass';
2. 全域鎖定並備份主庫資料(冷備份基準點)
mysql> FLUSH TABLES WITH READ LOCK;
-- 保持此連線不斷開,另開終端機執行備份
shell> cd /usr/local/mysql
shell> tar -cvf /tmp/mysql-snapshot.tar ./data
# 若不需複製 mysql 系統庫,可排除:--exclude=./data/mysql
3. 記錄當前 Binlog 位置(關鍵座標)
mysql> SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
必須記錄 File 與 Position,從庫配置時需填入。
4. 釋放鎖定
mysql> UNLOCK TABLES;
六、下一步預告
下篇將詳細說明從庫配置(CHANGE MASTER TO)、啟動複寫(START SLAVE)、狀態監控(SHOW SLAVE STATUS\G)、常見錯誤排查與 GTID 模式升級指南。
結語
主庫配置的核心在於「專用帳號、全域鎖定備份、精確記錄 Binlog 座標」。這三步若有疏漏,從庫將無法正確同步或發生資料不一致。請嚴格遵循流程,並妥善保存備份檔案與 Binlog 座標記錄。
- 上一篇文章: MySQL 5 存儲過程與函數開發實戰:語法、除錯技巧與加密演算法範例
- 下一篇文章: Linux 原始碼編譯安裝 MySQL 極簡步驟指南
Copyright ©
程式碼之家 All Rights Reserved