森哥瞧世界

您现在的位置是:首页>文档内容页

文档详情

双主MySQL及基于Keepalived的高可用保障数据安全的安装配置(三)​

jeson 2020-03-17 13:36:30 应用服务6268
MySQL集群是生产环境中,经常会遇到的,这即可保障数据库的安全,又确认了应用服务的有效运行。今天森哥带着大家一起来玩一玩高可用下的双主MySQL实现方案。

五、配置keepalived

请注意,两台服务器的时间要一致。最好是同步一下。

在两台数据库上面安装keepalived应用

yum install -y keepalived

进入keepalived的配置文件夹内。

cd /etc/keepalived/

由于我们是要监测MySQL的状态,若其中一台MySQL数据库出问题的时候,需要自动切换到另一台,这里,就需要用到前面提到的VIP。

首先,我们需要先创建一个MySQL状态的监测脚本,这里,简单的,以监测MySQL的端口为例。

[root@mysql-00 keepalived]# cat keepalived_check_mysql.sh
#!/bin/bash
# Author: Fixes.cn
# Date: 20200317
# History:
#           20200317:
#           1、简单的基于端口检测的方式,判断named,http服务器是否存活
#

v_tcp_3306=$(
   lsof -i tcp:3306 >/dev/null 2>&1
   echo $?
)

v_log="/var/log/keepalived_checking.log"

   if [ "$v_tcp_3306" != "0" ]; then
       echo -n "$(date)  " >>$v_log
       echo "[warn] MySQL service port 3306 chekcing fail , restart now !" >>$v_log
       systemctl restart mysqld >/dev/null 2>&1
       sleep 10
       v_tcp_3306=$(
           lsof -i tcp:3306 >/dev/null 2>&1
           echo $?
       )

       if [ "$v_tcp_3306" != "0" ]; then
           echo -n "$(date)  " >>$v_log
           echo "[critical] MySQL Server port 3306 check still failed, keepalived stopping !" >>$v_log
           systemctl stop keepalived
       fi
   fi

将该脚本,存放在/etc/keepalived/文件夹下面,两台数据库服务器上的都一样。

接着,要对keepalived.conf进行动刀。先备份好一份。

cp keepalived.conf keepalived.conf.bak

清空原来的keepalived.conf

> keepalived.conf

将调整过的内容,写入进去。

MySQL-00上操作。

cat keepalived.conf
! Configuration File for keepalived

global_defs {                              //报警通知
  script_user root
  enable_script_security
  notification_email {
    mail@mail.com
  }
  notification_email_from mail@mail.com
  smtp_server smtp.mail.com
  smtp_connect_timeout 30
  router_id master-node
}

vrrp_script check_mysql_status {
script "keepalived_check_mysql.sh"     //调用刚刚写的关于MySQL监测的脚本

interval 5                            //每5秒监测一次
}

vrrp_instance mysqldata {
   nopreempt
   state BACKUP
   interface ens192
   virtual_router_id 99              //两台要一样。
   priority 100                         //调整优先级,数值越大,优先级越高。
   advert_int 5
   authentication {
       auth_type PASS
       auth_pass Fixes.cn.888          //两台要一样
   }
   virtual_ipaddress {
       172.16.3.100/23                 //VIP地址
   }
   track_script {
   check_mysql_status
   }
}

MySQL-01上操作。

cat keepalived.conf
! Configuration File for keepalived

global_defs {                              //报警通知
  script_user root
  enable_script_security
  notification_email {
    mail@mail.com
  }
  notification_email_from mail@mail.com
  smtp_server smtp.mail.com
  smtp_connect_timeout 30
  router_id master-node
}

vrrp_script check_mysql_status {
script "keepalived_check_mysql.sh"     //调用刚刚写的关于MySQL监测的脚本

interval 5                            //每5秒监测一次
}

vrrp_instance mysqldata {
   nopreempt
   state BACKUP
   interface ens192
   virtual_router_id 99                //两台要一样
   priority 100                         //调整优先级,数值越大,优先级越高。
   advert_int 5
   authentication {
       auth_type PASS
       auth_pass Fixes.cn.888          //两台要一样
   }
   virtual_ipaddress {
       172.16.3.100/23                 //VIP地址
   }
   track_script {
   check_mysql_status
   }
}

现在,重启一下keepalived

当其中一台出现如下,说明成功。

而另一台是不会出现这个IP的,只有当这台机器宕机后,才会自动的把VIP切换到另一台。这就是双主后的结果。

另外 ,由于keepalived在启动的过程中,不会出现错误的提示,所以,需要直接去检查一下日志。

在一台运行正常的时候,另一台就不正常了。发现是少了参数。加了

   script_user root
  enable_script_security

后,重启keepalived正常。

上面的配置,是正确的,是在调试完成后,直接附上的。

至此,MySQL双主高可用性下的安装与配置。完美收工。


双主MySQL及基于Keepalived的高可用保障数据安全的安装配置(一)

双主MySQL及基于Keepalived的高可用保障数据安全的安装配置(二)


文章评论

Cancel the reply
Login Participate In Comments

Review(