首批通过分布式安全可靠测评,为关键业务系统打造
创建 OceanBase 社区版至 RocketMQ 的数据同步任务
更新时间:2026-04-14 15:36:17
消息队列 RocketMQ 是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可靠的分布式消息中间件。OMS 社区版的数据同步功能可以帮助您实现 OceanBase 社区版的物理表和 RocketMQ 数据源之间的数据实时同步,扩展消息处理能力。
同步 OceanBase 社区版的数据至 RocketMQ 时,对应的数据格式请参见 数据格式说明。
前提条件
已为源端 OceanBase 社区版创建专用于数据同步任务的数据库用户,并为其赋予了相关权限。详情请参见 创建数据库用户。
使用限制
OMS 社区版支持的 RocketMQ 实例版本为 V4.x 和 5.x,包含商业版和社区版。
数据同步的对象仅支持物理表,不支持其它对象。
数据同步过程中,OMS 社区版支持删除表之后再新建表,即支持对已经同步的表进行
DROP TABLE操作后,再执行CREATE TABLE。OMS 不支持通过重命名的方式新建表,即不支持执行RENAME TABLE a TO a_tmp操作。待同步的表名和其中的列名不能包含中文字符。
数据源标识和用户账号等,在 OMS 社区版系统内全局唯一。
OMS 社区版仅支持同步库名、表名和列名为 ASCII 码且不包含特殊字符(包括 |"'`()=;/& 和换行)的对象。
OMS 社区版不支持 OceanBase 备库作为源端。
注意事项
建议您一次性同步的表数量不超过 1000 张,避免影响数据同步任务的运行。
当 OceanBase 数据库为 V4.0.0 ~ V4.3.x 之间的版本(V4.2.5 BP1 除外),并且选择了增量同步时,请为生成列配置 STORED 属性。否则增量日志中将不保存生成列的信息,可能导致增量同步数据异常的问题。
当更新的行包括 LOB 列时:
如果 LOB 列为更新列,请勿依赖 LOB 列在
UPDATE或DELETE操作前的值。目前使用 LOB 列进行存储的数据类型包括 JSON、GIS、XML、UDT(用户定义类型),以及 LONGTEXT、MEDIUMTEXT 等各类 TEXT。
如果 LOB 列为非更新列,LOB 列在
UPDATE或DELETE操作前或操作后的值均为 NULL。
当任务意外中断进行断点续传时,RocketMQ 实例中可能会存在部分重复数据(最近一分钟内),因此下游系统需要具备排重能力。
节点之间的时钟不同步,或者电脑终端和服务器之间的时钟不同步,均可能导致增量同步的延迟时间不准确。
例如,如果时钟早于标准时间,可能导致延迟时间为负数。如果时钟晚于标准时间,可能导致延迟。
如果应用程序在启动时
binlog_row_image不是FULL,OceanBase 社区版将其设置为FULL后,您需要重启应用程序,否则 OceanBase 社区版会缺失日志信息导致 OMS 社区版同步数据存在问题。设置命令如下:set global binlog_row_image = 'FULL';
操作步骤
新建数据同步任务。
登录 OMS 社区版控制台。
在左侧导航栏,单击 数据同步。
在 数据同步 页面,单击右上角的 新建同步任务。
在 选择源和目标 页面,配置各项参数。
参数 描述 同步任务名称 建议使用中文、数字和字母的组合。名称中不能包含空格,长度不能超过 64 个字符。 标签 单击文本框,在下拉列表中选择目标标签。您也可以单击 管理标签,进行新建、修改和删除。详情请参见 通过标签管理数据同步任务。 源端 如果您已新建 OceanBase-CE 数据源,请从下拉列表中进行选择。如果未新建,请单击下拉列表中的 新建数据源,在右侧对话框进行添加。参数详情请参见 新建 OceanBase-CE 数据源。 目标端 如果您已新建 RocketMQ 数据源,请从下拉列表中进行选择。如果未新建,请单击下拉列表中的 新建数据源,在右侧对话框进行添加。参数详情请参见 新建 RocketMQ 数据源。 单击 下一步,在 选择同步类型 页面,选择当前数据同步任务的同步类型。
同步类型支持 全量同步 和 增量同步,增量同步 仅支持 同步 DML(包括
Insert、Delete和Update),请根据业务需求选择。详情请参见 DML 过滤。(可选)单击 下一步。
源端为 OceanBase 社区版时,增量同步需要配置 所属 OCP(可选)、DRC 用户用户名 和 密码。
如果您选择了 增量同步,但源端 OceanBase 社区版未配置相应参数,则会弹出 数据源补充信息 对话框,提醒您进行配置。参数详情请参见 新建 OceanBase-CE 数据源。
补充完成后,单击 测试连通性。测试连接成功后,单击 保存。
单击 下一步,在 选择同步对象 页面,选择同步范围。
您可以通过 指定对象 和 匹配规则 两个入口选择同步对象。本文为您介绍通过 指定对象 方式选择同步对象的具体操作,配置匹配规则的详情请参见 配置同步对象的匹配规则。
同步 OceanBase 社区版的数据至 RocketMQ 时,支持多表到多 Topic 的同步。
在选择区域左侧选中需要同步的对象。
单击 >。
在 将对象映射至 Topic 对话框的 已有 Topic 下拉列表中,搜索并选中需要同步的 Topic。
您也可以输入已有 Topic 后选中显示的 Topic 名称。
单击 确定。
同步 OceanBase 社区版的数据至 RocketMQ 时,OMS 社区版支持通过文本导入对象,并支持对目标端对象进行更改 Topic、设置行过滤、移除单个对象或全部对象等操作。目标端对象的结构为 Topic>DataBase>Table。
操作 步骤 导入对象 - 在选择区域的右侧列表中,单击右上角的 导入对象。
- 在对话框中,单击 确定。
注意:
导入会覆盖之前的操作选择,请谨慎操作。 - 在 导入同步对象 对话框中,导入需要同步的对象。
您可以通过导入 CSV 文件的方式进行库表重命名、设置行过滤条件等操作。详情请参见 下载和导入同步对象配置。 - 单击 检验合法性。
- 通过合法性的检验后,单击 确定。
更改 Topic OMS 社区版支持对目标对象进行更改 Topic 操作。详情请参见 更改 Topic。 设置 OMS 社区版支持配置行过滤、选择分片列和需要同步的列。 - 在选择区域的右侧列表中,鼠标悬停至目标对象。
- 单击显示的 设置。
- 在 设置 对话框中,您可以进行以下操作。
- 在 行过滤条件 区域的文本框中,输入标准的 SQL 语句中的
WHERE子句,来配置行过滤。详情请参见 SQL 条件过滤数据。 - 在 分片列 下拉列表中,选择目标分片列。您可以选择多个字段作为分片列,该参数为选填。
选择分片列时,如果没有特殊情况,默认选择主键即可。如果存在主键负载不均衡的情况,请选择唯一性标识且负载相对均衡的字段作为分片列,避免潜在的性能问题。分片列的主要作用如下:- 负载均衡:在目标端可以进行并发写入的情况下,通过分片列区分发送消息需要使用的特定线程。
- 有序性:由于存在并发写入可能导致的无序问题,OMS 确保在分片列的值相同的情况下,用户接收到的消息是有序的。此处的有序是指变更顺序(DML 对于一列的执行顺序)。
- 在 选择列 区域,选择需要同步的列。详情请参见 列过滤。
- 在 行过滤条件 区域的文本框中,输入标准的 SQL 语句中的
- 单击 确定。
移除/全部移除 OMS 支持在数据映射时,对暂时选中到目标端的单个或多个对象进行移除操作。 - 移除单个同步对象
在选择区域的右侧列表中,鼠标悬停至目标对象,单击显示的 移除,即可移除该同步对象。 - 移除全部同步对象
在选择区域的右侧列表中,单击右上角的 全部移除。在对话框中,单击 确定,即可移除全部同步对象。
单击 下一步,在 同步选项 页面,配置各项参数。
如果您需要查看或修改全量同步或增量同步组件参数,请单击 全量同步 或 增量同步 区域右上角的 配置详情。参数说明请参见 组件参数说明 模块的文档。
全量同步
在 选择同步类型 页面,选中 全量同步,才会显示下述参数。
参数 描述 并发速度 包括 平稳、正常、快速 和 自定义。全量同步的性能不同,全量同步任务所需要的资源也不同。当您选择 自定义 时,可以根据实际情况设置 读取并发、写入并发 和 JVM 内存。 增量同步
在 选择同步类型 页面,选中 增量同步,才会显示下述参数。
参数 描述 并发速度 包括 平稳、正常、快速 和 自定义。增量同步的性能不同,增量同步任务所需要的资源也不同。当您选择 自定义 时,可以根据实际情况设置 读取并发、写入并发 和 JVM 内存。 增量同步起始位点 - 如果选择同步类型时已选择 全量同步,该参数不显示。
- 如果选择同步类型时未选择 全量同步,请在此处指定同步某个时间节点之后的数据,默认为当前系统时间。详情请参见 设置增量同步位点。
高级选项
参数 描述 序列化方式 控制数据同步至 RocketMQ 的消息格式,目前支持 Default、Canal、Dataworks(支持 V2.0)、SharePlex、DefaultExtendColumnType、Debezium、DebeziumFlatten 和 DebeziumSmt。详情请参见 数据格式说明。
注意:
目前仅 OceanBase 数据库 MySQL 兼容模式支持 Debezium、DebeziumFlatten 和 DebeziumSmt。分区规则 同步源端数据至 RocketMQ 的规则,目前仅支持 Hash。
Hash 表示 OMS 使用一定的 Hash 算法,根据主键值或分片列值 Hash 选择 RocketMQ 的队列(MessageQueue)。业务系统标识(可选) 用于标识数据的业务系统来源,以便您后续进行自定义处理。该业务系统标识的长度限制为 1~20 个字符。 目标端
参数 描述 请输入生产者群组 生产者群组用于标识一组生产者,能够向多个 Topic 中写入数据。 是否允许消息追踪 如果允许消息追踪,则可以追踪到一条消息从生产者发送到消息队列 RocketMQ 版服务端,再到消费者消费处理,整个过程中的各个相关节点的时间、状态等数据汇聚而成的完整任务信息。该消息轨迹可以作为生产环境中排查问题强有力的数据支持。
单击 预检查。
在 预检查 环节,OMS 社区版会检测和目标端的连接情况。如果预检查报错:
您可以排查并处理问题后,重新执行预检查,直至预检查成功。
您也可以单击错误预检查项操作列中的 跳过,会弹出对话框提示您跳过本操作的具体影响,确认可以跳过后,请单击对话框中的 确定。
单击 启动任务。如果您暂时无需启动任务,请单击 保存,跳转至数据同步任务的详情页面,您可以根据需要手动启动数据同步任务。
OMS 社区版支持在数据同步任务运行过程中修改同步对象,详情请参见 查看和修改同步对象。数据同步任务启动后,会根据选择的同步类型依次执行,详情请参见 查看数据同步任务的详情 中《查看同步详情》模块的内容。
如果数据同步任务运行报错(通常由于网络不通或进程启动过慢导致),您可以在数据同步的列表或详情页面,单击 恢复。