一、需求分析:
本文结合之前heartbeat与drbd两篇文章,实现磁盘文件高可用。当MySQL01(主数据库服务器)宕机后,MySQL02(备数据库服务器)可以通过heartbeat立刻检测到MySQL01挂了,MySQL02接管VIP,MySQL02的DRBD服务会自动从Secondary切换到Primary状态,然后自动加载DRBD逻辑盘:/dev/drbd0到/data目录,从而实现文件持续在线--即高可用状态;当MySQL01恢复后,VIP返回MySQL01,MySQL01的DRBD服务恢复Primary,并加载/dev/drbd0到/data。
二、实现前提:
防火墙处于关闭状态,或者确保能够允许heartbeat心跳流量及DRBD数据传输流量。
DRBD服务必须处于开启状态,主备服务器必须已完成Primary/Secondary状态配置。
keepalived配置文件:haresources必须正确添加上DRBD启动及挂载参数(/etc/ha.d/haresources):
# MySQL master mysqlm.stephenzhou.net #MySQL01.stephenzhou.net IPaddr::192.168.3.30/24/eth1 mysqld MySQL01.stephenzhou.net IPaddr::192.168.3.30/24/eth1 drbddisk::data Filesystem::/dev/drbd0::/data::ext4 # MySQL slave mysqls.stephenzhou.net MySQL02.stephenzhou.net IPaddr::192.168.3.32/24/eth1
三、实验结果:
在MySQL01上关闭heartbeat服务,以模拟主数据库服务器宕机:
2. 在MySQL02上开启heartbeat日志(tail -f /var/log/ha-log)模式,查看程序运行状态:
3. 在MySQL02上分别查看VIP绑定信息、磁盘挂载信息(/dev/drbd0可用)以及DRBD运行模式(切换至Primary状态):
4. 在MySQL01上开启heartbeat,以模拟数据库服务恢复:
5. 当然我们也可以从heartbeat日志中看到DRBD取消对/data的挂载,并释放了VIP:
6. 此时MySQL02恢复原来Secondary状态: