Ochestrator是MySQL Replication(复制)的拓扑管理与可视化工具;它支持:
1. 检查和审查复制集群
2. 安全拓扑重构
3. 整洁的拓扑可视化
4. 复制问题可视化
5. 通过简单的拖拽操作实现对拓扑的修改
6. 维护模式声明与执行
7.审计
8. 等等(还有更多的功能与特性)

Orchestrator的源码位于:
https://github.com/github/orchestrator.git

Orchestrator,在后端需要有MySQL后者SQLite,以便于存储管理数据。

环境说明

概览:
操作系统:RHEL 7.4
MySQL:8.0.15
Java:1.8.0_131

在MySQL+Orchestrator架构中的角色:
Ochestrator:
hostname: ochestrator
ip: 192.168.6.133
包含一个Orchestrator的后端数据库:MySQL

MySQL
主Master:
hostname: mysql1
ip: 192.168.6.130

从Slave – 1:
hostname: mysql2
ip: 192.168.6.131

从Slave – 2:
hostname: mysql3
ip: 192.168.6.132

操作系统,通用配置

文件:/etc/hosts

关闭SELINUX

防火墙:

操作系统版本:

MySQL数据库版本:

Step【1】,MySQL:GTID

首先,检查各个节点上(MySQL节点,而非Orchestrator的节点)的MySQL服务状态:

节点:主:mysql1

节点:从:mysql2

节点:从:mysql3

然后,停掉上面三个服务器,并备份原配置文件【/etc/my.cnf】,修改新的配置文件(这一部分,在各个服务器上配置一样,因此,仅演示其中一个服务器上的操作)

上面配置中,需要注意的是其中【server-id / report_host】不同节点间,需要不同。
并且,在Orchestrator中,report_host,必须配置。

然后,重新启动MySQL节点的MySQL服务,以应用最新的配置文件的配置【/etc/my.cnf】

修改默认生成的临时随机口令:

查看一下配置好的GTID的配置:

这样,GTID就配置好了。

Step【2】,MySQL:复制(Replication)
接下来,配置复制(Replication),也就是主从(Master and Slave)

主节点:MySQL1
创建复制账号:repl@’%’

如上,创建了一个用于复制的用户:
repl@’%’
口令是:
Repl@Me1234

从节点:
mysql2
mysql3

配置从节点基于GTID的自动定位;由于有两个从节点,下面,只演示在其中一个节点上的操作:

可以看到,这样主从复制就配置好了。

然后,就可以在主节点上看到从库的记录信息:

Orchestrator:配置后端数据库

节点【orchestrator】
创建后端数据库,并授权:

上面创建了一个Orchestrator的用户:
orchestrator
口令:Orchestrator@123

Orchestrator的下载地址:
Releases · github/orchestrator https://github.com/github/orchestrator/releases

这里,我下载的是:3.0.14

将下载好的介质,上传到服务器【Orchestrator】节点上:

执行安装:

对Orchestrator做配置

启动服务,Orchestrator:

这个过程中可以看到日志:

然后,可以看看Orchestrator的后台数据库的状态:

然后,就可以通过浏览器访问Orchestrator了:
URL:
http://192.168.6.133:3000/web/clusters

可以看到,当前,Orchestrator中,没有任何记录。
因此,我们需要为Orchestrator添加MySQL的集群的节点信息。
但是,继续操作前,根据前面Orchestrator的配置文件的配置,在MySQL的主节点上创建Orchestrator用户:

节点主:mysql1

由于我们是在主库做的配置,所以Orchestrator的访问用户的配置会自动的被同步到两个从库上。

Orchestrator中添加集群:

也可以通过命令行实现:

这个过程的日志:

然后,就可以在Orchestrator的WEB页面上看到MySQL的状态了:

可以从图中很清晰的看到:
1. MySQL1,是主库
2. MySQL2,正在与主库同步
3. MySQL3,当前与主库的同步状态有问题

来看看真实的情况:

节点,主:mysql1

节点,从:mysql2