cetus/doc/cetus-mha.md
2018-03-06 18:07:08 +08:00

90 lines
3.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# cetus + mha高可用方案
## 简介
cetus使用改进过的mha实现高可用。乐得DBA在原生mha中加入修改cetus状态的模块和mha操作过程的短信、邮件通知功能。修改过的mha版本简称mha_ld。
mha切换包括故障切换和在线手工切换以故障切换(failover)为例简单介绍一下mha_ld的工作流程未提及的操作请参考官方文档
https://github.com/yoshinorim/mha4mysql-manager/wiki
![Cetus mha](https://github.com/Lede-Inc/cetus/blob/master/doc/picture/cetus_mha.jpg)
1、检测当前主库不达准备开始切换
2、在cetus管理端修改当前主库的状态将当前主库状态修改为“维护(maintaining)”,类型修改为“只读(ro)”,发送修改的通知短信
update backends set state='maintaining' , type='ro' where address='172.0.0.1:3306';
3、提升MySQL从库为新的主库
4、在cetus管理端修改新主库的状态将当前主库状态修改为“维护(unknown)”,类型修改为“只读(rw)”,发送修改的通知短信
update backends set state='unknown' , type='rw' where address='172.0.0.2:3306';
## 安装
在master和node主机节点yum安装rpm包
yum install -y perl-DBD-MySQL perl-Config-Tiny perl-Log-Dispatch perl-Parallel-ForkManager perl-Config-IniFiles
master和node主机节点安装mha4mysql-node-0.56-0.el6.noarch.rpm包
rpm -ivh mha4mysql-node-0.56-0.el6.noarch.rpm
master主机节点安装mha4mysql-manager-0.56-0.el6.noarch.rpm包
rpm -ivh mha4mysql-manager-0.56-0.el6.noarch.rpm
使用 mha/manger源码修改版替换所有文件/usr/share/perl5/vendor_perl/MHA/目录的所有同名文件
使用 mha/manger源码修改版/masterha_secondary_check替换masterha_secondary_check命令
which masterha_secondary_check
/usr/bin/masterha_secondary_check
rm /usr/bin/masterha_secondary_check
cd /usr/bin/
上传修改后的masterha_secondary_check
chmod +x /usr/bin/masterha_secondary_check
## 配置
安装好mha_ld后配置启动mha的cnf文件请参考mha githup官方文档
https://github.com/yoshinorim/mha4mysql-manager/wiki/Configuration
按照官方文档配置cnf后需要在cnf加一个变量
proxy_conf=/home/masterha/mha/proxy_mha.cnf
这个变量对应的是cetus的连接信息文件。变量需要些绝对路径。
编辑proxy_conf变量指定的cnf文件配置以下参数
middle_ipport=127.0.0.1:4306,127.0.0.14:4307
middle_user=admin
middle_pass=xxxxxxx
middle_ipport记录多组cetus。一组cetus由ip和端口组成ip和端口用英文冒号分隔每组cetus用英文逗号分隔。
middle_user记录每组cetus管理入口的用户名与cetus配置文件中的admin-username变量值一致。同一个mha_ld维护的多组cetus管理入口用户名必须一致。
middle_pass记录每组cetus管理入口的用户密码与cetus配置文件中的admin-password变量值一致。同一个mha_ld维护的多组cetus管理入口用户密码必须一致。
## 修改切换时的通知
在/usr/share/perl5/vendor_perl/MHA/ManagerConst.pm文件中有一个变量MOBILE_PHONES更改该变量可以将需要收到短信通知的人加入列表中例如
our @MOBILE_PHONES = (
1234567890, # zhang
2345678901, # wang
);
另外还有几个文件涉及到发送短信时使用的url分别为HealthCheck.pm/MasterFailover.pm/MasterMonitor.pm/ProxyManager.pm找到这些文件中send_alert函数修改 curl调用即可。