【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【附件及日志】推荐使用OceanBase敏捷诊断工具obdiag收集诊断信息,详情参见链接(右键跳转查看):
单机多日志流事务。 在1-1-1的集群中,primar_zone z1,z2,z3 。 租户每个observer都是一个unit。
什么情况下才会出现 本地事务单机多日志流的情况呢 ?
-
UNIT_NUM
设置较大,导致同一台 OBServer 上承载多个 Unit。 - Locality 配置复杂,例如指定了非 Paxos 副本。
- Primary Zone 的优先级设置,导致 Leader 和 Follower 日志流集中分布在少数 OBServer 上。
- 集群扩容或缩容操作,导致资源重新分配。
- 一个observer 不可能承担 2 个 unit
OceanBase 产生单机多日志流事务需要满足以下两个条件:
- 事务涉及的表所涉及的多个日志流,其 Leader 在同一个 Server 上。
- 日志流的 Leader 与 Session 创建的 Server 相同。
由于 OceanBase 数据库日志流的设计,单机多日志流事务本质上也是分布式事务。为了提高单机的性能,OceanBase 数据库对事务内参与者副本分布相同的事务做了比较多的优化,相对于传统两阶段提交,大大提高了单机事务提交的性能。
- 负载均衡:虽然每个分区 Leader 的分布决定了流量在每个节点上的分布,但是为了实现更好的负载均衡,OceanBase 数据库可能会将多个日志流的 Leader 分配到同一个服务器上。这种设计有助于充分利用服务器资源,避免某些服务器负载过重而其他服务器闲置的情况。
- 高可用性:即使所有 Leader 属于同一日志流,将它们分配到同一个服务器上也可以提高系统的高可用性。当某个服务器发生故障时,其他服务器上的副本可以迅速接管服务,确保系统的连续运行。这是因为 OceanBase 数据库通过 Paxos 协议实现了多数派 Clog 强一致同步持久化,即使少数派副本发生故障,剩下的多数派副本也能保证有最新的 Clog,从而避免数据损失。
- 灵活性:将多个日志流的 Leader 分配到同一个服务器上提供了更大的灵活性。例如,在进行系统维护或升级时,可以更方便地调整 Leader 的分布,以减少对业务的影响。
- 性能优化:对于单机多日志流事务,OceanBase 数据库进行了大量的优化,使得事务内参与者副本分布相同的事务性能显著提升。这意味着即使多个日志流的 Leader 在同一个服务器上,事务处理的性能依然可以得到保障。
综上所述,OceanBase 数据库允许同一个服务器上存在多个日志流的主副本,这是为了实现负载均衡、提高高可用性、增强灵活性和优化性能。这种设计使得 OceanBase 数据库能够在分布式环境中高效、可靠地运行。
本地事务 单机多日志流。 事务应该是在租户内的吧。 一个租户再一个observer上会有多个leader 副本 日志流吗 ?
这个副本肯定是leader。
都出现事务了 。是不是应该都是 leader 副本在工作呢 。
举个例子:
- 如果有表是复制表,复制表的复制过程会用单独的日志流。
- 如果租户在A机器上有的分区数据同步到B1机器,有的分区数据同步到B2机器,那么就是2个日志流。
是的 都是leader副本在工作 你可以看看复制表
对于第2 条 疑问:
- 一个租户再一个unit上会出现 多个leader 日志流吗 ?
- 即使其他表的副本会出现在该unit , 也不能读写吧。 仅仅Leader副本提供读写 ?强一致性事务
会出现这种情况不? 一个租户内
1、不会 只会有一个
2、是的
还有其他情况 会触发 本地事务多日志流吗??
租户内哪些场景实现了这个?
一般来说z1模式,一个节点只有一个日志流,其中一个是leader。
如果设置了random模式,假设是三节点集群,则可能有3个日志流,三个日志流的leader每个节点各一个,不会集中在一起。
在z1模式下,如果一个节点上有多个resource unit,每个unit都会对应一个日志流,则会出现有多个日志流的情况。
是的 我找研发同学确认的
怎么设置或者什么情况 会出现 在一个租户内 一个节点上出现多个 resource unit 呢 ?
这个是正常的操作 黑屏下新建 resource unit 就可以了
即便最简单的情况,租户也不是只有一个日志流。
比如1002租户对应一个1001日志流,这是处理业务请求的日志流,还有一个ls_id=1的日志流,其对应的元数据租户1001,也有一个id=1的日志流。
您的意思是: 单机多日志流事务 。 业务租户的事务处理需要 meta 租户的日志流 和 业务租户的1号日志流 在加上其他 日志流 , 一起 工作, 才能完成 整个事务吗?
是的 你可以这么理解