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

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

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

一、mha必须是0.56版本才支持GTIDnode

二、阿里云ECS不支持浮动IPmysql

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

四、keepalived配置文件里加脚本判断mysql是否启动须要首尾写好配置文件数据库

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

大概架构:

一、在三台服务器上安装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;

 

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

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

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

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

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

能够选择安装最新版本

安装依赖包
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

踩到的问题处理

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

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

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

要注意:阿里云的上ECS服务器跟咱们本身的虚拟机不同,它不支持浮动IP的

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

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

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

 

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

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

 

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

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

 

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

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

 

问题形形色色,不一样环境不一样需求会赶上不一样问题,慢慢摸索慢慢发掘。

相关文章
相关标签/搜索