麻烦请教下,OB 4.x 切主相关的操作是否影响业务?

【 使用环境 】测试环境
【 OB】
【 使用版本 】 OB 4.3.5.2
【问题描述】

请问 V4 版本,执行 修改 primary zone 操作,或者执行 stop server 操作。 带来了切 leader 的操作, 对业务角度,比如长事务 或者 未提交的事务等,是否有影响?

如果有影响主要是哪方面或者什么现象?

如果没有影响,麻烦请教下原理角度如何实现的?

谢谢!

@论坛小助手

在 V4 版本中,执行修改 primary zone 操作或执行 stop server 操作确实会触发切主(Leader 切换)。从业务角度来看,这种操作可能会对正在执行的长事务或未提交的事务产生以下影响:

  1. 长事务

    • 长事务可能会被中断,特别是在 Leader 切换期间,如果事务正在等待某些资源或锁,可能会导致超时。
    • 事务的执行时间可能会延长,因为新的 Leader 需要重新获取资源和锁。
  2. 未提交的事务

    • 未提交的事务可能会回滚。如果在 Leader 切换期间,事务还没有提交,那么新的 Leader 可能会认为这些事务是未完成的,并进行回滚。
    • 事务的可见性可能会受到影响,因为在 Leader 切换期间,某些数据可能暂时不可见。

原理角度

  • 租约机制:OceanBase 使用租约机制来保证数据的一致性和高可用性。Leader 副本在租约有效期内负责处理所有读写请求。当 Leader 发现 Follower 具备更高的优先级时,会触发切主操作。
  • 日志同步:在 Leader 切换过程中,新的 Leader 需要从旧的 Leader 获取最新的日志(Clog),确保数据的一致性。这个过程可能会导致短暂的服务中断。
  • 事务管理:OceanBase 的事务管理系统会在 Leader 切换期间处理未提交的事务,确保数据的一致性和完整性。未提交的事务可能会被回滚,以防止数据不一致。

总结来说,虽然 OceanBase 在设计上尽量减少了 Leader 切换对业务的影响,但在某些情况下,如长事务或未提交的事务,仍然可能会受到一定的影响。建议在执行这些操作时,尽量选择业务低峰期,并监控系统的运行状态。

更多信息请查看:

  1. 集群管理 FAQ
  2. SERVER
1 个赞

根据业务繁忙程度和事务有关系,数据库肯定会在每一个时刻发生表角色的变更,如果这个时间点业务要访问肯定会有影响,同时长事务也会影响

1 个赞