MySQL Fabric 是 Oracle 官方推出的高可用與分片框架,結合 GTID(全局事務識別符)可實現故障自動轉移、讀寫分離。本文記錄基於 Percona Server 5.6.19 的生產級部署全過程(上篇)。
所有受管實例 [mysqld] 區段必須包含:
log-bin=mysql-bin binlog_format=ROW server-id=29 # 每實例唯一 log-slave-updates=true gtid-mode=on enforce-gtid-consistency=true sync-master-info=1
說明:binlog_format=ROW 為 GTID 必需;log-slave-updates 確保從庫也寫 binlog,支援級聯複製;sync-master-info=1 減少故障時元數據丟失。
| 角色 | 用戶@Host | 密碼 | 用途 |
|---|---|---|---|
| 超級管理員 | root@'172.17.42.1' | admin@123 | Fabric 狀態存儲、實例管理 |
| Fabric 管理賬號 | fabric@'172.17.42.1' | fabric@456 | Fabric 連接實例執行管理命令 |
| 複製專用賬號 | fabric@'172.17.0.%' | fabric@456 | 主從複製認證,**密碼必須與管理賬號一致** |
mysqlfabric help:簡短語法mysqlfabric help commands:列出所有命令mysqlfabric help groups:列出群組命令mysqlfabric help [group] [command]:命令詳細幫助# 1. 創建組 mysqlfabric group create my_group # 輸入 XML-RPC 密碼(或配置 disable_authentication=yes 重啟 Fabric) # 2. 添加實例到組 mysqlfabric group add my_group 172.17.0.50:3306 mysqlfabric group add my_group 172.17.0.47:3306 mysqlfabric group add my_group 172.17.0.48:3306
踩坑提示:命令行參數 --param=servers.user=fabric --param=servers.password=fabric@456 無法覆蓋配置文件密碼,建議直接修改 fabric.cfg 的 servers.user/password 並重啟 Fabric。
# 查看伺服器列表(初始均為 SECONDARY) mysqlfabric group lookup_servers my_group # 查看健康詳情 mysqlfabric group health my_group
GRANT REPLICATION SLAVE ON *.* TO 'fabric'@'172.17.0.%' IDENTIFIED BY 'fabric@456';
所有節點均需執行(含 Primary 自身),授權後 Slave_IO_Running: Yes、Seconds_Behind_Master: 0、Auto_Position: 1,複製正常。
FAULTY 狀態不可直接轉 SECONDARY,需先 mysqlfabric server set_status <uuid> spare 再提升。group promote,Fabric 會依延遲、binlog 完整性選新 Primary。完成:實例 GTID 配置、Fabric 狀態存儲、高可用組建立、Primary 提升、複製授權修復。下篇將覆蓋應用端連接器整合、讀寫分離驗證、分片規則配置及故障演練腳本。