Orchestrator介绍
Orchestrator(orch):go编写的MySQL高可用性和复制拓扑管理工具,支持复制拓扑结构的调整,自动故障转移和手动主从切换等。后端数据库用MySQL或SQLite存储元数据,并提供Web界面展示MySQL复制的拓扑关系及状态,通过Web可更改MySQL实例的复制关系和部分配置信息,同时也提供命令行和api接口,方便运维管理。相对比MHA来看最重要的是解决了管理节点的单点问题,其通过raft协议保证本身的高可用。GitHub的一部分管理也在用该工具进行管理。关于Orchestrator更详细的介绍可以看Github的介绍,大致的特点有:
① 自动发现MySQL的复制拓扑,并且在web上展示。
② 重构复制关系,可以在web进行拖图来进行复制关系变更。
③ 检测主异常,并可以自动或手动恢复,通过Hooks进行自定义脚本。
④ 支持命令行和web界面管理复制。
Orchestrator 安装
- Orchestrator下载地址
https://github.com/openark/orchestrator/releases 我这里下载的是 orchestrator-3.2.6-1.x86_64.rpm - 下载后放入服务器自定义的目录下,然后执行以下命令
$ yum -y install jq
$ rpm ivh orchestrator-3.2.3-1.x86_64.rpm
准备中... ################################# [100%]
正在升级/安装...
1:orchestrator-1:3.2.3-1 ################################# [100%]
......
$ rpm -ql orchestrator
/etc/systemd/system/orchestrator.service
/usr/local/orchestrator/orchestrator
/usr/local/orchestrator/orchestrator-sample-sqlite.conf.json
/usr/local/orchestrator/orchestrator-sample.conf.json
/usr/local/orchestrator/resources/bin/orchestrator-client
.....
安装完成之后,相应的目录为:
/usr/local/orchestrator
orchestrator:应用程序
*.json:默认的配置模板
resources:orchestrator相关的文件:client、web、伪GTID等相关文件。
- 在自定义的目录(/etc/mysql)下创建
orchestrator.conf.json
配置文件,用于配置 Orchestrator
配置文件主要内容:
"MySQLTopologyUser": "boo", -- 被管理的MySQL的用户
"MySQLTopologyPassword": "boo123456", -- 被管理的MySQL的密码
"MySQLOrchestratorHost": "127.0.0.1", -- orch后端数据库(orchestrator)地址 与 orchestrator在一个服务器
"MySQLOrchestratorPort": 3306,
"MySQLOrchestratorDatabase": "orchestrator", -- orch后端数据库名
"MySQLOrchestratorUser": "boo_orch", -- orch后端服务数据库用户名(明文)
"MySQLOrchestratorPassword": "boo_orch123456", -- orch后端服务数据库密码(明文)
完整的配置文件可在这里获取:
运行部署
服务器环境:
三个mysql服务 分别在三台服务器
- mysql开启GTID
可以参考 mysql在线开启/关闭GTID - MySQL实例及主从结构
Master :192.168.1.16:3306
Slave1 :192.168.5.128:3306
Slave2 :192.168.5.129:3306
- hosts(位置:etc/hosts) 按需配置:
192.168.1.16 boo_mysql_1
192.168.5.128 boo_mysql_2
192.168.5.129 boo_mysql_3
创建账号
- 在orchestrator后端服务数据库(192.168.1.16)创建账号 , 用于orchestrator后台服务访问orchestrator数据库
CREATE USER 'boo_orch'@'127.0.0.1' IDENTIFIED BY 'boo_orch123456';
GRANT ALL ON orchestrator.* TO 'boo_orch'@'127.0.0.1';
orchestrator服务跟数据库在同一服务器上,所以创建用户只允许127.0.0.1访问并赋予其权限,
- 在被管理的数据库(master、slave)中创建账号,用于主从复制数据交互
CREATE USER 'boo'@'%' IDENTIFIED BY 'boo123456';
GRANT SUPER, PROCESS, REPLICATION SLAVE, RELOAD ON *.* TO 'boo'@'%';
GRANT SELECT ON mysql.slave_master_info TO 'boo'@'%';
GRANT SELECT ON meta.* TO 'boo'@'orc_host';
配置主从库
按照 上面 “MySQL实例及主从结构”将其配置成 一主二从即可
mysql主从配置可以参考 mysql数据库主从同步 注意不要重复创建用户
开启
./orchestrator --debug --config=/etc/mysql/orchestrator.conf.json http
运行报错: FATAL Error 1049: Unknown database 'orchestrator'
说明缺少 “orchestrator” 数据库,在 5.128上创建 orchestrator 数据库
运行报错:The MySQL server is running with the --read-only option so it cannot execute this statement
给数据库用户 boo_orch 添加数据库操作权限
在浏览器里输入orchestrator服务所在服务器IP加端口(http://192.168.1.16:3000)进入到Web管理界面