oceanbase数据库v4版本的日知流到底是什么啊,我实在理解不了。
不是clog吗,也就是Oracle中的redolog,mysql的binlog.
-
日志流的定义
日志流(Logstream,LS)是由 OceanBase 数据库自动创建和管理的实体,它代表了一批数据的集合,包括若干 Tablet 和有序的 Redo 日志流。 -
日志流的作用
日志流是事务提交的基本单位,用于记录数据库中的所有变更操作。它是分布式事务的参与者,通过 Paxos 协议实现多副本间的数据同步,保证副本间数据的一致性。
- 参考文档:片段标题《副本介绍 → 日志流介绍 → 日志流概念》。
- 日志流的特点
- 日志流内的修改可以完成原子提交。
- 跨多个日志流的事务使用优化的两阶段提交协议完成原子提交。
- 日志流支持副本迁移和复制,以达到机器管理和系统容灾的目的。
- 日志流可以抽象为 Tablet 容器,支持添加和管理 Tablet 数据。
- 参考文档:片段标题《集群架构 → 基本概念 → Logstream》。
-
广播日志流
从 V4.2.0 版本开始,OceanBase 引入了广播日志流的概念。广播日志流会在租户内的每个 OBServer 节点上部署一个副本,保证强一致性读。
根据文档库中的信息,日志流(Logstream,LS)是 OceanBase 数据库 V4.0 版本新引入的一个重要概念。以下是关于日志流的详细解释:
1. 日志流的基本定义
日志流是由 OceanBase 数据库自动创建和管理的实体,它代表了一批数据的集合,包括若干 Tablet 和有序的 Redo 日志流。具体来说:
- Tablet 是数据存储的基本单位,与分区一一对应。
- Redo 日志 记录了数据库中的所有变更操作。
2. 日志流的作用
日志流在 OceanBase 数据库中扮演了多个关键角色:
- 事务提交单位:在 V4.x 版本中,OceanBase 数据库以日志流为单位进行事务提交,而不是像 V3.x 版本那样以分区为单位提交。这使得事务提交更加高效。
- 分布式事务参与者:当事务修改跨多个日志流时,采用优化的两阶段提交协议完成原子提交。
- 高可用保障:通过 Paxos 协议实现了多副本日志同步,保证副本间数据的一致性。
参考文档:副本介绍 → 日志流介绍 → 日志流概念
3. 日志流的组成
一个日志流包含以下内容:
- 静态数据:存储在磁盘上的 SSTable。
- 增量数据:存储在内存上的 MemTable。
- Redo 日志:记录事务的日志。
参考文档:日志流副本概述
4. 日志流的副本
为了保证数据的安全性和高可用性,每个日志流的数据会存储多份,每一份称为一个副本。OceanBase 数据库 V4.x 支持以下类型的副本:
- 全能型副本(FULL/F):参与 Paxos 成员组,支持选举投票。
- 只读型副本(READONLY/R):从 V4.2.0 开始支持,不参与 Paxos 成员组。
- 列存副本(COLUMNSTORE/C):从 V4.3.3 开始支持,不参与 Paxos 成员组。
参考文档:日志流副本概述
5. 日志流的选举机制
日志流的角色(如 Leader 和 Follower)通过选举协议产生。Leader 负责处理写请求并同步日志给 Follower。选举模块、CLOG 模块和 RoleChangeService 模块共同协作完成 Leader 的选举和切换。
参考文档:选举
6. 日志流与备份归档
日志流的 Leader 副本负责日志归档工作。日志归档按照 Log Entry 级别的物理备份进行,周期默认为 2 分钟,提供准实时的备份能力。
参考文档:备份架构 → 日志归档
总结
日志流是 OceanBase 数据库 V4.x 中的核心概念之一,它是事务提交的基本单位,同时也是分布式事务的参与者。通过日志流,OceanBase 数据库在资源、性能和功能上都得到了显著提升。希望以上解释能帮助您更好地理解日志流的概念!如果还有疑问,请随时提问。
具体信息可参考以下文档: