首批通过分布式安全可靠测评,为关键业务系统打造
Binlog 模式介绍
更新时间:2024-11-13 15:06:14
Binlog 模式为兼容 MySQL binlog 而诞生,支持现有的 MySQL binlog 生态工具来同步 OceanBase。现有的 MySQL binlog 生态工具可以平滑切换至 OceanBase 数据库。
Binlog 模式与 MySQL 5.7 版本保持一致,具备相同的功能:
- 支持 Position 模式订阅。在 Position 模式下,订阅方基于指定的 binlog 文件名和偏移量,也称为 binlog position,在这种模式下,订阅是基于物理位置的。
- 支持 GTID 模式订阅,GTID(Global Transaction ID,全局事务 ID)是一种用于唯一标识和追踪分布式环境中事务的机制。在 GTID 模式下,每个事务都有一个唯一的全局事务 ID,不受 binlog 文件的变化和偏移量的影响,在这种模式下,订阅是基于逻辑位置的。
基本原理
鉴于 OceanBase 是分布式架构,Binlog 模式与 MySQL binlog 的设计实现并不相同,因此下文为 Binlog 模式架构进行简单介绍,以便您可以更好地认识和理解 Binlog 模式。
首先,介绍您在使用 Binlog 模式时需要知道的一些名词解释。
- OceanBase 数据库:OceanBase 数据库集群。
- OBProxy:OceanBase 的访问代理,SQL 和 binlog 协议及相关命令通过 OBProxy 作为统一入口进行访问。
- oblogproxy:OceanBase 增量日志代理服务。
- MySQL binlog 生态工具:泛指 MySQL binlog 增量解析工具,如常见的 Canal 和 Flink-CDC 等。
- bc:oblogproxy 中 binlog converter 子模块,拉取并解析 clog,再按照 binlog 格式转换为 binlog 文件。
- bd:oblogproxy 中 binlog dumper 子模块,对下游(MySQL binlog 生态工具)的订阅请求提供 binlog 订阅服务。
- bcm:oblogproxy 中 bc 的管理模块。
- bdm:oblogproxy 中 bd 的管理模块。
基本架构

bc

bd

由上图可以看出,Binlog 模式需要与 OceanBase 数据库(需配置 obconfig_url)和 OBProxy 来一起配合使用,主要分为以下几个步骤:
- 第一步,oblogproxy 启动后需要发送一条 SQL 命令来创建 binlog service(图中为 create binlog service),oblogproxy 收到命令后,会启动 bc 模块用于拉取 OceanBase clog 并将其转换为 binlog 格式,转换后将其写入到文件,即 binlog 文件。
- 第二步,MySQL binlog 生态工具(图中为 Canal 或 Flink-CDC)发起 binlog 订阅请求到 OBProxy,OBProxy 收到 binlog 订阅请求后将其转发至 oblogproxy。
- 第三步,oblogproxy 接收到 OBProxy 转发的 binlog 订阅请求后启动 bd 模块,bd 模块启动后读取 binlog 文件并对外提供订阅服务,即 binlog dump 服务。