OB有问必答 | OceanBase如何保证数据可靠性? -阿里云开发者社区

开发者社区> OceanBase> 正文

OB有问必答 | OceanBase如何保证数据可靠性?

简介: “OB有问必答”是OceanBase最新上线的互动类栏目,每周围绕一个关于分布式数据库的议题为大家详细展开解答,今天我们围绕数据可靠性话题讨论,如果你有任何感兴趣的问题,欢迎留言,我们会每周选取一个问题为大家详细解答

在传统数据库中,有以下几种常用的手段来保证数据可靠性:

1) Redo Log;2) 主从热备;3) 备份/恢复;4) 存储层数据校验

这些技术从很大程度上提高数据的可靠性,但似乎都无法做到完美(即RPO=0)。OceanBase分布式数据库更多的是在软件层面引入保障机制,OceanBase充分利用了Paxos协议,并将Paxos协议和传统的WAL机制结合起来,每一次Redo Log落盘时,都会以强一致方式同步到Paxos组中多数派(leader+若干follower)副本的磁盘中,这样做有两个好处:

1)在Paxos组中任意少数派副本发生故障的情况下,剩下的多数派副本都能保证有最新的Redo Log,因此就能避免个别硬件故障带来的数据损失,保证RPO=0。

2)Paxos协议中的数据强一致是针对“多数派”副本而言,如果Paxos组中有少数派follower副本发生故障,剩下的多数派副本(leader+若干follower)之间的数据强一致完全不受影响,这就解决了主从热备模式下备副本故障拖累主副本的可用性。

综合以上两点,OceanBase利用Paxos协议可以保证RPO=0,且不必担心应用的性能会受到影响,这也是OceanBase和传统数据库在数据可靠性方面最显著的不同点。

OceanBase除了在存储层引入了数据校验机制,还加入了更多的技术手段来预防或者解决错误,大致包含以下内容:

1)Redo Log的数据校验:Redo Log在落盘的时候会加上数据校验信息,用来应对可能发生的磁盘静默错误。此外,为了保证一个Paxos组中多个副本之间Redo Log的一致性,Redo Log在leader发送和follower接受时都会检查数据校验信息,避免网络传输问题导致的数据错误。

2)数据盘上的校验信息:和Redo Log类似,数据盘上的数据也会有校验信息以应对磁盘静默错误。但由于OceanBase是通过Redo Log实现Paxos组中多个副本之间的数据同步,数据盘上的数据并不会通过网络传输在多个副本间同步,因此不需要副本间的实时校验。

3)副本间的检查点一致性校验:OceanBase会在一些特定的检查点,对多个副本之间的数据盘做一致性检查。这个检查点选在了OceanBase的“每日合并”点,主要的原因是每日合并动作本身就要对大量数据做归并和重新写入,刚好可以利用这个时机做数据的一致性检查。通过这个检查,进一步在存储层确保了多个副本之间的数据一致性,提高了数据可靠性。

4)数据表和索引表之间的数据一致性校验:对于有关联关系的数据对象,OceanBase会做额外的检查以保证它们之间的数据一致性。比较典型的例子就是索引和它的数据表,OceanBase会在一些特定的检查点(如每日合并点)做索引和数据表之间的一致性检查,进一步提高数据可靠性。

5)定期做数据校验信息检查:OceanBase定期检查任务,在不影响在线业务的前提下,利用数据校验信息主动检查磁盘静默错误,一旦发现错误会及时通知用户,尽快采取补救措施。

最后,OceanBase也和传统数据库一样提供完善的备份/恢复机制,包括全量备份功能和增量备份功能。而且OceanBase的增量备份是以不间断的后台daemon任务形式持续进行,完全不影响在线业务,降低了运维操作的复杂度。不过从分布式数据库的运行实践来看,在实际系统中极少发生Paxos组中多数派副本同时毁坏的情况,因此基本不会真正用到备份来恢复数据。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
OceanBase
使用钉钉扫一扫加入圈子
+ 订阅

OceanBase数据库由蚂蚁集团完全自主研发的企业级分布式关系数据库,始创于 2010 年。具有数据强一致、高可用、高性能、在线扩展、高度兼容 SQL 标准和主流关系数据库、低成本等特点。至今已成功应用于支付宝及阿里巴巴全部核心业务。并从 2017 年开始服务于广泛行业客户,包括南京银行、西安银行、天津银行、苏州银行、东莞银行、常熟农商行、广东农信、中国人保等近四十家银行、保险和证券机构,以及印度最大支付公司Paytm。

官方博客
官网链接