欢迎光临
我们一直在努力

阿里云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漂移回去

大概架构:

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

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

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

 

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

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

 

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

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

 

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

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

 

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

 

赞(0)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:阿里云ECS服务器上搭建keepalived+mha+mysql5.6+gtid+一主两从+脚本判断架构踩的坑
文章链接:https://www.jmwz.net/5298.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到: 更多 (0)

评论 抢沙发

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