Part 01
概述
Mysql作为市场上最受欢迎的数据库之一,可以给业务提供稳定的数据读写能力。随着业务场景多样化,单一的数据库管理已经不满足市场需求,逐渐的衍生出了多种类型的高可用方案,其中MHA最受欢迎,但MHA依赖分布式mha4服务,容错性差,且造成浪费资源。所以我们需要通过双高可用方式来提高数据库的稳定性。
Part 02
组成
图片
Mysql高可用包含3个模块,具体模块详情如下:
➤keeplived服务:主要提供可用VIP;
➤Mysql_cluster服务:实现用户数据的读写和故障迁移;
➤同步检测服务:通过拨测检查服务同步状态,进行异常处理。
Part 03
方案介绍
1️⃣通过域名对外提供服务;
2️⃣两台Mysql都可读写,互为主备,masterA负责数据的写入,masterB备用;
3️⃣masterA是masterB的主库,masterB又是masterA的主库,它们互为主从;
4️⃣两台主库之间做高可用,可以采用keepalived方案(使用VIP对外提供服务);
5️⃣masterA或masterB均不因异常恢复后而抢占VIP(nopreempt);
6️⃣masterA和masterB均有同步数据探测,同步异常及时处理。
Part 04
方案优势
数据库高可用方案具有以下优势:
➤ 多集群管理:降低了多种异常发生造成的影响,提高了环境的稳定性。
➤ 数据准确性:Mysql单节点写入,不容易造成数据覆盖、主键重复等问题,解决了同步异常无法确定以哪个库为准的问题。
➤ 降本增效:与传统数据库高可用相比,服务器资源占用降低了30%以上、节省运维成本40%以上。
➤ 检测机制:频率性监测机制,确保及时发现问题,自身治愈。
Part 05
方案效果
masterA和masterB可以采用单/双递增主键:
1.解决Mysql节点都可以写入,极其容易造成主键重复,进而导致主从同步失败的问题。
2.标识数据通过哪个数据库写入。
Part 06
结束语
在整体方案上,如果要保证数据的准确性,就依赖于单写,技术架构上就存在单点压力过载的风险,目前数据库单写是瓶颈。读写分离、多写将是未来的主要发展趋势,技术架构难解决的问题,我们可以通过业务侧来解决,根据业务分类选择高可用架构中不同的数据库存储,可以保证单业务侧的数据完整性,就能解决单写和单点压力过载的问题。为不同业务应用场景提供相匹配的解决方案,实现多种应用场景才是我们的初衷。