orchestrator系列(一)--简介及安装

发布时间 2023-08-10 22:12:52作者: DBA札记

orchestrator是一款开源对MySQL复制提供高可用、拓扑的可视化管理工具,采用go语言编写,它能够主动发现当前拓扑结构和主从复制状态,支持MySQL主从复制拓扑关系的调整、支持MySQL主库故障自动切换(failover)、手动主从切换(switchover)等功能。

orchestrator后台依赖于MySQL存储元数据,能够提供Web界面展示MySQL集群的拓扑关系及实例状态,可以通过Web界面可更改MySQL实例的部分配置信息,同时也提供命令行和api接口,以便更加灵活的自动化运维管理。

相比于MHA,Orchestrator更加偏重于复制拓扑关系的管理,能够实现MySQL任一复制拓扑关系的调整,并在此基础上,实现MySQL高可用。

Orchestrator本身也可以部署多个节点,通过raft分布式一致性协议,保证其自身高可用性。

Orchestrator特性如下:

  1. 发现(discover)orchestrator主动搜寻MySQL拓扑并进行映射。它能读取基本的MySQL信息,例如复制状态和配置。即使遇到故障,也可以为MySQL环境的拓扑提供流畅的可视化效果,包括复制问题。
  2. 重构(Refactoring)orchestrator了解复制规则。它知道binlog文件:位置,GTID,伪GTID,Binlog服务器。重构复制拓扑可以是将副本拖放到另一个主副本下的问题。移动副本是安全的:orchestrator将拒绝非法的重构尝试。通过各种命令行选项可以实现细粒度的控制。
  3. 恢复(recover)orchestrator使用全面方法来检测主库故障和级联中间主库的故障。根据从拓扑本身获得的信息,它可以识别各种故障情况。可通过配置,orchestrator可以选择执行自动恢复(或允许用户选择手动恢复的类型)。在内部实现中间主库的恢复。orchestrator通过Hooks进行自定义脚本支持故障切换。

安装orchestrator(二进制方式,单点)

1 安装元数据库(略)并创建账户

CREATE DATABASE IF NOT EXISTS orchestrator;
CREATE USER 'orc_server_user'@'%' IDENTIFIED BY 'orc_server_password';
GRANT ALL PRIVILEGES ON `orchestrator`.* TO 'orc_server_user'@'%';

2 下载安装包并解压

wget https://github.com/openark/orchestrator/releases/download/v3.2.6/orchestrator-3.2.6-linux-amd64.tar.gz
tar -xvf orchestrator-3.2.6-linux-amd64.tar.gz -C /data/orchestrator_soft/

3 修改配置文件

cd /data/orchestrator_soft/usr/local/orchestrator
cp orchestrator-sample.conf.json orchestrator.conf.json
确认配置文件orchestrator.conf.json中的以下内容与元数据库配置相同
######################################
  "MySQLOrchestratorHost": "127.0.0.1",
  "MySQLOrchestratorPort": 3306,
  "MySQLOrchestratorDatabase": "orchestrator",
  "MySQLOrchestratorUser": "orc_server_user",
  "MySQLOrchestratorPassword": "orc_server_password"
########################################

4 启动

nohup ./orchestrator --config=/data/orchestrator_soft/usr/local/orchestrator/orchestrator.conf.json http &

5 在被纳管实例创建用户

方式一:创建用户在配置文件中配置

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
GRANT SELECT ON performance_schema.replication_group_members TO 'orchestrator'@'orc_host'; -- Only for Group Replication / InnoDB cluster
本测试案例
create user 'orc_client_user'@'%' identified by 'orc_client_password';
GRANT SUPER, PROCESS, REPLICATION SLAVE, REPLICATION CLIENT, RELOAD ON *.* TO 'orc_client_user'@'%';
GRANT SELECT ON orchestrator.* TO 'orc_client_user'@'%';
配置文件修改如下两处:
"MySQLTopologyUser": "orc_client_user",
"MySQLTopologyPassword": "orc_client_password",

方法二:配置文件

{
  "MySQLTopologyCredentialsConfigFile": "/etc/mysql/orchestrator-topology.cnf",
  "InstancePollSeconds": 5,
  "DiscoverByShowSlaveHosts": false,
}

cat /etc/mysql/orchestrator-topology.cnf
#######################################
[client]
user=orchestrator
password=orc_topology_password
#######################################

6 发现元数据实例 -- 必须要有被纳管用户(包括元数据库)

orchestrator-client 在/data/orchestrator_soft/usr/local/orchestrator/resources/bin目录下

方法一:界面(如下图)

方法二:命令行

./orchestrator-client -c discover -i VM-16-10-centos:3306
./orchestrator-client -c discover -i 10.206.16.10:3306

7 纳管(discover)一主一从实例

1 新建主从(略)
2 在主库新建纳管理账户--参考第5步
3 纳管(discover)

./orchestrator-client -c discover -i 10.206.16.5:3306 (任意库ip+端口即可)

8 显示被纳管的集群

./orchestrator-client -c all-instances

web界面

欢迎关注公众号:DBA札记,一起交流数据库技术。后台回复“交流群”可添加技术交流群。欢迎觉得读完本文有收获,可以转发给其他朋友,大家一起学习进步!

本文由mdnice多平台发布