MySQL主从复制是很多业务系统采用的数据库高可用基础方案,正常情况下主库负责处理写请求,从库同步主库数据承担读请求。当主库发生宕机时,需要快速将其中一个从库提升为新主库,同时让其他从库指向新主库,整个过程如果手动操作很容易出现失误,而Orchestrstrator可以自动完成这个流程。

MySQL主从复制基础配置
在部署Orchestrator之前,需要先完成MySQL主从复制的基础配置,所有节点需要满足以下前置条件:
- 所有MySQL实例版本建议一致,且开启binlog,server_id全局唯一
- 主库开启GTID模式,方便复制链路的管理和数据一致性校验
- 从库配置主库连接信息,开启复制进程
主库配置示例
主库的my.cnf配置需要包含以下内容:
[mysqld] server-id=1 log-bin=mysql-bin gtid_mode=ON enforce_gtid_consistency=ON binlog_format=ROW
从库配置示例
从库的my.cnf配置需要包含以下内容:
[mysqld] server-id=2 relay-log=relay-bin gtid_mode=ON enforce_gtid_consistency=ON read_only=ON
从库配置完成后,执行以下命令建立复制链路:
CHANGE MASTER TO MASTER_HOST='主库IP', MASTER_PORT=3306, MASTER_USER='复制用户', MASTER_PASSWORD='复制密码', MASTER_AUTO_POSITION=1; START SLAVE;
Orchestrator安装与基础配置
Orchestrator是用Go语言开发的MySQL复制拓扑管理工具,支持自动故障检测、主库切换、拓扑发现等功能,首先需要完成安装和基础配置。
安装Orchestrator
以Linux系统为例,可以通过官方提供的二进制包安装:
# 下载最新版本二进制包 wget https://github.com/openark/orchestrator/releases/download/v3.2.6/orchestrator-3.2.6-linux-amd64.tar.gz # 解压到指定目录 tar -zxvf orchestrator-3.2.6-linux-amd64.tar.gz -C /usr/local/ # 配置环境变量 echo 'export PATH=$PATH:/usr/local/orchestrator' >> /etc/profile source /etc/profile
Orchestrator核心配置
Orchestrator的配置文件为orchestrator.conf.json,需要配置MySQL后端存储和待管理的MySQL集群信息:
{
"MySQLOrchestratorHost": "127.0.0.1",
"MySQLOrchestratorPort": 3306,
"MySQLOrchestratorUser": "orchestrator_user",
"MySQLOrchestratorPassword": "orchestrator_pass",
"MySQLOrchestratorDatabase": "orchestrator",
"MySQLTopologyUser": "topology_user",
"MySQLTopologyPassword": "topology_pass",
"MySQLTopologyCredentialsConfigFile": "",
"DetectClusterAliasQuery": "SELECT cluster_name FROM cluster_alias WHERE cluster_alias = @@hostname",
"AutomaticFailover": true,
"FailoverPeriodBlockMinutes": 10
}
其中MySQLTopologyUser需要拥有所有被管理MySQL实例的SUPER、REPLICATION CLIENT权限,AutomaticFailover设置为true开启自动故障切换。
Orchestrator自动主库切换流程
当主库发生宕机时,Orchestrator会按照以下流程完成自动切换:
- Orchestrator的后台检测线程发现主库无法连接,经过多次重试确认主库故障
- 根据预设规则选择最优从库,优先选择数据最新、延迟最低的从库作为候选主库
- 将候选主库关闭只读模式,提升为新主库
- 自动调整其他从库的复制链路,指向新主库继续同步数据
- 记录切换日志,发送告警通知运维人员
手动触发切换测试
如果没有真实宕机场景,可以手动触发主库切换测试,验证Orchestrator的功能:
# 查看当前集群拓扑 orchestrator -c topology -i 主库IP:3306 # 手动触发主库切换 orchestrator -c force-master-failover -i 主库IP:3306
执行后可以通过topology命令查看新的主库信息,确认切换是否成功。
注意事项
使用Orchestrator管理主从复制切换时,需要注意以下几点:
- 所有MySQL实例需要开启GTID,避免切换后出现数据不一致问题
- Orchestrator本身需要做高可用,避免单点故障影响切换功能
- 切换前需要确认业务侧的连接池配置支持主库地址动态更新,或者通过中间件屏蔽主库地址变化
- 定期测试切换流程,确保故障发生时能够快速完成切换
Orchestrator的自动切换功能可以大幅降低MySQL主从复制主库宕机的恢复时间,但是需要结合业务场景做好前置配置和测试,才能发挥最大的作用。
MySQL主从复制Orchestrator主库切换修改时间:2026-06-24 13:45:33