ORCHESTRATOR

一简介

MySQL高可用性和复制拓扑管理工具,支持复制拓扑结构的调整,自动故障转移和手动主从切换等。后端数据库用MySQL或SQLite存储元数据,并提供Web界面展示MySQL复制的拓扑关系及状态,通过Web可更改MySQL实例的复制关系和部分配置信息,同时也提供命令行和api接口,方便运维管理。相对比MHA来看最重要的是解决了管理节点的单点问题,其通过raft协议保证本身的高可用。

主要特点:

① 自动发现MySQL的复制拓扑,并且在web上展示。

② 重构复制关系,可以在web进行拖图来进行复制关系变更。

③ 检测主异常,并可以自动或手动恢复,通过Hooks进行自定义脚本。

④ 支持命令行和web界面管理复制。

⑤ 支持配置高可用。

二安装:

下载链接

:https://github.com/openark/orchestrator/releases/download/v3.2.2/orchestrator-3.2.2-1.x86_64.rpm

需提前安装依赖包(redhat7为例):

oniguruma-5.9.5-3.el7.x86_64.rpm

jq-1.5-1.el7.x86_64.rpm

  1. 创建库及用户:

CREATE DATABASE IF NOT EXISTS orchestrator;

CREATE USER 'orchestrator'@'%' IDENTIFIED BY '********';

GRANT ALL PRIVILEGES ON orchestrator.* TO ' orchestrator'@'%';

GRANT PROCESS, REPLICATION SLAVE, RELOAD ON *.* TO 'orchestrator'@'%';

GRANT SELECT ON mysql.slave_master_info TO 'orchestrator'@'%';

  1. 调整参数文件

cp /usr/local/orchestrator/orchestrator-sample.conf.json /usr/local/orchestrator/orchestrator.conf.json

"MySQLTopologyUser": "orchestrator",   ---被管理的MySQL的用户

"MySQLTopologyPassword": "******",    ---被管理的MySQL的用户密码

"MySQLOrchestratorHost": "db1",  ----后端数据库地址

"MySQLOrchestratorPort": 3306,  ---后端数据库端口

"MySQLOrchestratorDatabase": "orchestrator",---后端数据库名

"MySQLOrchestratorUser": "******", ---后端数据库用户名

"MySQLOrchestratorPassword": "db1",---后端数据库用户密码

"RecoverMasterClusterFilters": ["*"],---只对匹配这些正则表达式模式的集群进行主恢复(“*”模式匹配所有) "RecoverIntermediateMasterClusterFilters": ["*"],--仅在与这些正则表达式模式匹配的集群上进行IM恢复(“*”模式匹配所有)

"FailureDetectionPeriodBlockMinutes": 60,-- 在该时间内再次出现故障,不会被多次发现

"RecoveryPeriodBlockSeconds": 3600--在该时间内再次出现故障,不会进行迁移,避免出现并发恢复和不稳定

  1. 配置orchestrator 高可用

在每个节点上修改orchestrator.conf.json配置文件:

"RaftEnabled": true, --是否开启Raft,保证orch的高可用

"RaftDataDir": "/var/lib/orchestrator",-- Raft的数据目录

"RaftBind": "db1", -- Raft 的 bind地址

"DefaultRaftPort": 10008, -- Raft的端口

"RaftNodes": [ "db1", "db2", "db3" ] -- Raft的节点

  1. 启动服务:

./orchestrator --debug --config=orchestrator.conf.json http &

三.功能使用

三常见使用:

1. 列出所有集群:clusters
 
默认:
 
# orchestrator -c clusters
db2:3306
 
返回包含集群别名:clusters-alias
 
# orchestrator -c clusters-alias
db2:3306,test
 
2. 发现指定实例:discover/async-discover
 
同步发现:
 
# orchestrator -c discover -i db1:3306
db1:3306
 
异步发现:适用于批量
 
# orchestrator -c async-discover -i db1:3306
:null
 
3. 忘记指定对象:forget/forget-cluster
 
忘记指定实例:
 
# orchestrator -c forget -i db1:3306
 
忘记指定集群:
 
# orchestrator -c forget-cluster -i test
 
4. 打印指定集群的拓扑:topology/topology-tabulated
 
普通返回:
 
# orchestrator -c topology -i db1:3306
db2:3306   [0s,ok,5.7.25-0ubuntu0.16.04.2-log,rw,ROW,>>,GTID]
+ db1:3306 [0s,ok,5.7.25-0ubuntu0.16.04.2-log,ro,ROW,>>,GTID]
+ db3:3306 [0s,ok,5.7.25-log,ro,ROW,>>,GTID]
 
列表返回:
 
# orchestrator -c topology-tabulated -i db1:3306
db2:3306  |0s|ok|5.7.25-0ubuntu0.16.04.2-log|rw|ROW|>>,GTID
+ db1:3306|0s|ok|5.7.25-0ubuntu0.16.04.2-log|ro|ROW|>>,GTID
+ db3:3306|0s|ok|5.7.25-log                 |ro|ROW|>>,GTID
 
5. 查看使用哪个API:自己会选择出leader。which-api
 
# orchestrator -c which-api
db3:3000/api
 
也可以通过 http://192.168.163.133:3000/api/leader-check 查看。
 
6. 调用api请求,需要和 -path 参数一起:api..-path
 
# orchestrator -c api -path clusters
[ "db2:3306" ]
# orchestrator -c api -path leader-check
"OK"
# orchestrator -c api -path status
{ "Code": "OK", "Message": "Application node is healthy"...}
 
7. 搜索实例:search
 
# orchestrator -c search -i test
db2:3306
db1:3306
db3:3306
 
8. 打印指定实例的主库:which-master 
 
# orchestrator -c which-master -i db1:3306
db2:3306
# orchestrator -c which-master -i db3:3306
db2:3306
# orchestrator -c which-master -i db2:3306 #自己本身是主库
:0
 
9. 打印指定实例的从库:which-replicas 
 
# orchestrator -c which-replicas -i db2:3306
db1:3306
db3:3306
 
10. 打印指定实例的实例名:which-instance 
 
# orchestrator -c instance -i db1:3306
 
 
 
 
---切换相关

1.手工主从切换:

test2:3306优雅的切换到test1:3306,切换之后需要手动执行start slave
  orchestrator -c graceful-master-takeover -a test2:3306 -d test1:3306
2. 手动恢复,当从库进入停机或者维护模式,此时主库宕机,不会自动Failover,需要手动执行恢复,指定死掉的主实例:
  orchestrator -c recover -i test1:3306
 
3. 手动强制恢复,不管任何情况,都进行恢复:
  orchestrator -c force-master-failover -i test2:3306
 
--更多
orchestrator –help
 
 

ORCHESTRATOR介绍及使用的更多相关文章

  1. MySQL高可用复制管理工具 —— Orchestrator介绍

    背景 在MySQL高可用架构中,目前使用比较多的是Percona的PXC,Galera以及MySQL 5.7之后的MGR等,其他的还有的MHA,今天介绍另一个比较好用的MySQL高可用复制管理工具:O ...

  2. MySQL高可用复制管理工具 —— Orchestrator使用

    背景 在上一篇「MySQL高可用复制管理工具 —— Orchestrator介绍」中大致介绍了Orchestrator的功能.配置和部署,当然最详细的说明可以查阅官方文档.本文开始对Orchestra ...

  3. orchestrator的安装和配置

    介绍 在MySQL高可用架构中,目前使用比较多的是Percona的PXC,Galera以及MySQL 5.7之后的MGR等,其他的还有的MHA,今天介绍另一个比较好用的MySQL高可用复制管理工具:O ...

  4. 前端构建工具gulpjs的使用介绍及技巧

    gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简单,学习起来很容易,而且gulpjs使用的是nodejs中stream来读取和操作数据,其速 ...

  5. 前端构建工具gulp介绍

    2016年3月3日 10:46:08     晴 前端构建工具gulpjs的使用介绍及技巧 gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非常简 ...

  6. gulp plugins 插件介绍

    目录 [−] gulp API gulp.src(globs[, options]) gulp.dest(path[, options]) gulp.task(name[, deps], fn) gu ...

  7. [转载]前端构建工具gulpjs的使用介绍及技巧

    转载地址:http://www.cnblogs.com/2050/p/4198792.html gulpjs是一个前端构建工具,与gruntjs相比,gulpjs无需写一大堆繁杂的配置参数,API也非 ...

  8. 一步步使用BMC Atrium Orchestrator Vmware Infrastructure Event Monitor

    本教程将一步步演示怎么使用BMC Atrium Orchestrator (BAO) Vmware Infrastructure Event Monitor来监控VSphere Webservice的 ...

  9. Gulp介绍与入门实践

    Gulp,一个基于流的构建工具. 这是自己写的一个构建的demo,只是一个纯演示的示例,并没有完成什么项目工作.下面根据这个demo介绍一下Gulp. 上代码: gulpfile.js 'use st ...

随机推荐

  1. POJ3262贪心

    题意:FJ去砍树,然后和平时一样留了 N (2 ≤ N ≤ 100,000)头牛吃草.当他回来的时候,他发现奶牛们正在津津有味地吃着FJ种的美丽的花!为了减少后续伤害,FJ决定立即采取行动:运输每头牛 ...

  2. __stdcall、__cdcel和__fastcall三者的区别

    转自:https://www.cnblogs.com/huhewei/p/6080143.html 一.概述 __stdcall.__cdecl和__fastcall是三种函数调用协议,函数调用协议会 ...

  3. Rust String(官方文档翻译)

    学习Rust,官方文档全英文,查询不太方便,索性直接翻译完,方便查询使用.有需要自由转载,本人英文水平有限,文档是在谷歌翻译的基础上加个人理解完成,不敢保证正确.文档翻译错误的地方欢迎指出: 原文地址 ...

  4. Scala 面向对象(八):特质(接口) 一

    1 Scala接口的介绍 从面向对象来看,接口并不属于面向对象的范畴,Scala是纯面向对象的语言,在Scala中,没有接口. Scala语言中,采用特质trait(特征)来代替接口的概念,也就是说, ...

  5. python 装饰器(六):装饰器实例(三)内置装饰器

    内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些. @property 在了解这个装饰器前,你需要知道在不使用装饰器怎么写一个属性. def getx(sel ...

  6. CSS数据样式

    CSS数据样式 表格 定制表格 我们除了可以使用<table>标签进行绘制表格,在css3中display也支持进行表格的样式绘制. 样式规则 说明 table 对应 table tabl ...

  7. 美国数学家维纳(N.Wiener)智力早熟,11岁就上了大学。他曾在1935~1936年应邀来中国清华大学讲学。 一次,他参加某个重要会议,年轻的脸孔引人注目。于是有人询问他的年龄,他回答说:我年龄的立方是个4位数。 我年龄的4次方是个6位数。这10个数字正好包含了从0到9这10个数字,每个都恰好出现1次。” 请你推算一下,他当时到底有多年轻。 结果只有一个数。

    #include<stdio.h>int main(){ int age=1; int san=0; int si=0; int sum=0; while(age>0) { san= ...

  8. ffmpeg播放器实现详解 - 视频显示

    ffplay是ffmpeg源码中一个自带的开源播放器实例,同时支持本地视频文件的播放以及在线流媒体播放,功能非常强大. FFplay: FFplay is a very simple and port ...

  9. 面试官:请你说下N95应该怎么测试?这样回答让他竖起大拇指!

    随着”新冠疫情“慢慢地消散,各大企业都开始恢复正常的运行. 因为疫情造成很多工作人员的流失,企业也开始疯狂的招聘新鲜的人才,这对于莘莘求职者无疑是个机会. 但是因为求职者众多,很多面试官也开始想方设法 ...

  10. rabbitmq+sleuth+zinkip 分布式链路追踪

    我们都知道,微服务之间通过feign传递,在复杂的微服务架构系统中,几乎每一个前端请求都会形成一个复杂的分布式服务调用链路,在每条链路中任何一个依赖服务出现延迟超时或者错误都有可能引起整个请求最后的失 ...