高可用高可靠,华为RDS有话说
对于数据库来说,可用性和可靠性是永恒的话题,DBA会按照业务的不同要求选择不同的策略保证系统正常运作,其中包含数据库本身内核提供的能力和外部的监控管理系统。商用数据库提供全套的管理系统,缺点只有一个,贵。开源数据库也有很多生态工具以及借助于其他组件的解决方案,也能完成相应功能,但有一定的技术门槛和维护成本。
云数据库服务以较低的价格提供了企业级的解决方案,并节省了运维成本,只需要配置,服务就能按照业务诉求执行不同的管理策略,是企业的高性价比选择。 而不同的云厂商提供的方案和策略也是不同的。
首先从底层实现上,有两类,1是通过底层能力,比如AWS的DRBD方案,类似传统shared disk的冷备方案。 其他大部分厂商都利用数据库本身的能力即数据库主备同步的方式来实现。
MySQL有两种replication模式:
异步: 主机事务提交不会确认备机是否接到数据,写入和数据传输是个异步过程,主机性能比较好。
半同步:通常情况下主机会等待备机收到同步过去的binlog才提交数据,这样能保证数据不丢失。
但是这个能否保证数据不丢失呢? 答案是否定的,当网络异常或其他因素影响时,复制方式会降为异步。 所以半同步大体来说就是尽量保证数据不丢,但是在异常场景下还是可用性优先。
华为RDS是怎么做的呢?
首先在客户可以选根据业务可以选择复制模式, 如果业务有对账系统,希望保证最大的可用性和性能可以选择异步; 如果对可靠性要求较高可以选择半同步。
另外还增加了HA策略选择,客户可以选择高可用模式和高可靠模式。 HA monitor除了对主备实例进行健康检查以外还记录主备的同步情况;在高可用模式下发现故障直接切换。高可靠模式是HA monitor会根据当前的主备延迟进行判断,达到一定阈值则进行可靠性保护,不进行切换,保证数据库的可靠性。有了这两种设置,客户可以充分的根据业务进行灵活选择。
除了HA处理外,华为云还提供了补偿机制,可以将HA丢失数据找回,支持事后对账。
当主备切换原主恢复后,会与原备新主做数据检查,将丢失的部分数据生成一个“碎片备份”, 客户可以在备份列表中看到,然后根据业务需要选择将这部分数据进行恢复。
上面是华为在云服务化方面的优化处理,提供了强大的管理能力。 而在内核优化版本HWSQL上,更是结合内核和服务化进一步优化:
进行了半同步模式性能优化、并行复制等优化,半同步模式下性能损耗大幅降低,加上其他方面的性能优化,在半同步模式下HWSQL也能提供业界领先的性能表现,自信屏蔽异步模式。
在HA策略上,提供探针和降异步接口,控制降异步的过程,根据客户的选择可以提供强同步模式,保证数据0丢失。 在此模式下,如果故障则不进行切换,但是对于故障不会置之不理,虚拟化层的可靠性策略可以进行虚拟机层的HA漂移,将原主恢复。
从服务化到数据库内核到底层平台,华为RDS提供了360度的数据库SLA保障,目前HWSQL即将开放公测,敬请期待。
- 点赞
- 收藏
- 关注作者
评论(0)