在 OceanBase 中,关于分布式事务的故障恢复,以下说法正确的是?


A. 如果协调者在发送 Commit 指令前故障,所有参与者会一直持有锁,直到协调者恢复。

B. OceanBase 通过 Paxos 协议将协调者的状态同步到多数派副本,即使协调者节点故障,其他副本也可以恢复协调者状态并继续完成事务。

C. 参与者收到 Commit 指令后,如果本地提交失败,事务会自动回滚,无需人工介入。

D. 分布式事务的回滚只需要协调者发出 Abort 指令,参与者立即丢弃本地修改,无需回放 Clog。

3 个赞

解析
OceanBase 的分布式事务协调者本身也是高可用的,其状态通过 Paxos 协议同步到多数派副本。当协调者节点故障时,其他副本可以利用同步的状态信息(如事务参与者列表、当前阶段等)恢复协调者角色,继续推进事务(Commit 或 Abort),避免了传统 2PC 中协调者单点故障导致的事务悬挂问题。

  • A 错误 :协调者状态通过 Paxos 持久化,可由其他副本接管,不会永久阻塞。
  • B 正确 :Paxos 协议保障协调者的高可用。
  • C 错误 :本地提交失败需要人工介入排查(如磁盘满、约束冲突等),不会自动回滚。
  • D 错误 :回滚需要回放 Clog 中的 Undo 日志来恢复数据,不能简单丢弃。
4 个赞

正确答案:B

4 个赞

非常详细

3 个赞

B. OceanBase 通过 Paxos 协议将协调者的状态同步到多数派副本,即使协调者节点故障,其他副本也可以恢复协调者状态并继续完成事务。

3 个赞