推薦一款MySQL高可用復制管理工具——Orchestrator介紹
背景
在MySQL高可用架構中,目前使用比較多的是Percona的PXC,Galera以及MySQL 5.7之后的MGR等,其他的還有的MHA,今天介紹另一個比較好用的MySQL高可用復制管理工具:Orchestrator(orch)。
Orchestrator
這是一款go編寫的MySQL高可用性和復制拓撲管理工具,支持復制拓撲結構的調整,自動故障轉移和手動主從切換等。后端數據庫用MySQL或SQLite存儲元數據,并提供Web界面展示MySQL復制的拓撲關系及狀態,通過Web可更改MySQL實例的復制關系和部分配置信息,同時也提供命令行和api接口,方便運維管理。
相對比MHA來看最重要的是解決了管理節點的單點問題,其通過raft協議保證本身的高可用。GitHub的一部分管理也在用該工具進行管理。
Orchestrator大致的特點有:
① 自動發現MySQL的復制拓撲,并且在web上展示。
② 重構復制關系,可以在web進行拖圖來進行復制關系變更。
③ 檢測主異常,并可以自動或手動恢復,通過Hooks進行自定義腳本。
④ 支持命令行和web界面管理復制。
安裝
根據需要下載合適的包進行安裝,下載好deb包后,需要安裝jq的依賴包(apt-get install jq)。安裝完成之后,相應的目錄為:
- /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:應用程序
- *.json:默認的配置模板
- resources:orchestrator相關的文件:client、web、偽GTID等相關文件。
配置
這里列出說明幾個比較重要的參數:
- ListenAddress:web界面的http端口
- MySQLOrchestratorHost:orch后端數據庫地址
- MySQLOrchestratorPort:orch后端數據庫端口
- MySQLOrchestratorDatabase:orch后端數據庫名
- MySQLOrchestratorUser:orch后端數據庫用戶名(明文)
- MySQLOrchestratorPassword:orch后端數據庫密碼(明文)
- MySQLOrchestratorCredentialsConfigFile:后端數據庫用戶名密碼的配置文件「 "MySQLOrchestratorCredentialsConfigFile": "/etc/mysql/orchestrator-backend.cnf" 」,格式:
- [client]
- user=orchestrator_srv
- password=${ORCHESTRATOR_PASSWORD}
- 后端MySQL數據庫的用戶權限需要是:
- 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數據庫的用戶權限需要是:
- 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. 把配置好的復制實例加入到orchestrator,因為orch可以自動發現整個拓撲的所有實例,所以只需要添加任意一臺實例即可,如果沒有發現的話可以再添加。
在web上添加(導航里的Clusters -> Discover):
添加完成之后,最終的結構圖如下:

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