推薦一款MySQL高可用復(fù)制管理工具——Orchestrator介紹
背景
在MySQL高可用架構(gòu)中,目前使用比較多的是Percona的PXC,Galera以及MySQL 5.7之后的MGR等,其他的還有的MHA,今天介紹另一個比較好用的MySQL高可用復(fù)制管理工具:Orchestrator(orch)。
Orchestrator
這是一款go編寫的MySQL高可用性和復(fù)制拓?fù)涔芾砉ぞ?,支持?fù)制拓?fù)浣Y(jié)構(gòu)的調(diào)整,自動故障轉(zhuǎn)移和手動主從切換等。后端數(shù)據(jù)庫用MySQL或SQLite存儲元數(shù)據(jù),并提供Web界面展示MySQL復(fù)制的拓?fù)潢P(guān)系及狀態(tài),通過Web可更改MySQL實例的復(fù)制關(guān)系和部分配置信息,同時也提供命令行和api接口,方便運維管理。
相對比MHA來看最重要的是解決了管理節(jié)點的單點問題,其通過raft協(xié)議保證本身的高可用。GitHub的一部分管理也在用該工具進行管理。
Orchestrator大致的特點有:
① 自動發(fā)現(xiàn)MySQL的復(fù)制拓?fù)?,并且在web上展示。
② 重構(gòu)復(fù)制關(guān)系,可以在web進行拖圖來進行復(fù)制關(guān)系變更。
③ 檢測主異常,并可以自動或手動恢復(fù),通過Hooks進行自定義腳本。
④ 支持命令行和web界面管理復(fù)制。
安裝
根據(jù)需要下載合適的包進行安裝,下載好deb包后,需要安裝jq的依賴包(apt-get install jq)。安裝完成之后,相應(yīng)的目錄為:
- /usr/local/orchestrator
- -rwxr-xr-x 1 root root 20M 1月 16 21:49 orchestrator
- -rw-r--r-- 1 root root 5.1K 1月 16 21:49 orchestrator-sample.conf.json
- -rw-r--r-- 1 root root 4.4K 1月 16 21:49 orchestrator-sample-sqlite.conf.json
- drwxr-xr-x 7 root root 4.0K 2月 15 19:03 resources
- orchestrator:應(yīng)用程序
- *.json:默認(rèn)的配置模板
- resources:orchestrator相關(guān)的文件:client、web、偽GTID等相關(guān)文件。
配置
這里列出說明幾個比較重要的參數(shù):
- ListenAddress:web界面的http端口
- MySQLOrchestratorHost:orch后端數(shù)據(jù)庫地址
- MySQLOrchestratorPort:orch后端數(shù)據(jù)庫端口
- MySQLOrchestratorDatabase:orch后端數(shù)據(jù)庫名
- MySQLOrchestratorUser:orch后端數(shù)據(jù)庫用戶名(明文)
- MySQLOrchestratorPassword:orch后端數(shù)據(jù)庫密碼(明文)
- MySQLOrchestratorCredentialsConfigFile:后端數(shù)據(jù)庫用戶名密碼的配置文件「 "MySQLOrchestratorCredentialsConfigFile": "/etc/mysql/orchestrator-backend.cnf" 」,格式:
- [client]
- user=orchestrator_srv
- password=${ORCHESTRATOR_PASSWORD}
- 后端MySQL數(shù)據(jù)庫的用戶權(quán)限需要是:
- CREATE USER 'orchestrator_srv'@'orc_host' IDENTIFIED BY 'orc_server_password';
- GRANT ALL ON orchestrator.* TO 'orchestrator_srv'@'orc_host';
- MySQLTopologyUser:被管理的MySQL的用戶(明文)
- MySQLTopologyPassword:被管理的MySQL的密碼(密文)
- MySQLTopologyCredentialsConfigFile:被管理的MySQL的用戶密碼配置文件「"/etc/mysql/orchestrator-topology.cnf"」,格式:
- [client]
- user=orchestrator_srv
- password=${ORCHESTRATOR_PASSWORD}
- 被管理MySQL數(shù)據(jù)庫的用戶權(quán)限需要是:
- CREATE USER 'orchestrator'@'orc_host' IDENTIFIED BY 'orc_topology_password';
- GRANT SUPER, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, RELOAD ON *.* TO 'orchestrator'@'orc_host';
- GRANT SELECT ON meta.* TO 'orchestrator'@'orc_host';
- GRANT SELECT ON ndbinfo.processes TO 'orchestrator'@'orc_host'; -- Only for NDB Cluster
運行部署
1. 開啟orchestrator
- ./orchestrator --debug --config=/etc/orchestrator.conf.json http
2. 把配置好的復(fù)制實例加入到orchestrator,因為orch可以自動發(fā)現(xiàn)整個拓?fù)涞乃袑嵗?,所以只需要添加任意一臺實例即可,如果沒有發(fā)現(xiàn)的話可以再添加。
在web上添加(導(dǎo)航里的Clusters -> Discover):
添加完成之后,最終的結(jié)構(gòu)圖如下:

總結(jié)
限于篇幅的原因,今天先對orchestrator做個整體的介紹。