暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OceanBase-GTS高可用

原创 seven 2023-05-15
233


 

全局时间戳服务(Global Timestamp Service,简称 GTS),OceanBase 数据库内部为每个租户启动一个全局时间戳服务,事务提交时通过本租户的时间戳服务获取事务版本号,保证全局的事务顺序。

GTS 是集群的核心,需要保证高可用。

  • 对于用户租户而言,OceanBase 数据库使用租户级别内部表 __all_dummy 表的 leader 作为 GTS 服务提供者,时间来源于该 leader 的本地时钟。GTS 默认是三副本的,其高可用能力跟普通表的能力一样,保证单节点故障场景下 RTO<30s。

GTS 维护了全局递增的时间戳服务,异常场景下依然能够保证正确性:

  • 有主改选

    原 Leader 主动发起改选的场景,我们称为有主改选。新 leader 上任之前先获取旧 leader 的最大已经授权的时间戳作为新 leader 时间戳授权的基准值。因此该场景下,GTS 提供的时间戳不会回退。

  • 无主选举

    原 leader 与多数派成员发生网络隔离,等 lease 过期之后,原 follower 会重新选主,这一个过程,我们称为无主选举。选举服务保证了无主选举场景下,新旧 Leader 的 lease 是不重叠的,因此能够保证本地时钟一定大于旧主提供的最大时间戳。因此新 leader 能够保证 GTS 提供的时间戳不回退。

OceanBase 数据库 3.x 及之前的版本 GTS 生成的时间戳并未持久化,依赖于宕机恢复时间 > 最大可能的时钟跳变时间来保证正确性;后续 OceanBase 数据库版本会持久化 GTS 分配的时间戳,解除上述对时钟跳变的依赖。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论