当前位置: 首页 > news >正文

CentOS 7离线安装Orchestrator实现MySQL高可用完整步骤

CentOS 7离线安装Orchestrator实现MySQL高可用完整指南

前言

在无法连接互联网的服务器环境中部署Orchestrator,需要提前准备好所有安装包和依赖。本文将详细介绍如何在CentOS 7上通过离线方式安装Orchestrator,并配置一套完整的高可用MySQL主从复制环境。


一、环境规划

1.1 服务器规划

服务器角色主机名IP地址服务组件
Node1hostmysql80192.168.56.80MySQL 3306(主)、MySQL 3307(orch后端)、Orchestrator
Node2hostmysql61192.168.56.61MySQL 3306(从)、MySQL 3307(orch后端)、Orchestrator
Node3hostmysql60192.168.56.60MySQL 3306(从)、MySQL 3307(orch后端)、Orchestrator

1.2 软件版本

  • 操作系统:CentOS 7 (内核3.10+)
  • MySQL版本:MySQL 5.7 (支持GTID)
  • Orchestrator版本:3.1.4

二、准备工作(在有互联网的机器上执行)

2.1 下载Orchestrator安装包

# 创建下载目录mkdir~/orchestrator-offlinecd~/orchestrator-offline# 下载Orchestrator RPM包wgethttps://github.com/openark/orchestrator/releases/download/v3.1.4/orchestrator-3.1.4-1.x86_64.rpmwgethttps://github.com/openark/orchestrator/releases/download/v3.1.4/orchestrator-client-3.1.4-1.x86_64.rpm# 下载依赖包# 方法1:使用yumdownloader(推荐)yuminstall-yyum-utils yumdownloader--resolve--destdir=./deps jq oniguruma# 方法2:直接从官网下载wgethttp://mirror.centos.org/centos/7/os/x86_64/Packages/jq-1.6-1.el7.x86_64.rpmwgethttp://mirror.centos.org/centos/7/os/x86_64/Packages/oniguruma-5.9.5-3.el7.x86_64.rpm# 打包所有文件cd~tarczf orchestrator-offline.tar.gz orchestrator-offline/

2.2 准备MySQL安装包(如需要)

如果目标环境未安装MySQL,还需要准备MySQL 5.7的离线安装包。


三、基础环境配置(所有节点执行)

3.1 上传并解压离线安装包

# 将离线包上传到服务器后执行tarxzf orchestrator-offline.tar.gz-C/root/cd/root/orchestrator-offline

3.2 配置主机名解析

cat>>/etc/hosts<<EOF 192.168.56.80 hostmysql80 192.168.56.61 hostmysql61 192.168.56.60 hostmysql60 EOF# 设置主机名(每个节点分别执行)# Node1执行hostnamectl set-hostname hostmysql80# Node2执行hostnamectl set-hostname hostmysql61# Node3执行hostnamectl set-hostname hostmysql60

3.3 关闭防火墙和SELinux

systemctl stop firewalld systemctl disable firewalld setenforce0sed-i's/SELINUX=enforcing/SELINUX=disabled/'/etc/selinux/config

四、MySQL主从复制环境搭建

4.1 安装MySQL(所有节点)

# 如已安装MySQL可跳过本节# 假设已有MySQL 5.7离线安装包rpm-ivhmysql-community-*.rpm# 启动MySQLsystemctl start mysqld systemctlenablemysqld# 获取初始密码grep'temporary password'/var/log/mysqld.log

4.2 配置MySQL参数(所有节点)

编辑/etc/my.cnf,添加以下配置 :

[mysqld] server_id = 1113306 # Node1:1113306, Node2:2223306, Node3:3333306 gtid_mode = ON enforce_gtid_consistency = ON binlog_format = ROW log_bin = mysql-bin log_slave_updates = 1 slave_net_timeout = 4 relay_log = relay-log report_host = 本机IP # 重要:用于Orchestrator自动发现 # 可选:如使用多实例,需修改端口和文件路径 # port = 3306 # socket = /var/lib/mysql/mysql.sock

重启MySQL:

systemctl restart mysqld

4.3 配置MySQL主从复制

Node1(主库)执行:
-- 创建复制用户CREATEUSER'repl'@'192.168.56.%'IDENTIFIEDBY'Repl@123456';GRANTREPLICATIONSLAVEON*.*TO'repl'@'192.168.56.%';FLUSHPRIVILEGES;-- 查看GTID位置SHOWMASTERSTATUS;
Node2和Node3(从库)执行:
-- 配置复制CHANGE MASTERTOMASTER_HOST='192.168.56.80',MASTER_PORT=3306,MASTER_USER='repl',MASTER_PASSWORD='Repl@123456',MASTER_AUTO_POSITION=1;-- 启动复制STARTSLAVE;-- 查看复制状态SHOWSLAVESTATUS\G

4.4 优化从库复制参数(所有从库)

-- 设置复制心跳和超时参数(需先停止复制)STOP SLAVE;SETGLOBALslave_net_timeout=4;CHANGE MASTERTOMASTER_CONNECT_RETRY=1,MASTER_RETRY_COUNT=86400,MASTER_HEARTBEAT_PERIOD=2;STARTSLAVE;

五、Orchestrator后端数据库配置(所有节点)

5.1 启动MySQL 3307实例

如果使用独立端口存储Orchestrator元数据,需配置第二个MySQL实例。这里演示复用现有MySQL,新建数据库。

# 登录MySQL 3306(所有节点)mysql-uroot-p
-- 创建Orchestrator后端数据库CREATEDATABASEIFNOTEXISTSorchestrator;-- 创建Orchestrator管理用户CREATEUSER'orchestrator_srv'@'127.0.0.1'IDENTIFIEDBY'orc_server_password';GRANTALLPRIVILEGESONorchestrator.*TO'orchestrator_srv'@'127.0.0.1';FLUSHPRIVILEGES;

5.2 为被管理的MySQL创建监控用户(所有节点)

-- 登录MySQL 3306mysql-uroot-p
-- 创建Orchestrator拓扑监控用户CREATEUSER'orch_topology_user'@'192.168.56.%'IDENTIFIEDBY'orch_topology_password';-- 授予必要权限GRANTSUPER,PROCESS,REPLICATIONSLAVE,REPLICATIONCLIENT,RELOADON*.*TO'orch_topology_user'@'192.168.56.%';GRANTSELECTONmysql.slave_master_infoTO'orch_topology_user'@'192.168.56.%';GRANTSELECTONperformance_schema.*TO'orch_topology_user'@'192.168.56.%';FLUSHPRIVILEGES;

权限说明

  • SUPER:用于执行CHANGE MASTER、START/STOP SLAVE等操作
  • PROCESS:查看线程信息
  • REPLICATION SLAVE:复制相关操作
  • RELOAD:刷新权限
  • SELECT权限:用于获取监控数据

六、离线安装Orchestrator(所有节点)

6.1 安装依赖包

cd/root/orchestrator-offline# 按顺序安装依赖rpm-ivhoniguruma-5.9.5-3.el7.x86_64.rpmrpm-ivhjq-1.6-1.el7.x86_64.rpm

6.2 安装Orchestrator

# 安装主程序rpm-ivhorchestrator-3.1.4-1.x86_64.rpm# 查看安装结果cd/usr/local/orchestratorls-la# 应看到:orchestrator(主程序)、resources目录、示例配置文件

6.3 配置Orchestrator

# 复制配置文件cd/usr/local/orchestratorcporchestrator-sample.conf.json orchestrator.conf.json# 编辑配置文件vimorchestrator.conf.json

以下是核心配置示例:

{"Debug":true,"ListenAddress":":3000","StatusEndpoint":"/status","MySQLOrchestratorHost":"127.0.0.1","MySQLOrchestratorPort":3306,"MySQLOrchestratorDatabase":"orchestrator","MySQLOrchestratorUser":"orchestrator_srv","MySQLOrchestratorPassword":"orc_server_password","MySQLTopologyUser":"orch_topology_user","MySQLTopologyPassword":"orch_topology_password","BackendDB":"mysql","InstancePollSeconds":5,"DetectClusterAliasQuery":"SELECT SUBSTRING_INDEX(@@hostname, '-', 1)","DataCenterPattern":"192.168.56.[0-9]+","RaftEnabled":true,"RaftDataDir":"/var/lib/orchestrator","RaftBind":"本机IP","DefaultRaftPort":10008,"RaftNodes":["192.168.56.80","192.168.56.61","192.168.56.60"],"RecoveryPeriodBlockSeconds":3600,"RecoverMasterClusterFilters":["*"],"RecoverIntermediateMasterClusterFilters":["*"]}

6.4 创建Raft数据目录

mkdir-p/var/lib/orchestratorchmod755/var/lib/orchestrator

七、启动Orchestrator(所有节点)

7.1 前台调试启动(用于验证)

cd/usr/local/orchestrator ./orchestrator--debug--config=/usr/local/orchestrator/orchestrator.conf.json http

观察日志,确认无错误后按Ctrl+C停止。

7.2 后台服务方式启动

# 创建systemd服务cat>/etc/systemd/system/orchestrator.service<<'EOF' [Unit] Description=Orchestrator MySQL replication manager After=network.target mysqld.service [Service] ExecStart=/usr/local/orchestrator/orchestrator --config=/usr/local/orchestrator/orchestrator.conf.json http WorkingDirectory=/usr/local/orchestrator Restart=always RestartSec=10 User=root [Install] WantedBy=multi-user.target EOF# 启动服务systemctl daemon-reload systemctl start orchestrator systemctlenableorchestrator# 查看状态systemctl status orchestrator

八、验证和测试

8.1 访问Web界面

任意节点浏览器打开:http://192.168.56.80:3000(任一节点IP均可)

8.2 添加被管理的MySQL实例

  1. 在Web界面导航栏点击Clusters->Discover
  2. 输入任意一个MySQL实例:192.168.56.80:3306
  3. 点击Discover
  4. Orchestrator会自动发现整个复制拓扑,显示主从关系图

8.3 使用orchestrator-client命令行管理

在任意一台服务器(不一定需要是Orchestrator节点)安装client:

# 安装clientcd/root/orchestrator-offlinerpm-ivhorchestrator-client-3.1.4-1.x86_64.rpm# 配置环境变量cat>/etc/profile.d/orchestrator-client.sh<<EOF export ORCHESTRATOR_API="192.168.56.80:3000/api 192.168.56.61:3000/api 192.168.56.60:3000/api" EOFsource/etc/profile.d/orchestrator-client.sh# 常用命令# 查看所有集群orchestrator-client-cclusters# 查看指定集群的所有实例orchestrator-client-cwhich-cluster-instances-i192.168.56.80:3306# 查看拓扑树orchestrator-client-ctopology-tabulated-i192.168.56.80:3306# 手动发现实例orchestrator-client-cdiscover-i192.168.56.61:3306

8.4 测试故障转移

# 模拟主库故障(在Node1上执行)systemctl stop mysqld# 观察Orchestrator Web界面,应看到:# 1. 检测到主库故障# 2. 自动选主(从库中选取数据最新的)# 3. 提升为新主库# 4. 其余从库重新指向新主# 查看当前主库orchestrator-client-cwhich-master-i192.168.56.61:3306# 恢复原主库(Node1)systemctl start mysqld# 原主库会自动作为新主库的从库加入集群

九、常见问题与解决方案

9.1 无法自动发现实例

问题:Discover后无法发现拓扑

解决方案

  1. 确认MySQL配置了report_host
  2. 检查orch_topology_user权限是否正确
  3. 确认防火墙端口开放
  4. 检查hosts解析是否正常

9.2 Raft节点无法选举

问题:Orchestrator节点间无法通信

解决方案

  1. 确认RaftBind配置为本机IP,而非127.0.0.1
  2. 检查端口10008是否开放
  3. 查看日志:journalctl -u orchestrator -f

9.3 故障转移未自动执行

问题:主库宕机后未自动切换

解决方案

  1. 确认配置中RecoverMasterClusterFilters包含["*"]或具体集群名
  2. 检查是否触发了防抖动机制(一小时内多次切换会被阻止)
  3. 查看日志中恢复策略的判断过程

十、维护建议

10.1 日常监控项

  • Orchestrator自身Raft集群状态(Web界面/api/raft
  • 后端MySQL连接状态
  • 被管理MySQL的复制延迟

10.2 定期备份

# 备份Orchestrator后端数据库mysqldump-h127.0.0.1-uorchestrator_srv-porchestrator>orchestrator_backup_$(date+%Y%m%d).sql

10.3 版本升级

离线升级步骤:

  1. 下载新版RPM包
  2. 在非业务高峰期逐节点升级
  3. 先升级follower,最后升级leader
  4. rpm -Uvh orchestrator-new-version.x86_64.rpm
  5. 重启服务

总结

通过以上步骤,我们成功在CentOS 7离线环境中部署了Orchestrator集群,实现了MySQL主从复制拓扑的自动发现、可视化管理和故障自动转移。相比传统MHA方案,Orchestrator不仅解决了管理节点的单点问题,还提供了更便捷的运维界面和更智能的故障恢复策略。

关键点回顾

  1. 离线安装需提前准备依赖包(oniguruma, jq)
  2. Raft协议保证了Orchestrator自身的高可用
  3. GTID复制是自动化切换的基础
  4. 合理的权限配置和MySQL参数优化是稳定运行的保障
http://www.jsqmd.com/news/466890/

相关文章:

  • JSON Patch实战:5分钟学会如何高效更新API数据(附Python示例)
  • 融合github智慧与双ai模型:快马平台智能生成react导航栏组件实践
  • ESP32-S3四级看门狗体系:硬件可靠性设计与工程实践
  • OpenClaw 集成实战:从选型到上线,我的踩坑与总结
  • AIGC智能降重网站口碑红黑榜,AIGC降重/知网AIGC检测/AIGC智能降重/维普AIGC检测AIGC智能降重网站口碑排行 - 品牌推荐师
  • TMSpeech:重新定义本地语音处理的实时转写技术
  • [特殊字符] GLM-4V-9B农业应用:作物生长状态周期性监测
  • 向量检索命中率<38%?Dify混合RAG召回优化黄金公式:chunk策略×rerank权重×HyDE增强×动态top_k校准,4小时见效!
  • 3步掌握抖音直播保存黑科技:douyin-downloader让回放下载效率提升300%
  • 5个步骤掌握全国列车数据获取:Parse12306开源工具完全指南
  • 2026:热熔胶膏药/纯中药膏药/老黑膏/黑膏药/膏药/选择指南 - 优质品牌商家
  • 【OpenClaw 保姆级教程】第四篇:多技能联动 + 定时任务 + API 接口化,打造全自动工作流(附完整脚本)
  • 不想论文写作事倍功半?9 个 AI 论文辅助网站,帮你高效完成学术创作
  • 2026年湛江GEO优化服务商实力榜:全维度评测与选型指南 - 速递信息
  • 构建私有化语音助手:FireRedASR-AED-L与智能家居控制集成
  • DeepSeek-R1推理模型快速上手:Ollama部署教程,3步完成本地搭建
  • 解决铁路数据获取难题的3大价值点:Parse12306全国列车数据解析工具
  • 京东e卡回收平台推荐:让闲置卡快速变现! - 团团收购物卡回收
  • YOLO12长尾分布:COCO中稀有类别(fire hydrant, stop sign)检测表现
  • 4个高效步骤掌握VRM-Addon-for-Blender:从环境配置到模型优化
  • Nginx URL Rewrite:灵活的 URL 重写与重定向
  • 从CMake到可执行文件:图解现代C++项目的完整构建流程(Windows/Linux双平台演示)
  • AI绘画工具推荐:LiuJuan20260223Zimage,一键生成多种风格LiuJuan主题图片
  • G-Helper效能优化指南:华硕笔记本硬件控制与性能提升方案
  • 2026住宅地产行业石英石花纹板优质品牌推荐:岩石力/岩石力石英石/石英石/选择指南 - 优质品牌商家
  • 发现 Navicat 正式免费:跟不上了
  • TB6612FNG电机驱动模块:高效双路直流电机控制与Arduino实战指南
  • 突破网盘限速困境:直链下载工具如何重塑文件获取效率
  • 2026最新湖南/长沙秩序维护推荐!物业小区/巡逻/临时保安/工业园/医院安保权威榜单 - 十大品牌榜
  • GME-Qwen2-VL-2B开源镜像详解:动态图像分辨率支持原理与实测边界