- 后端
- 数据库
【免费下载链接】orchestrator
MySQL replication topology management and HA
本指南以官方安装文档 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 账号,职责截然不同:
- 后端(backend)账号:orchestrator 自身读写状态库所用(数据库
orchestrator); - 拓扑(topology)账号:orchestrator 用于探测、巡检并操作你所有生产 MySQL 拓扑实例的账号。
- 后端(backend)账号:orchestrator 自身读写状态库所用(数据库
理解这两类账号的区分,是后续所有配置的基础。
第一步:安装 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_info | MySQL 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 可以看到,配置文件的搜索顺序为:
/etc/orchestrator.conf.json- 二进制相对路径下的
conf/orchestrator.conf.json - 当前目录下的
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 | :3000 | HTTP 监听地址与端口 |
Debug | true | 调试模式,输出更详细日志 |
DefaultInstancePort | 3306 | 命令行未指定端口时默认使用的实例端口 |
InstancePollSeconds | 5 | 每个实例的轮询间隔(秒) |
DiscoverByShowSlaveHosts | true | 优先通过SHOW SLAVE HOSTS发现副本 |
HostnameResolveMethod | default | 主机名归一化方式(none/default/cname) |
MySQLHostnameResolveMethod | @@hostname | 通过 MySQL 变量归一化主机名的方式 |
ReasonableReplicationLagSeconds | 10 | 超过该值视为复制延迟问题 |
DetectClusterAliasQuery | SELECT SUBSTRING_INDEX(@@hostname, '.', 1) | 探测集群别名的查询 |
第五步:启动 orchestrator 并确认运行形态
orchestrator 有两种运行形态:
- 命令行 / HTTP API 模式:只需
orchestrator二进制本身即可运行全部 CLI 命令与 HTTP API。 - 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>手动发现新实例,完整命令清单见 命令行执行指南。
安装验证与常见问题排查
安装完成后,建议按以下顺序自检:
- 后端连通性:
orchestrator -c clusters若能正常返回集群列表(或为空列表而不报错),说明后端库连接与配置正确;若报连接失败,优先检查MySQLOrchestrator*参数与后端账号权限。 - 拓扑探测:
orchestrator -c discover -i your.mysql.instance:3306后,再用orchestrator -c topology -i your.mysql.instance:3306查看 ASCII 拓扑树;若发现失败,检查MySQLTopology*凭据及各拓扑节点上的授权是否完整。 - 日志级别:遇到问题时可用
--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
相关推荐
MiroThinker v0.1到v1.5性能飞跃:GAIA-Text-103分数从57.3到81.9的突破
MiroThinker v0.1到v1.5性能飞跃:GAIA Text 103分数从57.3到81.9的突破 MiroThinker是一款开源智能体模型,专为深
人工智能大模型AI Agent深度研究Agent 框架MCP 服务工具调用模型评测orchestrator 命令行实战:用 `orchestrator -c` 管理 MySQL 复制拓扑
orchestrator 命令行实战:用 orchestrator c 管理 MySQL 复制拓扑 orchestrator 是 MySQL 复制拓扑管理与高可
后端数据库bdd100k检测+跟踪评测入门:用motmetrics计算MOTA与IDF1指标
bdd100k检测+跟踪评测入门:用motmetrics计算MOTA与IDF1指标 bdd100k (Berkeley Deep Drive)是目前规模最大的开
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考