基于湖库一体架构,统一管理结构化、半结构化与非结构化等多模态数据,一个系统承载事务处理、实时分析与 AI 工作负载。
创建 OceanBase 社区版至 RocketMQ 的数据同步项目
更新时间:2023-06-25 09:16:33
消息队列 RocketMQ 是阿里云基于 Apache RocketMQ 构建的低延迟、高并发、高可靠的分布式消息中间件。OMS 社区版的数据同步功能可以帮助您实现 OceanBase 社区版的物理表和 RocketMQ 数据源之间的数据实时同步,扩展消息处理能力。
前提条件
在您的 RocketMQ 实例中,您需要提前创建属性为分区顺序消息的 Topic。
使用限制
数据同步的对象仅支持物理表,不支持其它对象。
当一条链路意外中断进行断点续传时,RocketMQ 实例中可能会存在部分重复数据(最近一分钟内),因此下游系统需要具备排重能力。
待同步的表名和其中的列名不能包含中文字符。
操作步骤
新建同步项目。
登录 OMS 社区版控制台。
在左侧导航栏,单击 数据同步。
在 数据同步 页面,单击右上角的 新建同步项目。
在 选择源和目标 页面,配置各项参数。
参数 描述 同步项目名称 支持中文、数字和字母的组合,不得超过 64 个字符。 标签 单击文本框,在下拉列表中选择目标标签。您也可以单击 管理标签,进行新建、修改和删除。 源节点 如果您已创建 OceanBase 社区版数据源,请从下拉列表中进行选择。如果未创建,请单击下拉列表中的 添加数据源,在右侧对话框进行添加。参数详情请参见 添加 OceanBase-CE 数据源。 目标节点 如果您已创建 Kafka 数据源,请从下拉列表中进行选择。如果未创建,请单击下拉列表中的 添加数据源,在右侧对话框进行添加。参数详情请参见 添加 RocketMQ 数据源。 单击 下一步。
在 选择同步类型及对象 页面,勾选当前数据同步项目的 同步类型和配置。
同步类型和配置 仅支持 增量同步 中的 数据变更 DML(包括 Insert、Delete 和 Update)。
在 选择同步类型及对象 页面,选择同步范围。
同步 OceanBase 社区版的数据至 RocketMQ 时,支持多表到多 Topic 的同步。
在选择区域左侧选中需要同步的对象。
单击 >。
在 将对象映射至 Topic 对话框的 已有 Topic 下拉列表中,搜索并选中需要同步的 Topic。
单击 确定。
选择同步对象后,OMS 社区版支持对目标端对象进行更改 Topic、设置分片列、移除单个对象或全部对象等操作。目标端对象的结构为 Topic>DataBase>Table。
操作 步骤 更改 Topic - 在选择区域的右侧列表中,鼠标悬停至目标对象。
- 单击显示的 更改 Topic。
- 在 将对象映射至 Topic 的对话框中,更改需要同步的 Topic。
- 单击 确定。
设置 - 在选择区域的右侧列表中,鼠标悬停至目标对象。
- 单击显示的 设置。
- 在 设置 对话框的 分片列 下拉列表中,选择目标分片列。您可以选择多个字段作为分片列,该参数为选填。
选择分片列时,如果没有特殊情况,默认选择主键即可。如果存在主键负载不均衡的情况,请选择唯一性标识且负载相对均衡的字段作为分片列。
请确保分片列的正确性。分片列填写错误,会导致数据同步项目失败。分片列的主要作用如下:- 负载均衡:在目标端可以进行并发写入的情况下,通过分片列区分发送消息需要使用的特定线程。
- 有序性:由于存在并发写入可能导致的无序问题,OMS 社区版确保在分片列的值相同的情况下,用户接收到的消息是有序的。此处的有序是指变更顺序(DML 对于一列的执行顺序)。
移除/全部移除 OMS 社区版支持移除单个或全部同步对象。 - 移除单个同步对象
在选择区域的右侧列表中,鼠标悬停至目标对象,单击显示的 移除,即可移除该同步对象。 - 移除全部同步对象
在选择区域的右侧列表中,单击右上角的 全部移除。在对话框中,单击 确定,即可移除全部同步对象。
单击 下一步。
在 同步选项 页面,配置各项参数。
分类 参数 描述 同步设置 增量同步起始位点 - 如果设置同步类型和配置时已勾选 全量同步,此处默认为项目启动时间,不支持修改。
- 如果设置同步类型和配置时未勾选 全量同步,请在此处指定同步某个时间节点之后的数据,默认为当前系统时间。您可以选择时间节点,也可以直接输入时间戳。
注意:仅支持选择当前时间,或当前时间之前的时间点。
该位点与当前归档日志的保留时间密切相关。如果无特殊要求,可以从当前位点开始启动。
高级选项 序列化方式 控制数据同步至 RocketMQ 的消息格式,目前支持 Default、Canal、Dataworks(支持 2.0 版本)、SharePlex 和 DefaultExtendColumnType。 开启事务内序列编号 根据需求,设置是否开启事务内保持排序。如果开启,OMS 社区版可以为一个事务发送至下游进行顺序标识。
注意:该参数仅对 SharePlex 格式生效,目的是为了确保您能够获取构成交易的 DML 语句的序号。
例如,在同一交易内包含 10 条 DML 语句(顺序为 1,2,3…10),则 OMS 社区版会按照 1,2,3 ...10 的顺序投递至目标端。
该选项会有性能损耗,请根据业务性质选择性开启。分区规则 同步源端数据至 RocketMQ 的规则,目前仅支持 Hash。Hash 表示 OMS 社区版使用一定的 Hash 算法,根据主键值或分片列值 Hash 选择 RocketMQ 的 MQ。 目标端 请输入生产者群组 生产者群组用于标识一组生产者,能够向多个 Topic 中写入数据。 是否允许消息追踪 如果允许消息追踪,则可以追踪到一条消息从生产者发送到消息队列 RocketMQ 版服务端,再到消费者消费处理,整个过程中的各个相关节点的时间、状态等数据汇聚而成的完整链路信息。该消息轨迹可以作为生产环境中排查问题强有力的数据支持。 单击 预检查。
在 预检查 环节,OMS 社区版会检测和目标端的连接情况。如果预检查报错,请排查并处理问题后,重新执行预检查,直至预检查成功。
单击 启动任务,启动该项目的增量同步等各项任务。
如果您暂时无需启动任务,请单击 保存,跳转至数据同步项目的详情页面,您可以根据需要手动启动数据同步项目。