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

mysql集群2-双主故障转移keepalived

2014-10-15 09:50 716 查看
Mysql双主故障转移

架构图



说明:

Mysql1(.3)已存在使用中数据库实例已经开始binlog

Mysql2(.4)后添加.3冷备还原

 

目的:

实现异常宕机或mysql服务异常中断时正常提供对外服务

缺点:正常情况下只有一台服务器提供服务,当出现故障时候才会转移

不可用情况:服务器hang

环境:

2台64位centos6.3虚拟机部署mysql5.6.19
serverrpm安装包

 

实施步骤:

配置双主备份

首先配置主从见文档mysql读写分离

授权mysql1访问mysql2的权限

Mysql2:

grant  all privileges on *.* to 'backup'@'192.168.137.3' identified by 'backup'; flush privileges;

show master status;--记下file和position

mysql1:

change master to master_host='192.168.137.4',master_user='backup',master_password='backup',master_log_file='mysql-bin.000002',master_log_pos=120;

start slave;

show slave status \G



安装编译keeepalived配置故障转移

 

下载http://www.keepalived.org/download.html



解压tar -zxvf keepalived-1.2.13.tar.gz

安装依赖软件包

yum -y install gcc gcc-c++ gcc-g77 ncurses-devel bisonlibaio-devel cmake libnl* libpopt* openssl-devel

cd keepalived-1.2.13

./configure--prefix=/usr/local/keepalived

Make

Make install

---同上分别在两台服务器上面安装

配置keepalived,两台服务器

Mysql2:

  vi/usr/local/keepalived/etc/keepalived/keepalived.conf

  !Configuration File for keepalived

 

global_defs {

  router_id mysql-ha

}

 

vrrp_instance VI_1 {

   state BACKUP

   interface eth1

   virtual_router_id 201

   priority 90 #slave

   advert_int 1

 

   authentication {

       auth_type PASS

       auth_pass mysql

   }

   virtual_ipaddress {

       192.168.137.2

   }

}

 

virtual_server 192.168.137.2 3306 {

   delay_loop 2

   lb_algo rr

   lb_kind DR

   persistence_timeout 60

   protocol TCP

   real_server 192.168.137.4 3306 {

       weight 1

       notify_down /usr/local/keepalived/etc/keepalived/mysql.sh

       TCP_CHECK {

           connect_port 3306

           connect_timeout 3

           nb_get_retry 2

           delay_before_retry 1

       }

   }

}

Mysql1:

修改interface eth1  interface eth0

    prority
100

       real_server
192.168.137.1

Mysql1修改完后如下

! Configuration File for keepalived

 

global_defs {

  router_id mysql-ha

}

 

vrrp_instance VI_1 {

   state BACKUP

   interface eth0

   virtual_router_id 201

   priority 100 #master

   advert_int 1

   nopreempt #

   authentication {

       auth_type PASS

       auth_pass mysql

   }

   virtual_ipaddress {

       192.168.137.2

   }

}

 

virtual_server 192.168.137.2 3306 {

   delay_loop 2

   lb_algo rr

   lb_kind DR

   persistence_timeout 60

   protocol TCP

   real_server 192.168.137.3 3306 {

       weight 1

       notify_down /usr/local/keepalived/etc/keepalived/mysql.sh

       TCP_CHECK {

           connect_port 3306

           connect_timeout 3

           nb_get_retry 2

           delay_before_retry 1

       }

   }

}

配置停止脚本(两台都需要)

Mysql.sh

#!/bin/bash

pkill keepalived

 

两台主机上面启动keepalived

/usr/local/keepalived/sbin/keepalived -f/usr/local/keepalived/etc/keepalived/keepalived.conf -D

   


到这里keepalived已经配置完成

测试故障转移

Start.sh



Mysql1服务停止



 

可以看到mysql1服务停止后可以正常使用

 

启动mysql1停止mysql2服务

启动myslq1



 

 停止mysql2



 

可以看到刚才mysql服务是在mysql2上面查询时报错然后再次查询就正常了没有一次已经实现故障转移

 

Myslq1服务器异常中断





可以看到同上

 

网络故障



 

服务在mysql2上面跑停止mysql1时没有影响,当停止mysql2的时候会发出错误然后再次执行正常已经转移到服务已经转移到mysql1上面,现在启动mysql2,我们已经确定服务是在mysql1上面了

停止mysql2网卡模拟网络故障



可以看到mysql2网卡故障没有任何影响

启动mysql2网卡,停掉mysql1



已经自动转移到了mysql2

 

停止正在服务的mysql1后再mysql2上面插入数据再启动mysql1



可以看到数据正常同步

 

当正在使用的服务器断网时候会出现无法使用,需要重启另外一台服务器的mysql服务即可正常





 

在写入数据时候突然断网的时候不是很稳定有时候断一下连接正常,有时候需要重启服务




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