MYSQL_OK is 1 , mysql down MYSQL_OK is 0
MYSQL_OK=1
function check_mysql_helth (){
$MYSQL -h $MYSQL_HOST -u $MYSQL_USER -p$MYSQL_PASSWORD -e "show status;" >/dev/null 2>&1
if [ $? = 0 ] ;then
MYSQL_OK=1
else
MYSQL_OK=0
fi
return $MYSQL_OK
}
while [ $CHECK_TIME -ne 0 ]
do
let "CHECK_TIME -= 1"
check_mysql_helth
if [ $MYSQL_OK = 1 ] ; then
CHECK_TIME=0
exit 0
fi
if [ $MYSQL_OK -eq 0 ] && [ $CHECK_TIME -eq 0 ]
then
pkill keepalived
exit 1
fi
sleep 1
done
(6)启动keepalived,查看虚拟IP是否绑定成功
mastermysql
[root@node1 ~]# service keepalived start
查看keepalived状态
[root@node1 ~]# service keepalived status
keepalived (pid 15712) is running...
查看是否绑定虚拟IP
[root@node1 ~]# ip addr
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:19:27:ad brd ff:ff:ff:ff:ff:ff
inet 192.168.3.27/24 brd 192.168.3.255 scope global eth0
inet 192.168.3.33/32 scope global eth0
backupMySQL
[root@node2 keepalived]# service keepalived status
keepalived (pid 13808) is running...
[root@node2 keepalived]# ip addr
1: lo: mtu 16436 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
2: eth0: mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:0c:29:de:b3:a1 brd ff:ff:ff:ff:ff:ff
inet 192.168.3.28/24 brd 192.168.3.255 scope global eth0
从上可以看到masteMySQL上虚拟IP绑定成功,backupMySQL上keepalived服务正常运行,但无虚拟IP(这属于正常)
三.测试验证
通过VIP 192.168.3.33登陆MySQL,正常使用
1.停止master上MySQL服务
[root@node1 ~]# service mysql stop
Shutting down MySQL... [ OK ]
[root@node1 ~]# service mysql status
MySQL is not running [FAILED]
MySQL服务停止后,查看keepalived服务是否运行
[root@node1 ~]# service keepalived status
keepalived dead but subsys locked
可见keepalived已经停止了
2.查看backupMySQL
[root@node2 keepalived]# service mysql status
MySQL running (13740) [ OK ]
[root@node2 keepalived]# service keepalived status
keepalived (pid 13808) is running...
mysql> show variables like 'read_only';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| read_only | OFF |
+---------------+-------+
1 row in set (0.00 sec)
可见MySQL服务及keepalived都正常运行,切该库处于可写状态
3.查看只读库slave状态
mysql> show slave status \G;
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.3.28
Master_User: repl
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000011
Read_Master_Log_Pos: 107
Relay_Log_File: mysql-relay-bin.000002
Relay_Log_Pos: 253
Relay_Master_Log_File: mysql-bin.000011
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Replicate_Do_DB:
Replicate_Ignore_DB:
Replicate_Do_Table:
Replicate_Ignore_Table:
Replicate_Wild_Do_Table:
Replicate_Wild_Ignore_Table:
Last_Errno: 0
Last_Error:
Skip_Counter: 0
Exec_Master_Log_Pos: 107
Relay_Log_Space: 409
Until_Condition: None
Until_Log_File:
Until_Log_Pos: 0
Master_SSL_Allowed: No
Master_SSL_CA_File:
Master_SSL_CA_Path:
Master_SSL_Cert:
Master_SSL_Cipher:
Master_SSL_Key:
Seconds_Behind_Master: 0
Master_SSL_Verify_Server_Cert: No
Last_IO_Errno: 0
Last_IO_Error:
Last_SQL_Errno: 0
Last_SQL_Error:
Replicate_Ignore_Server_Ids:
Master_Server_Id: 28
1 row in set (0.00 sec)
可见master已由192.168.3.27切换为192.168.3.28
4.通过VIP访问MySQL数据库,我们继续测试
删除test库下的student表
DROP TABLE student;
查看从库,test库下的student表已不存在,数据同步成功。
5.管理节点查看MHA运行情况
[root@m