Mysql主主互备结合keepalived实现高可用

来源:互联网 发布:上海知著投资咨询 编辑:程序博客网 时间:2024/06/09 19:37

 

实验环境:

master192.0.2.115 (redhat7.2)

slave192.0.2.119 (redhat7.2)

VIP192.0.2.116

mysql5.7.11

keepalived1.2.13(系统盘自带版本)

 

一、MySQL主主互备模式配置

①masterslave两个数据库节点环境准备

分别在masterslave两节点服务器上安装mysql软件,参考rpm包方式安装mysql,此处不做详述。安装完成后,注意修改root密码和开通root用户远程登陆权限。

 

②master的参数文件/etc/my.cnf配置

shell>vim  /etc/my.cnf

###在[mysqld]标签下增加如下内容:

[mysqld]

……

server_id = 1

log_bin = master-bin

relay_log = master-relay-bin

……

 

 

③slave的参数文件/etc/my.cnf配置

shell>vim  /etc/my.cnf

###[mysqld]标签下增加如下内容:

[mysqld]

……

server_id = 2

log_bin = slave-bin

relay_log = slave-relay-bin

……

 

 

④分别在两个mysql节点上,创建主从同步复制账户repl

###登陆master节点的mysql服务:

shell>mysql -uroot -p

mysql>grant replication slave,replication client on *.* to ’repl’@’192.0.2.119’ identified by ’Myreplpwd4!’ with grant options;

mysql>flush privileges;

 

###登陆slave节点的mysql服务:

shell>mysql -uroot -p

mysql>grant replication slave,replication client on *.* to ’repl’@’192.0.2.115’ identified by ’Myreplpwd4!’ with grant options;

mysql>flush privileges;

 

 

⑤重启两节点的mysql服务:115119上都要执行。

shell>systemctl restart mysqld.service

 

⑥配置主主replication机制:

###登陆master节点192.0.2.115mysql服务,将slave节点配置成master的主库,即master去获取slave上的二进制日志。

shell>mysql -uroot -p

mysql>reset master;

mysql>stop slave;

mysql>change master to 

->master_host=’192.0.2.119’,

->master_user=’repl’,

->master_password=’ Myreplpwd4!’,

->master_log_file=’slave-bin.000001’,

->master_log_pos=0;

###启动slave服务,并查看115119的相关复制线程状态。

mysql>start slave;

mysql>show slave status\G;

 

 

###登陆slave节点192.0.2.119mysql服务,将master节点配置成slave的主库,即slave去获取master上的二进制日志。

shell>mysql -uroot -p

mysql>reset master;

mysql>stop slave;

mysql>change master to

->master_host=’192.0.2.115’,

->master_user=’repl’,

->master_password=’ Myreplpwd4!’,

->master_log_file=’master-bin.000001’,

->master_log_pos=0;

###启动slave服务,并查看119115的相关复制线程状态。

mysql>start slave;

mysql>show slave status\G;

 

 

二、安装和配置keepalived,实现mysql的高可用

配置本地YUM源,配置方法简述如下:

第一步】使用安装光盘作为本地YUM源,插入光盘,执行如下命令

shell>mkdir /mnt/cdrom

shell>mount /dev/cdrom /mnt/cdrom

 

第二步】进入/etc/yum.repos.d目录,编辑或创建server.repo配置文件,内容如下

shell> vim /etc/yum.repos.d/server.repo

###添加如下内容

[server]

name=server

baseurl=file:///mnt/cdrom

enabled=1

gpgcheck=0

 

第三步执行如下命令

shell>yum clean all

shell>yum makecache

 

安装keepalived

shell>yum -y install keepalived

 

设置keepalived的开机自启动

shell>chkconfig --add keepalived

shell>chkconfig --level 3 5 keepalived on

注:以上安装keepalived操作在masterslave两个节点上都需要执行。

 

配置master节点的keepalived的配置文件

###master节点的keepalived配置文件

shell>vim /etc/keepalived/keepalived.conf

##修改如下:

……

vrrp_instance VI_1 {

    state BACKUP                       #masterslave都配置成backup

    interface enp2s0                    #指定HA检测的网络接口

    virtual_router_id 51                 #虚拟路由标识 两节点相同均51

    priority 100                        #定义优先级 slave节点设为90

    advert_int 1                       #设定同步检查的时间间隔

    nopreempt

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {                  #设置虚拟IP,即对外服务的VIP

        192.0.2.116

    }

}

 

virtual_server 192.0.2.116 3306 {          #VIP和对外服务端口

    delay_loop 2                      #监测real server状态的时间间隔

    lb_algo wrr

    lb_kinf DR

    persistence_timeout 50

    protocol TCP

 

    real_server 192.0.2.115 3306 {        #实际服务IP和端口

        weight 1

        notify_down /usr/local/keepalived/bin/mysql.sh #服务down的后续动作

        TCP_CHECK {

        connect_timeout 10

        bingto 192.0.2.116

        nb_get_regry 3

        delay_before_retry 3

        connect_port 3306

        }

    }

}

 

 

###创建keepalived监测脚本,当本地mysql服务挂掉时,关闭本地的keepalived服务,实现VIP”漂移到另一节点的故障切换功能

shell>mkdir -p /usr/local/keepalived/bin/

shell>vim /usr/local/keepalived/bin/mysql.sh

#!/bin/bash

pkill keepalived

 

###修改该脚本权限

shell>chmod 755 /usr/local/keepalived/bin/mysql.sh

 

 

 

配置slave节点的keepalived的配置文件

###slave节点的keepalived配置文件

shell>vim /etc/keepalived/keepalived.conf

##修改如下:

……

vrrp_instance VI_1 {

    state BACKUP                       #masterslave都配置成backup

    interface enp2s0                    #指定HA检测的网络接口

    virtual_router_id 51                 #虚拟路由标识 两节点相同均51

    priority 90                        #定义优先级 master节点设为100

    advert_int 1                       #设定同步检查的时间间隔

    nopreempt

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {                  #设置虚拟IP,即对外服务的VIP

        192.0.2.116

    }

}

 

virtual_server 192.0.2.116 3306 {          #VIP和对外服务端口

    delay_loop 2                      #监测real server状态的时间间隔

    lb_algo wrr

    lb_kinf DR

    persistence_timeout 50

    protocol TCP

 

    real_server 192.0.2.119 3306 {        #实际服务IP和端口

        weight 1

        notify_down /usr/local/keepalived/bin/mysql.sh #服务down的后续动作

        TCP_CHECK {

        connect_timeout 10

        bingto 192.0.2.116

        nb_get_regry 3

        delay_before_retry 3

        connect_port 3306

        }

    }

}

 

###创建keepalived监测脚本,当本地mysql服务挂掉时,关闭本地的keepalived服务,实现VIP”漂移到另一节点的故障切换功能

shell>mkdir -p /usr/local/keepalived/bin/

shell>vim /usr/local/keepalived/bin/mysql.sh

#!/bin/bash

pkill keepalived

 

###修改该脚本权限

shell>chmod 755 /usr/local/keepalived/bin/mysql.sh

 

 

启动两个节点的keepalived服务

shell> systemctl start keepalived.service

shell> systemctl status keepalived.service

 

⑦查看vip是否只在其中一个节点上

shell>ip addr

 

如上图所示,vip漂移在slave节点119上。

 

三、mysql故障切换测试

在两节点的keepalived服务都正常运行的情况,查看VIP漂移在哪个节点上

shell>ip addr

 

用客户端从vip上登陆mysql,查看mysql服务的机器名

shell>mysql -h192.0.2.116 -uroot -p

mysql>show variables like ’hostname%’;

 

关闭①步骤中确认的节点上的mysql服务,模拟该节点的mysql服务故障,确认此时VIP是否已经’漂移’到另一个节点上

###关闭当前提供服务的mysql实例

shell> mysqladmin -uroot -p shutdown;

###确认VIP的漂移情况

shell>ip addr

 

 

继续在客户端上查看mysql服务的机器名

mysql> show variables like ’hostname%’;

 

四、注意事项:

①关闭linux系统的防火墙

关闭linux系统的SELINUX服务

 

附录:

一、keepalived源码编译安装方式

1、官网下载最新版keepalived

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

 

shell> wget http://www.keepalived.org/software/keepalived-1.2.22.tar.gz

 

2、安装keepalived依赖软件包

shell>yum install pcre-devel openssl-devel popt-devel libnl-devel

 

3、解压并安装keepalived

shell>tar zxf keepalived-1.2.22.tar.gz

shell>cd keepalived-1.2.22

shell>./config --prefix=/usr/local/keepalived --sysconf=/etc

shell>make

shell>make install

 

###链接keepalived/sbin目录

shell>ln -s /usr/local/keepalived/sbin/keepalived  /sbin/

 

###设置keepalived的启动级别

shell>chkconfig --add keepalived

shell>chkconfig --level 3 5 keepalived on

 

原创粉丝点击