数据库的发展始终与用户需求变迁紧密相关。近年来,数据上云的趋势愈演愈烈,越来越多的企业选择把数据库迁移上云,这对云上数据库的产品性能,尤其在可靠性和安全性方面,提出了更高的要求。
而现实情况是,企业在云上使用自建数据库的过程中,由于原生开源MySQL的事务能力并不完善,事务可能面临丢失的风险,难以保证事务执行前后数据的可靠性和一致性。事务丢失给企业造成的损失,也加大了部分企业对数据上云的担忧。
什么是“事务”?事务是指数据库中对数据进行一个或者多个复杂操作的基本单元,它承载着业务持续发展的使命,不容有失。
以购物场景为例,一个完整的购物过程通常包括买家付钱、卖家交付商品并在库存中减掉本次出售商品的数量、卖家收款三个操作。这三个操作是独立的,但是这三个操作需要都完成后,整个购物操作才算完成。这样的三个操作,就可以看作是一个事务,即一个事务中包含很多操作,要么都完成,要么都不完成。数据库中事务的丢失,可能会导致很多复杂数据的丢失。
天翼云关系型数据库MySQL具有高可靠特性,基于主备架构,能够在最大程度兼顾主库效率的同时保证主库崩溃时服务不中断,做到事务零丢失,进而保证企业业务稳定连续,将故障影响降至最小,为企业排忧解难。
精准判断主库崩溃时的复制状态
天翼云关系型数据库MySQL半同步复制,是基于状态通道和时间戳的高可靠特性来实现的,其总体工作流程为:
数据库管控平台高可用模块(HA)保存主库末位的复制状态和时间戳,备实例保存主库末位的复制状态和时间戳,然后通过比较二者的状态与时间戳值来精准判断主库崩溃时的复制状态。
从原理上来看是相对简单的,但在落地时并不容易,天翼云团队通过大量实践验证做到了精准判断。
根据主库崩溃状态自行恢复服务
此前,天翼云关系型数据库MySQL半同步复制状态下绝大多数情况是同步复制状态,极少数情况下(如执行大事务时)会转换到异步复制状态,然后自动转换回同步复制状态。
现在,天翼云关系型数据库MySQL半同步复制凭借高可靠特性能够精准判断主库崩溃时的复制状态,并依此按照以下四种情况准确恢复服务:
1.在同步复制状态下主库发生崩溃。此时先尝试拉起主库,拉起主库成功,保证事务不丢失,在这个过程中可实现秒级恢复服务。
2.在同步复制状态下主库发生崩溃,且拉起主库失败。此时主备数据一致,会将服务平滑切换到备库,保证事务不丢失,并且秒级恢复服务。
3.在异步复制状态下主库发生崩溃,不能切换到备库,拉起主库成功,保证事务不丢失,在这个过程中可以实现秒级恢复服务。
4.在异步复制状态下主库崩溃后,不能切换到备库,且不能拉起主库,会在原来的数据上恢复主库,保证事务不丢失,在这个过程中可以实现分钟级恢复服务。
天翼云关系型数据库MySQL半同步复制高可靠特性,能最大程度保证主库效率,是因为主库的事务提交完全依赖于备库的信号,而备库把事务写入中继日志后也会立即返回一个ACK(即确认字符),没有强同步复制备库回放事务带来的主从时延。
场景应用
机房故障断电
用户使用天翼云关系型数据库MySQL,主备机跨AZ(可用区)部署,如果主库所在的AZ(可用区)机房故障断电不可用,主库因此发生故障,用户服务发生中断,此时天翼云关系型数据库MySQL凭借高可靠特性可以使服务在秒级完成主备切换,并且做到服务与中断前的数据视图完全一致,不会有任何事务丢失。
大事务执行期间数据库宕机
用户使用天翼云关系型数据库MySQL半同步复制模式时,当主库正在执行大事务,并且复制状态从同步复制转换到异步复制时,主库突然宕机,服务因此被迫中断,天翼云关系型数据库MySQL主库会在数秒内被拉起并对外提供服务,并且与中断前的数据视图完全一致,不会有任何事务丢失。
天翼云关系型数据库MySQL的高可靠特性在保障事务不丢失的前提下,能够同时做到秒级恢复(极端情况下,分钟级恢复),从而确保主备实例的数据一致性,极大提高了数据可靠性。这是天翼云为企业数据保驾护航,践行“致力于打造企业级数据底座”的有力体现。