mysql 双机切换_mysql 双机故障切换方案

情景描述:原来两台数据库server做主从,因为前端有redis帮忙扛着大部分读压力,故而数据库的压力并不大,所以我们也没做读写分离,从库单纯作为备份用。这样明

情景描述:

原来两台数据库server做主从,因为前端有redis帮忙扛着大部分读压力,故而数据库的压力并不大,所以我们也没做读写分离,从库单纯作为备份用。

这样明显有两个缺点

1、主库是单点

2、从库资源浪费

所以便想出了如下的方案:让从库作为主库的热备,具备自动故障切换(failover)功能。

基本思路:

将DB1和DB2做成主动被动模式的双主结构:DB1主动;DB2被动(通过read_only参数实现除root用户之外的只读特性),通过keepalived VIP对外,将VIP设置成原DB1的IP,保持改造过程对代码透明。

正常时,VIP在DB1,通过keepalived调用脚本定期检查mysql服务可用性(通过一个低权限用户连接mysql服务器并执行一个简单查询,根据返回结果来判定mysql是否可用)

若无法执行查询:

进一步通过 service mysql status 检查mysql服务是否正常:

若服务状态不正常,则尝试重启mysql,继续判断可用性:

若重启过后执行查询OK,则本次检查OK

若重启后仍无法执行查询,则应该关闭DB1的mysql,然后关闭DB1的keepalived,使VIP漂移到DB2,DB的keepalived察觉到自己进入mas

你可能感兴趣的:(mysql,双机切换)