MySQL主主模式+Keepalived高可用( 三 )


我们再来看看检测的脚本/usr/bin/killall -0 mysqld , killall命令不是系统自带的 , 需要安装 , 我们还是使用yum来安装 , 如下:
# 先查询一下killallyum search killall?#找到了psmisc.x86_64Loading mirror speeds from cached hostfile===============Matched: killall ================================psmisc.x86_64 : Utilities for managing processes on your system?# 安装psmiscyum install psmisc这样我们就可以使用killall命令了 。 killall -0并不是杀掉进程 , 而是检查进程是否存在 , 如果存在则返回0 , 如果不存在则返回1 。 当返回1时 , keepalived就会切换主备状态 。
好了 , killall也介绍完了 , 我们在两台机器上启动keepalived , 如下:
# 启动keepalivedservice keepalived start然后 , 我们在192.168.73.141(主1)上查看一下IP是否有192.168.73.150 , 如下:
ip addr?1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: ens33:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:57:8c:cd brd ff:ff:ff:ff:ff:ffinet 192.168.73.141/24 brd 192.168.73.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet 192.168.73.150/32 scope global ens33# 我们看到了192.168.73.150valid_lft forever preferred_lft foreverinet6 fe80::720b:92b0:7f78:57ed/64 scope link noprefixroutevalid_lft forever preferred_lft forever到这里 , keepalived的配置就完成了 , 我们通过navicat连接192.168.73.150 , 可以正常的连接数据库 , 实际上它连接的是192.168.73.141的数据库 , 我们操作数据库也是正常的 。
然后 , 我们停掉192.168.73.141(主1)上的MySQL服务 ,
service mysqld stop?# 再用 ip addr查看一下ip addr1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope hostvalid_lft forever preferred_lft forever2: ens33:mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:57:8c:cd brd ff:ff:ff:ff:ff:ffinet 192.168.73.141/24 brd 192.168.73.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::720b:92b0:7f78:57ed/64 scope link noprefixroutevalid_lft forever preferred_lft forever192.168.73.150的IP找不到了 , 我们再去192.168.73.142(主2)上去查看 , 可以发现192.168.73.150的IP 。 我们在navicat上操作数据库 , 是可以正常使用的 。 但这时实际连接的是192.168.73.142(主2)的数据库 。 我们是没有感知的 。 如果我们把192.168.73.141(主1)上的mysql服务再启动起来 , 192.168.73.150还会切换到192.168.73.141(主1) 。
总结我们通过MySQL主主结构+keepalived双机热备实现了MySQL的高可用 , 我们应用程序可以连接虚IP , 具体连接的实际MySQL , 不需要我们关心 。 如果我们再做读写分离的话 , 可以将MySQL(主2)作为主 , 配置数据库的主从关系 。 这时 , 虚IP连接的是MySQL(主1) , MySQL(主1)将数据同步到MySQL(主2) , 然后MySQL(主2)再将数据同步到其他从库 。 如果MySQL(主1)挂掉 , 虚IP指向MySQL(主2),MySQL(主2)再将数据同步到其他从库 。