一、需求分析:

    本文结合之前heartbeatdrbd两篇文章,实现磁盘文件高可用。当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


三、实验结果:

  1. 在MySQL01上关闭heartbeat服务,以模拟主数据库服务器宕机:

Heartbeat+DRBD实现文件高可用_ 高可用

2. 在MySQL02上开启heartbeat日志(tail -f /var/log/ha-log)模式,查看程序运行状态:

Heartbeat+DRBD实现文件高可用_heartbeat_02

3. 在MySQL02上分别查看VIP绑定信息、磁盘挂载信息(/dev/drbd0可用)以及DRBD运行模式(切换至Primary状态):

Heartbeat+DRBD实现文件高可用_ 高可用_034. 在MySQL01上开启heartbeat,以模拟数据库服务恢复:

Heartbeat+DRBD实现文件高可用_heartbeat_04

5. 当然我们也可以从heartbeat日志中看到DRBD取消对/data的挂载,并释放了VIP:

Heartbeat+DRBD实现文件高可用_ DRBD_05

6. 此时MySQL02恢复原来Secondary状态:

Heartbeat+DRBD实现文件高可用_ DRBD_06