概述

更新时间: 2023-05-17 11:32:53

Binlog 服务是用于收集 OceanBase 的事务日志并转换为 MySQL Binlog 的服务,主要用于实时数据订阅等场景。

背景信息

MySQL 在全球被广泛地使用,MySQL Binlog 是实现主从复制和数据订阅的起点,用户可以以较低的性能和消耗来开启 Binlog 日志,从而实现诸多的下游业务场景。为了更好地对接外部生态,OceanBase 推出了 MySQL Binlog 日志兼容能力。

Binlog 功能说明

  • OceanBase Binlog 服务以租户为管理单位,不支持对数据库、表开启 Binlog。

  • OceanBase Binlog 服务与 MySQL Binlog 的 Row 格式兼容。

  • 以每一行数据的变更为最小单位进行记录。

  • 支持基于 GTID 和基于位置的方式订阅。

限制说明

SQL 兼容性

由于 OB MySQL 的 DDL 语法与 MySQL DDL 语法存在一定的差异性,即 OB MySQL 有部分特有的拓展语法,这部分 DDL 语法可能无法解析。

数据类型

以下 OceanBase 的超集定义语义在 MySQL Binlog 协议中无法表达。

  • OB MySQL 针对 ENUM、SET 所实现的拓展语义不支持,比如 SET 定义数支持超过 64 个、支持重复、ENUM 支持插入未定义数据(比如'')等。

  • VARCHAR(65536) 定义不支持。

  • 不支持 Gis 类型。

如何获取 Binlog

连接方式

版本要求

通过租户主地址连接

OceanBase 数据库实例版本不小于 V3.2.4

  1. OceanBase MySQL Binlog 默认为关闭状态,需要先开启 Binlog 服务,详情参见 开通 Binlog 日志服务

  2. 通过 MySQL Client 连接到 OceanBase 数据库,详细步骤请参考 通过 MySQL 客户端连接 OceanBase 数据库

  3. 连接上 OceanBase 数据库后,在已连接的客户端执行 MySQL Binlog 相关的命令。

    1. show binary logsshow binary logs..png

    2. show master statusshow master status..png

    3. show binlog eventsshow binlog events..png

  4. 通过 Canal 进行订阅,详细步骤请参考 QuickStart

Canal 版本支持

版本

使用限制

备注

版本小于 canal 1.1.6

由于 canal 无法解析 OB 的超集语法,会导致触发 canal 的一个 issue

可以通过替换对应版本的 parser jar 替换,需联系 OceanBase 技术人员获取。

canal 1.1.6

无法开启 tsdb,由于 canal 使用的 druid 版本无法解析 OB 的 Local 语法。

可以通过替换 druid 版本处理,需联系 OceanBase 技术人员获取。

canal 1.1.7

支持开启 tsdb,但是对于 OB 的分区表语法支持不全。

可以通过替换 druid 版本处理,需联系 OceanBase 技术人员获取。

阿里云首页 云数据库 OceanBase 相关技术圈