欢迎光临
我们一直在努力

阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

    最近,公司项目搭建了一套后端数据库架构,不是在RDS,是在阿里云的ECS服务器上搭建keepalived、mha、mysql5.6、gtid、一主两从架构,目前还没有实现读写分离,以后架构升级,可能代码里会实现读写分离,或者加入入mycat等中间件,也可能进行分库分表;架构不是最新,很多工具大家都见过,只是在不同的环境,不同的情况下,遇上的问题不同,也踩了很多坑,如有些可能没在阿里云上,有的可能数据库版本不一样等,所以更大家分享一下经验。

遇到的问题较多,主要问题是:

1、mha必须是0.56版本才支持GTID

2、阿里云ECS不支持浮动ip

3、阿里云服务器上keepalived只能设置单播

4、keepalived配置文件里加脚本判断mysql是否启动需要首尾写好配置文件

5、注意keepalived的配置文件,以防主库恢复后IP漂移回去

大概架构:

阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

1、在三台服务器上安装mysql主从复制

主从复制一主两从,用GTID特性,半同步复制能保证一致性好点,和主从复制方便点。

a、配置每个节点配置文件my.cnf 添加如下 log-bin=mysql-bin server-id=3 gtid_mode=ON log_slave_updates enforce_gtid_consistency (注:除了server-id每个节点不一样,其它都一样,也必须加,以一般主从复制区别,多了下面的3个参数) b、主节点添加复制账号 grant replication slave on *.* to 'backup'@'192.168.10.%'identified by'backup'; c、从节点执行 change master to master_host='192.168.10.142', master_user='backup', master_password='backup',master_port=3306,master_auto_position=1; start slave;

 

2、在三台服务器上安装mha node 在第三台服务器上安装mha master

下载链接:链接:http://pan.baidu.com/s/1c2lKbOs 密码:bfqd

安装方式参照:http://www.cnblogs.com/galengao/p/5764163.html

3、在主库和备库上面安装keepalived

 安装方式参照:http://www.cnblogs.com/galengao/p/5764163.html

可以选择安装最新版本

安装依赖包 yum install popt-static kernel-devel make gcc openssl-devel lftp libnl* popt* 安装keepalived wget http://www.keepalived.org/software/keepalived-1.2.4.tar.gz tar zxvf keepalived-1.2.4.tar.gz cd keepalived-1.2.4 ./configure --prefix=/usr/local/keepalived make make install 将keepalived做成启动服务,方便管理 cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/ cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived/ cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/keepalived/sbin/keepalived /usr/sbin/ service keepalived start

踩到的问题处理

1、mha必须是0.56版本才支持GTID

从我给的链接下载0.56的版本,或者网上找的来安装

2、阿里云ECS不支持浮动IP

要注意:阿里云的上ECS服务器跟我们自己的虚拟机不一样,它不支持浮动IP的

a、阿里云上提工单,让其开通havip,高可用虚拟ip

阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

b、到专有VPC网络的高可用虚拟IP,点击创建高可用虚拟IP出现如下图

阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

如何在出现的虚拟ip点管理,把你要漂移的那两台服务器绑定在上面:

阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

 

3、阿里云服务器上keepalived只能设置单播

按照上面模式做了keepalived还是不能正常运行,因为在阿里云私有网络里只能设置单播,如下配置文件里的红字,画了的是IP地址,从哪台飘到哪台,另外一台的配置IP是相反的:

阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

 

4、keepalived配置文件里加脚本判断mysql是否启动需要首尾写好配置文件

因为我们不但是服务器死了进行IP漂移,还要即使数据库死了也要漂移,所以只能写脚本去判断,脚本在配置文件里要注意格式:末尾还有一个模块,那个模块是在vrrp_instance VI_1的模块里的,及check_mysql和后面的花括号有一个空格:

阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑

 

5、注意keepalived的配置文件,以防主库恢复后IP漂移回去

我在配置文件里改成非抢占模式nopreempt 和主备的state都改成BACKUP,这样当主库挂了,IP漂移过去后重新启动主库,但数据库还没修复时不会漂移过来,如果需要漂移过来需要手动先关闭备库的keepalived,让其漂移过来。

 

问题形形色色,不同环境不同需求会遇上不同问题,慢慢摸索慢慢发掘。

 

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑》
文章链接:https://www.456zj.com/2756.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址