MySQL高可用工具,一直以来MHA使用的比较多,自从MySQL 引入GTID之后,又出现了Orchestrator以及replication-manager这类新的高可用工具,本文将主要介绍replication-manager的使用方法。
一、replication-manager简介
replication-manager是signal18开源的一款数据库高可用工具,采用go语言开发,源代码托管在github上。
支持的MySQL的版本:
- MariaDB 10.x
- MySQL & Percona Server 5.7 GTID
功能特性:
- 复制关系监控与拓扑检测
- 在线切换(switchover)
- 故障切换(failover)
- 多集群管理
- 支持代理( ProxySQL, MaxScale, HAProxy, Spider)
- 大多数场景数据零丢失
二、下载及安装
在github上搜索replication-manager,下载源码(v2.0)
编译(需要联网):
- 创建目录:mkdir -p /data/go
- 加入环境变量: export GOPATH=/data/go
- clone源码: go get github.com/signal18/replication-manager
- 编译安装: go install github.com/signal18/replication-manager
- 加入PATH环境变量: export PATH=$PATH:/data/go/bin
- 编译完成之后,会在/data/go/bin目录下,生成一个replication-manager可执行文件。
编译完整二进制版本:
cd /data/go/src/github.com/signal18/replication-manager
./build_linux_amd64.sh
在源码目录中,生成可执行文件:
- replication-manager
- replication-manager-arb
- replication-manager-cli
- replication-manager-min
- replication-manager-min-basedir
- replication-manager-osc
- replication-manager-osc-basedir
- replication-manager-pro
- replication-manager-pro-basedir
- replication-manager-tst
- replication-manager-tst-basedir
下面演示案例,只使用 replication-manager-osc 和 replication-manager-cli。
replication-manager-osc 为后台集群监视程序,负责MySQL状态的获取和监控,以及切换的执行等等。
replication-manager-cli 为客户端程序,负责管理命令的发送。
三、使用案例
配置文件 config.toml:
[Default]
title = "ClusterTest"
db-servers-hosts = "192.168.56.110:3306,192.168.56.111:3306,192.168.56.112:3306"
db-servers-credential = "admin:123456"
replication-credential = "repl:123456"
failover-mode = "automatic"
arbitrator-bind-address = "0.0.0.0:10005"
arbitrator-driver = "sqlite"
mkdir -p /usr/share/replication-manager
cp -r /data/git/replication-manager/dashboard/ /usr/share/replication-manager/
监视集群:
./replication-manager-osc --config=./config.toml monitor
手动执行主从切换:
./replication-manager-cli --config=./config.toml switchover
手动执行故障切换:
先把主库关掉
执行./replication-manager-cli --config=./config.toml failover
自动执行故障切换:
只要在配置文件中,把failover-mode 由 "manual" 修改为 "automatic",重新监视集群即可。这样主库宕机的情况下,会自动执行故障切换。
宕机的旧主如果恢复后,会自动变成新主的一个从库,并且处于维护模式。
通过 replication-manager-cli 的 topology命令可以获取集群各个节点的id,再通过server命令,可以设置或者解除维护模式,如下:
./replication-manager-cli topology
./replication-manager-cli server --id=5789112859919251853 --maintenance
命令行模式:
./replication-manager-cli console
进入命令行交互模式,在该模式下,可查看当前集群的复制拓扑,也可以通过快捷键执行一些命令,比如ctrl+s 执行switchover,ctrl+f 执行failover,ctrl+m设置或者解除维护模式等等。
总结:
本文简单介绍了replication-manager的功能特性、编译安装和使用案例,总体来看,上手比较容易,编译配置简单,功能比较强大,文档也比较丰富。有兴趣的可以继续深入研究一下。