Orchestrator介绍

Orchestrator(orch):go编写的MySQL高可用性和复制拓扑管理工具,支持复制拓扑结构的调整,自动故障转移和手动主从切换等。后端数据库用MySQL或SQLite存储元数据,并提供Web界面展示MySQL复制的拓扑关系及状态,通过Web可更改MySQL实例的复制关系和部分配置信息,同时也提供命令行和api接口,方便运维管理。相对比MHA来看最重要的是解决了管理节点的单点问题,其通过raft协议保证本身的高可用。GitHub的一部分管理也在用该工具进行管理。关于Orchestrator更详细的介绍可以看Github的介绍,大致的特点有:

① 自动发现MySQL的复制拓扑,并且在web上展示。

② 重构复制关系,可以在web进行拖图来进行复制关系变更。

③ 检测主异常,并可以自动或手动恢复,通过Hooks进行自定义脚本。

④ 支持命令行和web界面管理复制。

Orchestrator 安装

  1. Orchestrator下载地址
    https://github.com/openark/orchestrator/releases 我这里下载的是 orchestrator-3.2.6-1.x86_64.rpm
  2. Orchestrator 禁用 orchestrator服务要禁止吗_MySQL


  3. 下载后放入服务器自定义的目录下,然后执行以下命令
$ 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 禁用 orchestrator服务要禁止吗_数据库_02


orchestrator:应用程序

*.json:默认的配置模板

resources:orchestrator相关的文件:client、web、伪GTID等相关文件。

  1. 在自定义的目录(/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服务 分别在三台服务器

  1. mysql开启GTID
    可以参考 mysql在线开启/关闭GTID
  2. MySQL实例及主从结构
Master :192.168.1.16:3306
Slave1  :192.168.5.128:3306
Slave2  :192.168.5.129:3306
  1. hosts(位置:etc/hosts) 按需配置:
192.168.1.16 boo_mysql_1
192.168.5.128 boo_mysql_2
192.168.5.129 boo_mysql_3
创建账号
  1. 在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访问并赋予其权限,

  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管理界面

Orchestrator 禁用 orchestrator服务要禁止吗_Orchestrator 禁用_03


Orchestrator 禁用 orchestrator服务要禁止吗_Orchestrator 禁用_04