MySQL Fabric 安裝及配置
- Fabric相關軟體需求
MySQL Server 5.6.17 or later
Python2 (2.6 or later)
Connector/Pythone 1.2.1 or later
Connector/J 5.1.27 or later - 安裝mysql fabric (utilities)
TAR包安裝 (本次使用版本為mysql-utilities 1.6)
unzip mysql-utilities-version.zip
cd mysql-utilities-version
python ./setup.py build
python ./setup.py install
RPM安裝
rpm -ivh mysql-utilities-version-el6.noarch.rpm - 安裝和啟動資料庫(Backing store和user database)
((安裝過程不再贅述)) - 建立使用者及設定權限
需要4種角色:Backing store user、Server user、 Backup and Restore user
Backing store就是用在Fabric Server的那個資料庫,Server即使用者資料庫,我個人認為Backup和Restore可以使用同一個使用者即可
Backing Store User:
CREATE USER 'fabric_store'@'localhost' IDENTIFIED BY 'password';
GRANT ALTER, CREATE, CREATE VIEW, DELETE, DROP, EVENT, INDEX, INSERT, REFERENCES, SELECT, UPDATE ON fabric.* TO 'fabric_store'@'localhost';
Server User:(這個使用者在故障轉移時會用到)
CREATE USER 'fabric_server'@'localhost' IDENTIFIED BY 'password';
GRANT DELETE, PROCESS, RELOAD, REPLICATION CLIENT, REPLICATION SLAVE, SELECT, SUPER, TRIGGER ON *.* TO 'fabric_server'@'localhost';GRANT ALTER, CREATE, DELETE, DROP, INSERT, SELECT, UPDATE ON fabric.* TO 'fabric_server'@'localhost';(2016/01/15更新,v1.5.6中一定要指定對mysql_fabric.*的權限,雖然沒這個資料庫但它是寫在源碼裡指定的…)
GRANT ALTER, CREATE, DELETE, DROP, INSERT, SELECT, UPDATE ON mysql_fabric.* TO 'fabric_server'@'localhost';
Backup User:
CREATE USER 'fabric_backup'@'localhost' IDENTIFIED BY 'password';
GRANT EVENT, EXECUTE, REFERENCES, SELECT, SHOW VIEW, TRIGGER ON *.* TO 'fabric_backup'@'localhost';
Restore User:
CREATE USER 'fabric_restore'@'localhost' IDENTIFIED BY 'password';
GRANT ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, CREATE TABLESPACE, CREATE VIEW, DROP, EVENT, INSERT, LOCK TABLES, REFERENCES, SELECT, SUPER, TRIGGER ON *.* TO 'fabric_restore'@'localhost'; - 配置fabric.cfg參數檔
參考官網
http://dev.mysql.com/doc/mysql-fabric/1.6/en/fabric-configuration-file.html - 設定mysqlfabric
mysqlfabric --config=config/fabric.cfg manage setup
設定完可以透過mysqlshow來查看目前Fabric配置是否正確
mysqlshow -ufabric_store -p --protocol=tcp -P3306 fabric
(mysqlfabric 1.5.6 用--protocol預設走IPv6,要走IPv4直接指定-h or --host即可) - 啟動Fabric
mysqlfabric --config=config/fabric.cfg manage start > /var/log/fabric.log &
檢查Fabric啟動狀態
mysqlfabric --config=config/fabric.cfg manage ping
正常會出現下圖訊息:
- 建立高可用(High-Availability)群組
mysqlfabric <grp><cmd> <grp_name>
mysqlfabric --config=config/fabric.cfg group create mygroup1
mysqlfabric --config=config/fabric.cfg group add mygroup1 localhost:3316
mysqlfabric --config=config/fabric.cfg group add mygroup1 localhost:3326
mysqlfabric --config=config/fabric.cfg group add mygroup1 localhost:3336
mysqlfabric --config=config/fabric.cfg group add mygroup1 localhost:3346
確認所有的server是否有正確加入群組中
mysqlfabric --config=config/fabric.cfg group lookup_servers mygroup1
其結果如下圖:
或是執行health來檢查狀態
mysqlfabric --config=config/fabric.cfg group health mygroup1 - 推舉(Promote)群組裡其中一台Server來當主伺服器(Primary)
mysqlfabric --config=config/fabric.cfg group promote mygroup1 確認狀態是否有正確的推舉一台伺服器為主伺服器
mysqlfabric --config=config/fabric.cfg group lookup_servers mygroup1
其結果如下圖: - 活化故障檢測器 (Activating a failure detector)
mysqlfabric --config=config/fabric.cfg group activate mygroup1 - 故障測試
關閉Primary伺服器,查看是否有自動切換 - 將故障伺服器重新加入Secondary
若是資料庫有損毀的狀況,記得一定要先將完整的資料從Master中備份並還原後再開始設定,否則會無法設定複製
確認資料都還原後開始執行rejoin動作
mysqlfabric --config=config/fabric.cfg server set_status localhost:3336 spare
mysqlfabric --config=config/fabric.cfg server set_status localhost:3336 secondary - 註記…
在fabric.cfg裡面會看到protocol.xmlrpc和protocol.mysql兩個區塊的設定,一般程式是走protocol.xmlrpc(目前只支援java和python)因此是連32274這個埠號,至於protocol.mysql走的32275官方文件是說透過mysql這個終端工具是走這個埠,但進入之後對它執行任何語法都沒有什麼反應,呃…目前還不太清楚這個埠進去後是會到哪去。 - 2016/01/15更新
protocol.mysql這個是要給MySQL Workbench使用的,它的使用者帳號密碼會存在Fabric資料庫下的users裡面,workbench連線設定如下:選擇MySQL Fabric Management Node 如果可以連得上會顯示這個樣子
可以看到Fabric下面管理幾個節點及Primayr, Secondary的分佈 狀況,只要這些節點有設好權限,也可以直接登入DB進行管理 |
留言
張貼留言