复制表需要日志全部同步到其他副本才可以提交吗?

我记得复制表是在所有OBServer节点都有一份副本,如果修改复制表数据,日志需要所有OBServer上的副本落地才能完成用户提交吗?

1 个赞

是的。
如果有备副本节点故障,会临时拉黑。

3 个赞

谢谢

2 个赞

记得复制表是为解决副本延迟问题,每个节点实时广播同步。

复制表最适合用于小表、高频访问、低频更新、强一致性要求的场景

2 个赞

谢谢大佬

2 个赞

优秀!!!

2 个赞

@论坛小助手

1 个赞

根据文档库中的信息,复制表并不需要日志全部同步到其他副本才可以提交。以下是详细解答:

  1. 复制表的日志流特性
    根据“副本介绍 → 日志流介绍 → 广播日志流”部分的描述,复制表的数据存储在广播日志流上。广播日志流会在租户内的每个 OBServer 节点上部署一个副本,但这些副本分为两种类型:

    • F 副本(FULL 副本):参与 Paxos 一致性协议投票的全功能型副本。
    • R 副本(READONLY 副本):只读型副本,不参与投票,仅用于提供强一致性读。

    因此,并非所有 OBServer 上的副本都需要参与日志同步和提交。

  2. 事务提交机制
    根据“分布式一致性协议”部分的描述,OceanBase 数据库使用 Paxos 协议在同一日志流各副本间同步事务日志。事务提交只需要多数派副本(即 F 副本)同步成功即可完成,而 R 副本并不参与投票。这意味着,即使某些 R 副本尚未同步日志,事务仍然可以提交。

  3. 总结
    复制表的修改并不需要日志同步到所有 OBServer 上的副本才能完成用户提交。事务提交只需满足 Paxos 协议的多数派同步要求即可。R 副本的存在主要是为了支持强一致性读,而不影响事务的提交性能。

希望以上解答能帮助您更好地理解复制表的机制!如果还有其他疑问,请随时提问。

具体信息可参考以下文档:

  1. OceanBase 数据库整体架构
  2. 副本介绍
  3. 复制表
  4. 日志流
  5. Failover
  6. 日志流和副本概述
  7. 分布式事务
1 个赞

那这个强一致性咋理解呢?比如:我用到的某张表关联的复制表恰好所在副本就没同步呢,是否要等他同步完才能返回结果?