mysql高可用服务部署
Mysql主从搭建完毕,(mysql 主从部署请看MySQL 主从复制)现在有一个问题,如果master服务器down机了,如何快速恢复服务呢?
我们有两套解决方法:
1.如果程序连接的是master的IP,直接在slave服务器上添加master的IP即可。这个手动去操作,而且需要花费时间比较长,可能还会出现误操作的情况,不推荐
2.可以使用keepalived、heartbeat作为HA检测软件,检查MySQL服务是否正常,不正常则自动切换到slave上,推荐使用
那么我们接下来就看一下如何实现:
cd /data
yum -y install dernel-devel popt-devel openssl-devel
wget http://keepalived.org/software/keepalived-1.2.1.tar.gz
tar zxf keepalived-1.2.1.tar.gz
cd keepalived-1.2.1
./configure --prefix=/usr/local/keepalived
--with-kernel-dir=/usr/src/kernels/2.6.32-573.7.1.el6.x86_64/
在编译的时候会遇到一些问题
****************************************************************************************
注意:若此处 /usr/src/kenels/ 下没东西,可能过安装 kernel-devel 组件:
yum -y install kernel-devel
安装后,执行以上操作
说明缺少popt-devel 组件,安装此组件即可:
yum -y install popt-devel
出现此提示,是缺少openssl-devel 组件,直接安装即可
****************************************************************************************
出现此界面,证编译成功
make && make install ;echo $?
若返回0,即证明安装成功
设置开机启动
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/rc.d/init.d
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig
cp /usr/local/keepalived/sbin/keepalived /usr/sbin
chkconfig --add keepalived
chkconfig --level 35 keepalived on
keepalived 安装成功
mkdir -p /etc/keepalived
配置master服务器,keepalived配置文件内容如下:
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
}
notification_email_from [email protected]
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
# VIP1
vrrp_instance VI_1 {
state BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 151
priority 100
advert_int 5
nopreempt
authentication {
auth_type PASS
auth_pass 2222
}
virtual_ipaddress {
192.168.10.200 #此处为虚拟IP
}
}
virtual_server 192.168.33.100 3306 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 60
protocol TCP
real_server 192.168.10.171 3306 { #此处为你的真实机IP
weight 100
notify_down /data/sh/mysql.sh #此处为关闭 keepalived 的脚本地址
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 3306
}
}
}
mysql从 主机部署与主相同,只需将配置文件中的 real_server 修改为自己的IP ,将优先级修改为小于100的数字即可
mysql.sh 脚本内容为:
#!/bin/bash
pkill -0 mysqld
if [[ ! $? -eq 0 ]];then
/etc/init.d/mysqld start
sleep 5
pkill -0 mysqld
if [[ ! $? -eq 0 ]];then
pkill keepalived
fi
fi
给脚本执行权限:
chmod +x /data/sh/mysql.sh