您的位置:首页 > 数据库 > MySQL

再谈Mysql MHA

2016-03-29 16:45 369 查看
关于Mysql数据库的高可用以及mysql的proxy中间件的选型一直是个很活跃的技术话题。以高可用为例,解决方案有mysql ndb集群,mmm , mha, drbd等多种选择。Mysql 的proxy中间件则有mysql-proxy, atlas , cobar, mycat, tddl等,可谓五花八门。

以上对应的解决方案都有各种的优缺点,生产环境的选型的原则无非几个字:“简单,符合要求且高效!”一句话:适合自己的,才是最好的!

本文将介绍采用在mysql 1主3从的环境下,采用mha架构实现mysql master的ha和自动failover。进而结合atlas数据库代理完成mysql数据库的整体读写请求分离,同时在atlas这层实现ha和failover,避免单点故障。数据库架构设计拓扑如下:





一:环境介绍

Atlas 主:192.168.1.12/24

Atlas 从:192.168.1.81/24

Atlas vip: 192.168.1.230/24

Atlas write:

master:192.168.1.225/24

Slave1:192.168.1.226/24

Slave2:192.168.1.227/24

管理节点:192.168.1.12/24

Mha vip: 192.168.1.231/24

Atlas read:

Slave2:192.168.1.227/24

Slave3:192.168.1.228/24

由于文章篇幅关系,mha和atlas将分开两篇文章来介绍!

其实早在两年前就尝试过mha, 由于种种原因,当时只研究了皮毛,本文也算是对前文的一个补充! 前文传送门:/article/4304307.html

二:配置数据库复制, 这个比较简单,配置步骤省略(如有问题请百度一下!)。

Master





Slave:(226,227,228均为此状态)





二:安装及配置mha

1: 配置主机间的ssh密钥信任,此处以225服务器为例,其他服务器执行同样的操作

2:安装mha,这里为了方便,直接采用rpm包形式进行安装

3: 配置mha主配置文件

4:准备failover脚本

# cat /usr/local/scripts/master_ip_failover

# chmod +x /usr/local/scripts/master_ip_failover

5:进行ssh检查

# masterha_check_ssh --conf=/etc/mha/mha.conf





# cp -rvp /usr/lib/perl5/vendor_perl/MHA /usr/local/lib64/perl5/

(mha的数据库节点和管理节点均需要执行此步骤)

# masterha_check_ssh --conf=/etc/mha/mha.conf





6:进行同步检查

# masterha_check_repl --conf=/etc/mha/mha.conf

7: 管理节点启动manager进程

三:测试mhafailover

1:Master节点(关闭mysql进程)





2:226服务器(自动获取VIP,且转换为master)







3:227服务器(自动从新的master上进行复制)





4:管理节点查看到的日志(fairover之后,mha manager进程会自动关闭)

# tail -f /usr/local/mha/manager.log

四:恢复操作

1:重启225服务器mysql服务

2:管理节点,检查同步报错





3:配置225服务器mysql为新的slave,并启动同步进程

4:管理节点上启动manager进程

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: