介绍

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

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

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

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

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

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

部署如下

试验环境

mysql服务器
orchestrator & master:10.72.16.112
slave1:10.72.16.50
slave2:10.72.16.59

1、安装orchestrator

orchestrator-cli-3.0.11-1.x86_64.rpm安装程序需要依赖包,安装依赖包jq-1.5、oniguruma-5.9.5

并且最好在redhat 7的操作系统安装。

yum install orchestrator-3.1.-.x86_64.rpm jq-1.5-.el7.x86_64.rpm oniguruma-5.9.-.el7.x86_64.rpm
安装完成后,目录在/usr/local/orchestrator

2、配置主机解析

[root@hchtest4 ~]# cat /etc/hosts
10.72.16.112 hchtest4
10.72.16.50 hchtest3
10.72.16.59 hchtest-elk

3、3台MySQL主从复制省略

4、orchestrator的后台管理端数据库权限配置(112上执行)

在orch后端数据库112上:

CREATE DATABASE IF NOT EXISTS orchestrator;
CREATE USER 'orchestrator'@'%' IDENTIFIED BY 'hch123';
GRANT ALL PRIVILEGES ON orchestrator.* TO 'root'@'%';

5、3台orch管理的数据库集群上,权限及数据库执行(3台数据库执行)

CREATE USER 'orchestrator'@'%' IDENTIFIED BY 'hch123';
GRANT SUPER, PROCESS, REPLICATION SLAVE, RELOAD ON *.* TO 'orchestrator'@'%';
GRANT SELECT ON mysql.slave_master_info TO 'orchestrator'@'%';
CREATE DATABASE IF NOT EXISTS meta;
GRANT SELECT ON meta.* TO 'orchestrator'@'%';

6、修改配置文件

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

vim /etc/orchestrator.conf.json
#被管理MySQL数据库的用户权限数据库账号密码
"MySQLTopologyUser": "root",
"MySQLTopologyPassword": "hch123", #orchestrator管理后台数据库账号密码
"MySQLOrchestratorHost": "10.72.16.112",
"MySQLOrchestratorPort": ,
"MySQLOrchestratorDatabase": "orchestrator",
"MySQLOrchestratorUser": "orchestrator",
"MySQLOrchestratorPassword": "hch123",
"DiscoverByShowSlaveHosts": false,

DiscoverByShowSlaveHosts": ture 这种情况下,必须配置report_host

$ vim /etc/my_3306.cnf

report_host=192.168.225.128 //ip为自身的ip

说明:不加report_host ,show slave hosts 不会显示host,会导致程序报错的

report_host为只读参数,必须重启才可生效

说明:

DiscoverByShowSlaveHosts": false 也可以,这样就不需要设置report_host了

更多参数说明

7、创建命令软链接

ln -s /usr/local/orchestrator/orchestrator /usr/bin/

8、启动orchestrator

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

查看端口
[root@orchestrator ~]# netstat -tnpl |grep :
tcp6 ::: :::* LISTEN /orchestrator

8、命令行发现:

orchestrator -c discover -i 10.72.16.50
orchestrator -c discover -i 10.72.16.59
orchestrator -c clusters ----查看集群

9、访问网页

http://10.72.16.51:3000

10、Orchestrator的使用

参考

Orchestrator部署配置 - qq_26496673的博客 - CSDN博客 https://blog.csdn.net/qq_26496673/article/details/82810671

MySQL高可用复制管理工具 —— Orchestrator介绍 - jyzhou - 博客园 https://www.cnblogs.com/zhoujinyi/p/10387581.html

MySQL高可用复制管理工具 —— Orchestrator使用 - jyzhou - 博客园 https://www.cnblogs.com/zhoujinyi/p/10394389.html

orchestrator 安装?参数?VIP脚本? - wangxin3618的博客 - CSDN博客 https://blog.csdn.net/wangxin3618/article/details/97013376

orchestrator简介 - fearless11的博客 - CSDN博客 https://blog.csdn.net/fearless11/article/details/77170764

Orchestrator管理mysql复制 - 个人文章 - SegmentFault 思否 https://segmentfault.com/a/1190000017838535?utm_source=tag-newest

MySQL复制拓扑管理工具Orchestrator - 简书 https://www.jianshu.com/p/62e95a131028

MySQL高可用探索之orchestrator | Yangtze River's blog https://riverdba.github.io/2019/03/19/orchestrator/

orchestrator的安装和配置的更多相关文章

  1. 烂泥:vcenter5.5无AD下的安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb. 公司现在的虚拟化使用的基本上都是vsphere,目前大约有7台物理机,为了更好的管理虚 ...

  2. Windows Server 2016 + SCO 2016 安装及配置介绍

    Windows Server 2016 + SCO 2016 安装及配置介绍 高文龙关注1人评论6332人阅读2017-02-26 23:23:02 Windows Server 2016 + SCO ...

  3. JDK安装与配置

    JDK安装与配置 一.下载 JDK是ORACLE提供免费下载使用的,官网地址:https://www.oracle.com/index.html 一般选择Java SE版本即可,企业版的选择Java ...

  4. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  5. 烂泥:redis3.2.3安装与配置

    本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb 前一段时间写过一篇codis集群的文章,写那篇文章主要是因为当时的项目不支持redis自 ...

  6. mysql源码包手动安装、配置以及测试(亲测可行)

    笔记编者:小波/qq463431476博客首页:http://www.cnblogs.com/xiaobo-Linux/ 记下这篇mysql笔记,望日后有用! redhat6采用centos yum源 ...

  7. 环境搭建系列-系统安装之centos 6.5安装与配置

    按照国际惯例,系列目录先奉上: 系列一:系统安装之centos 6.5安装与配置 系列二:准备工作之Java环境安装 系列三:数据为先之MySQL读写集群搭建 系列四:谈分布式之RabbitMQ集群搭 ...

  8. ZooKeeper安装与配置

    一. 单机安装.配置: 1. 下载zookeeper二进制安装包下载地址:http://apache.dataguru.cn/zookeeper/zookeeper-3.4.3/zookeeper-3 ...

  9. mac 下JDK 与 tomcat 的安装与配置

    一.Mac下JDK的安装 1.先检测Mac是否已经安装过JDK,在终端中输入java 或者 javac 显示说明,表明已经安装过JDK,JDK版本查询终端键入java -version,终端会返回JD ...

随机推荐

  1. static关键字的作用(修饰类、方法、变量、静态块)

    1. static修饰的类只能为内部类,普通类无法用static关键字修饰.static修饰的内部类相当于一个普通的类,访问方式为(new 外部类名.内部类的方法() ).如下所示: public c ...

  2. django--模型字段引用

    如果内置字段不起作用,您可以尝试使用django-localflavor(文档),其中包含对特定国家和文化有用的各种代码片段. 此外,您可以轻松编写自己的自定义模型字段. 注意 从技术上讲,这些模型是 ...

  3. docker部署Redmine项目管理平台

    1.下载镜像(自己用的3.4版本) docker pull redmine:3.4 docker pull mysql:5.7 2.运行 docker run -p 3306:3306 --name ...

  4. Spring WebSocket中403错误解决

    最近测试了一下spring的websocket,遇到了一个比较恶心的问题,在这记录一下. 问题源自之前开发的一个h5项目,这个项目在80端口下一直放着,就顺便在里面随便加了几行代码测试websocke ...

  5. Luogu P1970 花匠

    Luogu P1970 花匠 本质上就是找最长的波浪序列. 因为考虑到第一个必选,所以可以让$lst=h[1]$. 此外,注意到$n=1$是要特判,其他情况下显然$ans\geq 2$,所以把$dir ...

  6. python链式对比

    参考 https://www.cnblogs.com/shanghongyun/p/10519579.html 为什么Python中“2==2>1”结果为True在Python中,你可能会发现这 ...

  7. 微信小程序~App.js中获取用户信息

    (1)代码:主要介绍下获取用户信息部分 onLaunch: function () { // 展示本地存储能力 var logs = wx.getStorageSync('logs') || [] l ...

  8. git push 缓存密码和用户名

    https://stackoverflow.com/questions/6565357/git-push-requires-username-and-password git remote -v -- ...

  9. redis和memcached有什么区别?redis的线程模型是什么?为什么单线程的redis比多线程的memcached效率要高得多(为什么redis是单线程的但是还可以支撑高并发)?

    1.redis和memcached有什么区别? 这个事儿吧,你可以比较出N多个区别来,但是我还是采取redis作者给出的几个比较吧 1)Redis支持服务器端的数据操作:Redis相比Memcache ...

  10. javaweb-servlet获取给定文件在服务器上的绝对路径的方法

    1.通过ServletContext获取 在tomcat5,6,7版本中我们可以通过ServletContext来获取给定文件在服务器上的绝对路径. ServletContext context = ...