☰
orchestrator 安装完全指南:从零部署 MySQL 复制拓扑管理工具
2026/10/12 5:21:19 网站建设 项目流程
  • 后端
  • 数据库

【免费下载链接】orchestrator

MySQL replication topology management and HA

项目地址:https://gitcode.com/gh_mirrors/or/orchestrator
点击查看免费下载

本指南以官方安装文档 docs/install.md 为核心,系统讲解 orchestrator 的手动安装、后端 MySQL 初始化、拓扑账号授权与核心配置编写等完整流程,并深入仓库源码、示例配置与进程管理脚本补充实现细节。读完本文,你将掌握通过二进制包/RPM/DEB 三种方式安装 orchestrator、搭建并授权后端数据库、为所有 MySQL 拓扑节点创建监控账号,以及正确配置orchestrator.conf.json并启动服务,为后续的拓扑发现与故障恢复奠定基础。

说明:本文讨论的是手动安装方式。若你的目标是生产环境部署(共享后端数据库或 Raft 集群的高可用方案),请参见 部署指南 与 高可用方案。

安装前准备与总体假设

正式动手之前,先明确安装的核心假设:

  • 本文假设orchestrator二进制与后端 MySQL 运行在同一台机器上,因此配置中后端地址使用127.0.0.1;若两者分离,请将127.0.0.1替换为后端 MySQL 的实际主机名。
  • 配置中的orch_backend_password、orch_topology_password等为占位符,请替换为你自己的强密码。
  • orchestrator 需要两类 MySQL 账号,职责截然不同:
    1. 后端(backend)账号:orchestrator 自身读写状态库所用(数据库orchestrator);
    2. 拓扑(topology)账号:orchestrator 用于探测、巡检并操作你所有生产 MySQL 拓扑实例的账号。

理解这两类账号的区分,是后续所有配置的基础。

第一步:安装 orchestrator 二进制与文件

安装方式有四种,任选其一。无论哪种方式,程序最终都会安装到/usr/local/orchestrator目录。

方式一:从 tarball 压缩包解压

从官方 Release 页面下载压缩包后,解压安装:

sudo mkdir -p /usr/local sudo cd /usr/local sudo tar xzfv orchestrator-1.0.tar.gz

方式二:从 RPM 安装(适用于 RHEL/CentOS 系)

RPM 包安装后同样位于/usr/local/orchestrator:

sudo rpm -i orchestrator-1.0-1.x86_64.rpm

方式三:从 DEB 安装(适用于 Debian/Ubuntu 系)

sudo dpkg -i orchestrator_1.0_amd64.deb

方式四:从软件仓库安装

orchestrator 的打包版本可从其官方 packagecloud 仓库获取,便于纳入企业内部的包管理(yum/apt)体系,实现版本统一管理与自动升级。

从源码结构看,主程序入口位于 go/cmd/orchestrator/main.go,构建后的单一二进制即包含命令行(cli模式)与 HTTP 服务(http模式)两种运行形态,仓库根目录的 build.sh 及 script/ 目录提供了打包构建脚本。

第二步:搭建后端 MySQL 数据库

orchestrator 需要一个后端数据库来持久化拓扑信息、审计记录与故障恢复状态。默认后端为 MySQL(也支持 SQLite,见下文)。

登录你的 MySQL 服务器,执行以下 SQL:

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

这里创建了专用库orchestrator与专用账号orchestrator,并将该库的全部权限授予此账号。orchestrator 会在首次启动时自动完成后端库表结构的创建与版本化升级——这一机制在 go/db/ 目录的generate_base.go、generate_patches.go等源码中体现,因此该账号对orchestrator库需要具备建表、写数据等完整权限。

后端凭据的两种配置写法

配置文件中,后端连接参数以MySQLOrchestrator*为前缀(区别于拓扑连接参数MySQLTopology*):

{ "MySQLOrchestratorHost": "127.0.0.1", "MySQLOrchestratorPort": 3306, "MySQLOrchestratorDatabase": "orchestrator", "MySQLOrchestratorUser": "orchestrator", "MySQLOrchestratorPassword": "orch_backend_password" }

对应参数说明:

配置项说明
MySQLOrchestratorHost后端 MySQL 主机地址,分离部署时改为实际主机名
MySQLOrchestratorPort后端 MySQL 端口,默认3306
MySQLOrchestratorDatabase后端数据库名,默认orchestrator
MySQLOrchestratorUser/MySQLOrchestratorPassword后端账号与密码

安全进阶:除了明文写在 JSON 里,官方还支持将凭据外置到 my.cnf 风格的文件(MySQLOrchestratorCredentialsConfigFile),详见 后端配置。其格式如下,其中user或password既可直接写明文,也可通过环境变量(如password=${ORCHESTRATOR_PASSWORD})取值,避免敏感凭据落入配置文件:

[client] user=orchestrator_srv password=${ORCHESTRATOR_PASSWORD}

备选后端:SQLite

若只是试用、单机部署或不想维护独立后端库,可将后端切换为内嵌的 SQLite:

{ "BackendDB": "sqlite", "SQLite3DataFile": "/var/lib/orchestrator/orchestrator.db" }
  • BackendDB取"sqlite"时启用 SQLite 后端(默认后端是 MySQL);IsSQLite()与IsMySQL()的判断逻辑见 go/config/config.go。
  • SQLite3DataFile指向数据文件路径:若文件不存在,orchestrator 会自动创建,但运行用户必须对该路径具备写权限。
  • 仓库提供的 conf/orchestrator-sample-sqlite.conf.json 即完整 SQLite 版示例配置,CI 环境配置 conf/orchestrator-ci-env.conf.json 也使用 SQLite 后端(数据文件位于/tmp/orchestrator.sqlite3),可作为快速上手的参考。

第三步:为所有 MySQL 拓扑实例授予 orchestrator 访问权限

要让 orchestrator 能发现并持续监控你的复制拓扑,必须在每一台拓扑 MySQL 上(通常先在各个主库执行)创建拓扑账号。现阶段要求所有拓扑使用同一账号(同名、同密码):

CREATE USER 'orchestrator'@'orch_host' IDENTIFIED BY 'orch_topology_password'; GRANT SUPER, PROCESS, REPLICATION SLAVE, RELOAD ON *.* TO 'orchestrator'@'orch_host'; GRANT SELECT ON mysql.slave_master_info TO 'orchestrator'@'orch_host'; GRANT SELECT ON ndbinfo.processes TO 'orchestrator'@'orch_host'; -- 仅 NDB Cluster 需要

将orch_host替换为 orchestrator 所在机器的主机名(也可按需使用通配符),并妥善选择密码。各权限的用途如下:

权限用途
SUPER执行CHANGE MASTER、START/STOP SLAVE、RESET SLAVE等复制控制操作
PROCESS在SHOW PROCESSLIST中查看副本(replica)进程状态
REPLICATION SLAVE执行SHOW SLAVE HOSTS枚举副本,以及为 Pseudo-GTID 扫描二进制日志
RELOAD执行RESET SLAVE等操作
SELECT ON mysql.slave_master_infoMySQL 5.6+ 且使用master_info_repository = 'TABLE'时,允许 orchestrator 在需要时读取复制凭据
SELECT ON ndbinfo.processes仅 NDB Cluster 需要

随后在配置文件中对齐拓扑凭据:

{ "MySQLTopologyUser": "orchestrator", "MySQLTopologyPassword": "orch_topology_password" }

关于拓扑发现权限更完整的集合(含REPLICATION CLIENT、Group Replication 所需的performance_schema.replication_group_members等),可参考 基础发现配置。orchestrator 会按InstancePollSeconds指定的间隔(示例配置中为5秒)轮询探测每个实例,见 go/config/config.go。

第四步:编写并放置 orchestrator 配置文件

orchestrator 使用 JSON 格式的配置文件。从源码 go/cmd/orchestrator/main.go 可以看到,配置文件的搜索顺序为:

  1. /etc/orchestrator.conf.json
  2. 二进制相对路径下的conf/orchestrator.conf.json
  3. 当前目录下的orchestrator.conf.json

从实现看(go/config/config.go 的Read函数),多个配置文件会按顺序依次读取并逐层覆盖,后读入的文件可覆盖前面的同名配置项。若通过--config=/path/to/config.file显式指定,则只读取该文件(ForceRead,见 go/config/config.go)。

安装包内附带两个开箱即用的示例文件,位于/usr/local/orchestrator下:

  • orchestrator-sample.conf.json:MySQL 后端版完整示例(仓库对应 conf/orchestrator-sample.conf.json);
  • orchestrator-sample-sqlite.conf.json:SQLite 后端版示例(仓库对应 conf/orchestrator-sample-sqlite.conf.json)。

推荐做法:以示例为基线,按前两步填好后端与拓扑凭据,生成自己的orchestrator.conf.json,并建议将其放置到/etc/orchestrator.conf.json(两个位置均有效)。由于该文件包含数据库密码等敏感信息,请务必收紧文件权限,仅允许必要用户读取。

示例配置中值得关注的基础项(均可在 conf/orchestrator-sample.conf.json 中看到实际取值):

配置项示例值说明
ListenAddress:3000HTTP 监听地址与端口
Debugtrue调试模式,输出更详细日志
DefaultInstancePort3306命令行未指定端口时默认使用的实例端口
InstancePollSeconds5每个实例的轮询间隔(秒)
DiscoverByShowSlaveHoststrue优先通过SHOW SLAVE HOSTS发现副本
HostnameResolveMethoddefault主机名归一化方式(none/default/cname)
MySQLHostnameResolveMethod@@hostname通过 MySQL 变量归一化主机名的方式
ReasonableReplicationLagSeconds10超过该值视为复制延迟问题
DetectClusterAliasQuerySELECT SUBSTRING_INDEX(@@hostname, '.', 1)探测集群别名的查询

第五步:启动 orchestrator 并确认运行形态

orchestrator 有两种运行形态:

  1. 命令行 / HTTP API 模式:只需orchestrator二进制本身即可运行全部 CLI 命令与 HTTP API。
  2. Web 界面模式:若要使用拓扑可视化、拖拽式拓扑调整等丰富界面,还需要resources目录及其全部子内容(HTML 模板、静态资源)。从源码看,Web 渲染依赖resources目录中的模板与静态文件(go/app/http.go),因此不要随意移动或删除该目录——安装包默认已就位,不确定时无需改动。

启动服务(http子命令开启持续发现与 Web 服务):

cd /usr/local/orchestrator ./orchestrator --verbose http

若使用 systemd,仓库提供了现成的服务单元 etc/systemd/orchestrator.service:

[Unit] Description=orchestrator: MySQL replication management and visualization After=syslog.target network.target mysqld.service mysql.service [Service] Type=simple WorkingDirectory=/usr/local/orchestrator ExecStart=/usr/local/orchestrator/orchestrator http EnvironmentFile=-/etc/sysconfig/orchestrator ExecReload=/bin/kill -HUP $MAINPID LimitNOFILE=16384

同样,SysV init 风格脚本见 etc/init.d/orchestrator.bash,它默认以--verbose http启动,并通过ulimit -n 16384提高文件描述符上限,避免大规模环境下出现dial tcp ... connect: cannot assign requested address之类的连接错误。

启动后即可:

  • 通过http://<orchestrator主机>:3000访问 Web 界面(首次需在web/discover页面提交一个实例以触发拓扑发现,参见 快速上手);
  • 通过 CLI 验证安装是否成功,例如orchestrator -c clusters查看已发现的集群,或orchestrator -c discover -i <host>:<port>手动发现新实例,完整命令清单见 命令行执行指南。

安装验证与常见问题排查

安装完成后,建议按以下顺序自检:

  1. 后端连通性:orchestrator -c clusters若能正常返回集群列表(或为空列表而不报错),说明后端库连接与配置正确;若报连接失败,优先检查MySQLOrchestrator*参数与后端账号权限。
  2. 拓扑探测:orchestrator -c discover -i your.mysql.instance:3306后,再用orchestrator -c topology -i your.mysql.instance:3306查看 ASCII 拓扑树;若发现失败,检查MySQLTopology*凭据及各拓扑节点上的授权是否完整。
  3. 日志级别:遇到问题时可用--debug --stack提升日志详细度并输出堆栈,便于定位(参见 go/cmd/orchestrator/main.go)。

常见问题速查:

现象可能原因
后端连接失败MySQLOrchestratorHost/Port/User/Password不匹配,或后端账号缺少对orchestrator库的权限
拓扑发现失败拓扑节点上未创建账号、权限不全(缺REPLICATION SLAVE、PROCESS等),或MySQLTopologyUser/Password与授权不一致
Web 界面 404 / 资源缺失resources目录缺失或被移动,无法渲染模板与静态资源
端口占用ListenAddress配置的:3000已被其他进程占用

下一步:从“装好”走向“用好”

完成安装与配置后,你已拥有一个可运行、可发现拓扑的 orchestrator。接下来官方推荐按 部署指南 中的步骤逐步深入:

  • 自动发现:通过 cron 周期性调用orchestrator-client -c discover让新主机自动纳入监控(见 orchestrator-client 使用说明);
  • 提升规则:用register-candidate为服务器声明prefer/prefer_not等故障切换候选偏好(见 部署指南 与 命令帮助 相关章节);
  • 故障检测与恢复:阅读 故障检测 与 拓扑恢复 了解自动化恢复机制;
  • 高可用:生产环境建议采用 Raft 集群或共享后端方案,参见 部署-共享后端、部署-Raft 与 高可用方案。

本文涉及的全部配置文件、源码与文档均可在仓库根目录下找到:conf/ 存放示例配置,go/ 存放源码实现,docs/ 存放全部官方文档,etc/ 存放进程管理脚本。

  • 后端
  • 数据库

【免费下载链接】orchestrator

MySQL replication topology management and HA

项目地址:https://gitcode.com/gh_mirrors/or/orchestrator
点击查看免费下载
上一篇:Windows虚拟显示器驱动终极指南:5步创建专业级虚拟显示环境
下一篇:ESP-IDF 温度传感器驱动完全指南:从 API 使用到中断监控与 ETM 联动

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询