理论部分,在之前的文章已经说明过了

mysql 安装缺省密码 mysql安装时密码check失败_mysql 安装缺省密码

上一篇已经讲述对2台Mysql服务器做主主复制,实现Mysql数据库的数据保护。但是缺点是一旦单机故障,WEB服务器需要手动修改配置文件连接到备数据库,不能自动切换。

因此,本篇在上一篇Mysql主主复制的基础上,为两台Mysql服务器安装Keepalivce,并且增加mysql检测脚本,实现mysql服务器的高可用。

前提需要完成上一篇的主主复制配置。(主主复制,不是主从复制)

1、安装Keepalived

1.1 安装


yum install keepalived -y


1.2 修改配置文件


cd /etc/keepalived
rm keepalived.conf
#原有的配置文件
vi keepalived.conf
#创建新的配置文件


注意配置文件只有一些关键参数必须修改,其他都是默认的。

Master(主)服务器配置


! Configuration File forkeepalived
global_defs {
notification_email_from  [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_HA      #标识,双主相同
 }
vrrp_instance VI_1 {
 state BACKUP           #两台都设置BACKUP
 interface eth1
 virtual_router_id 51       #主备相同
 priority 100   #优先级,另一台改为90
 advert_int 1
 nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 10.1.30.30
 }
}

virtual_server 10.1.30.30 3306 {
     delay_loop 2   #每个2秒检查一次real_server状态
     lb_algo wrr   #LVS算法
     lb_kind DR    #LVS模式
     persistence_timeout 60   #会话保持时间
     protocol TCP
     real_server 10.1.30.28 3306 {
         weight 3
         notify_down /etc/keepalived/mysql.sh  #检测到服务down后执行的脚本
         TCP_CHECK {
             connect_timeout 10    #连接超时时间
             nb_get_retry 3       #重连次数
             delay_before_retry 3   #重连间隔时间
             connect_port 3306   #健康检查端口
         }
     }
}


注意上面配置中定义了一个叫mysql.sh的脚本,也就是需要写一个脚本检测mysql服务运行状况,keepalived启动后会自动按照设置好的时间间隔,周期性调用检测脚本。

Slave(从)服务器配置


! Configuration File forkeepalived
global_defs {
notification_email_from  [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id MYSQL_HA      #标识,双主相同
 }
vrrp_instance VI_1 {
 state BACKUP           #两台都设置BACKUP
 interface eth1
 virtual_router_id 51       #主备相同
 priority 90   #优先级,另一台改为90
 advert_int 1
 nopreempt  #不抢占,只在优先级高的机器上设置即可,优先级低的机器不设置
 authentication {
 auth_type PASS
 auth_pass 1111
 }
 virtual_ipaddress {
 10.1.30.30
 }
}

virtual_server 10.1.30.30 3306 {
     delay_loop 2   #每个2秒检查一次real_server状态
     lb_algo wrr   #LVS算法
     lb_kind DR    #LVS模式
     persistence_timeout 60   #会话保持时间
     protocol TCP
     real_server 10.1.30.29 3306 {
         weight 3
         notify_down /etc/keepalived/mysql.sh  #检测到服务down后执行的脚本
         TCP_CHECK {
             connect_timeout 10    #连接超时时间
             nb_get_retry 3       #重连次数
             delay_before_retry 3   #重连间隔时间
             connect_port 3306   #健康检查端口
         }
     }
}


1.3 创建Mysql检测脚本

然后在主备都创建如下一个文件。(主备都需要添加)


vim /etc/keepalived/mysql.sh


内容如下:


#!/bin/bash
pkill keepalived
sleep 10
/etc/init.d/keepalived start >/dev/null


增加执行权限


chmod +x /etc/keepalived/mysql.sh


启动keepalived服务


service keepalived start


2、测试

2.1修改Apache连接数据库配置


vi /var/www/html/config.php
$db_config['DB_HOST'] = '10.1.30.30'; 
#修改数据库地址为数据库keepalived配置VIP的地址


重启httpd服务


service httpd restart


测试通过Apache01、02(10.1.30.24、25)网站是否能够正常访问。


mysql 安装缺省密码 mysql安装时密码check失败_配置文件_02


2.2测试Mysql高可用

手动关闭Mysql01的mysql进程


service mysqld stop


刷新网站页面是否能够正常访问。


mysql 安装缺省密码 mysql安装时密码check失败_配置文件_02


网站访问正常,证明高可用配置成功。