首批通过分布式安全可靠测评,为关键业务系统打造
创建 DBP 逻辑表至 OceanBase 数据库 MySQL 租户物理表的数据同步项目
更新时间:2024-06-07 16:55:25
OceanBase 迁移服务(OceanBase Migration Service,OMS)支持 DBP 逻辑表至 OceanBase 数据库 MySQL 租户物理表的汇聚同步,该功能支持分库分表和分库不分表。本文为您介绍如何创建 DBP 逻辑表至 OceanBase 数据库 MySQL 租户物理表的数据同步项目。
使用限制
当前版本仅支持 ODP 有主键逻辑表至 OceanBase 数据库 MySQL 租户物理表的数据同步。
待同步的表名和其中的列名不能包含中文字符。
数据源标识和用户账号等,在 OMS 系统内全局唯一。
OMS 仅支持同步库名、表名为 ASCII 码且不包含特殊字符(.|"'`()=;/&\n)的对象。
OMS 支持全量同步分区字段不在主键中的表,但不支持新建表的 DDL 操作。
注意事项
节点之间的时钟不同步,或者电脑终端和服务器之间的时钟不同步,均可能导致增量同步的延迟时间不准确。
例如,如果时钟早于标准时间,可能导致延迟时间为负数。如果时钟晚于标准时间,可能导致延迟。
同步 DDL 支持的范围及限制
同步 DDL 支持的范围
增加列
ADD COLUMN,需要携带默认值。修改列的长度
MODIFED COLUMN,仅支持增加长度。
增量同步阶段在逻辑表执行的 DDL 会自动同步至目标端,仅限于两类 DDL。在任意一个物理表内执行 DDL,都会进行同步。后续执行相同的 DDL 将不会同步。
注意:
默认逻辑表执行 DDL 是针对所有物理表都会执行,逻辑表下的物理表的 Schema 不会存在差异。
对于不支持的 DDL,您可以设置关键参数
ddlIgnoreUnsupport来控制是否对齐强制执行,默认值为true。如果etransfer解析失败的 DDL,则该参数无效。如果开启强制执行 DDL,即
ddlIgnoreUnsupport = false。则无需关注是否支持该 DDL,均执行并打印日志。如果关闭强制执行 DDL,即
ddlIgnoreUnsupport = true。则仅打印不支持的日志,并忽略执行。
同步 DDL 的使用限制
默认逻辑表下的 Schema 是一致的。如果存在不一致的情况(仅对部分表执行 DDL),则会导致数据不一致而无法进行数据同步。
Alter Table Add Column需要携带默认值。通常开启ddlIgnoreUnsupport,会默认拦截无默认值的情况。ALTER TABLE MODIFY COLUMN无法处理下述特殊情况。刚开始是一个可以为 null 的列,修改为不能为 null,并进行回拉。此时可能因为数据为 null,而目标端限制不能为 null,导致数据同步失败。
针对上述情况,您可以在目标端先执行 DDL,修改为支持数据为 null,再自动同步后面的 MODIFY DDL。
操作步骤
新建同步项目。
登录 OMS 控制台。
在左侧导航栏,单击 数据同步。
在 数据同步 页面,单击右上角的 新建同步项目。
在 选择源和目标 页面,配置各项参数。
参数 描述 同步项目名称 建议使用中文、数字和字母的组合。名称中不能包含空格,长度不能超过 64 个字符。 标签 单击文本框,在下拉列表中选择目标标签。您也可以单击 管理标签,进行新建、修改和删除。详情请参见 通过标签管理数据同步项目。 源端 如果您已创建 DBP 数据源,请从下拉列表中进行选择。如果未创建,请单击下拉列表中的 添加数据源,在右侧对话框进行添加。参数详情请参见 添加 DBP 数据源。 目标端 如果您已创建 OceanBase 数据库 MySQL 数据源,请从下拉列表中进行选择。如果未创建,请单击下拉列表中的 添加数据源,在右侧对话框进行添加。参数详情请参见 添加 OceanBase 物理数据源。 单击 下一步,在 选择同步类型 页面,勾选当前数据同步项目的 同步类型和配置。
同步类型和配置 包括 全量同步 和 增量同步,增量同步 包括 数据变更 DML(
Insert、Delete和Update)和 同步 DDL。单击 下一步,在 选择同步对象 页面的 选择同步范围 区域,选中左侧列表中需要同步的对象,单击 >。
同步 DBP 逻辑表的数据至 OceanBase 数据库 MySQL 租户物理表时,OMS 支持通过文本导入对象,并支持对目标端对象进行进行重命名、设置分片列,以及移除同步对象等操作。
操作 步骤 导入对象 - 在选择区域的右侧列表中,单击右上角的 导入对象。
- 在对话框中,单击 确定。
注意:
导入会覆盖之前的操作选择,请谨慎操作。 - 在 导入同步对象 对话框中,导入需要同步的对象。
您可以通过导入 CSV 文件的方式进行库表重命名、设置行过滤条件等操作。详情请参见 下载和导入同步对象配置。 - 单击 检验合法性。
- 通过合法性的检验后,单击 确定。
重命名 - 在选择区域的右侧列表中,鼠标悬停至目标对象。
- 单击显示的 重命名。
- 在文本框中编辑修改后的名称,单击 确定。
设置 - 在选择区域的右侧列表中,鼠标悬停至目标对象。
- 单击显示的 设置。
- 在 设置 对话框的 分片列 下拉列表中,选择目标分片列。您可以选择多个字段作为分片列,该参数为选填。
选择分片列时,如果没有特殊情况,默认选择主键即可。如果存在主键负载不均衡的情况,请选择唯一性标识且负载相对均衡的字段作为分片列。
请确保分片列的正确性。分片列填写错误,会导致数据同步项目失败。分片列的主要作用如下:- 负载均衡:在目标端可以进行并发写入的情况下,通过分片列区分发送消息需要使用的特定线程。
- 有序性:由于存在并发写入可能导致的无序问题,OMS 确保在分片列的值相同的情况下,用户接收到的消息是有序的。此处的有序是指变更顺序(DML 对于一列的执行顺序)。
- 单击 确定。
移除/全部移除 OMS 支持在数据映射时,对暂时选中到目标端的单个或多个对象进行移除操作。 - 移除单个同步对象
在选择区域的右侧列表中,鼠标悬停至目标对象,单击显示的 移除,即可移除该同步对象。 - 移除全部同步对象
在选择区域的右侧列表中,单击右上角的 全部移除。在对话框中,单击 确定,即可移除全部同步对象。
单击 下一步,在 同步选项 页面,配置各项参数。
参数 描述 增量同步起始位点 - 如果设置同步类型和配置时已勾选 全量同步,此处默认为项目启动时间,不支持修改。
- 如果设置同步类型和配置时未勾选 全量同步,请在此处指定同步某个时间节点之后的数据,默认为当前系统时间。您可以选择时间节点,也可以直接输入时间戳。
注意:
仅支持选择当前时间,或当前时间之前的时间点。
该位点与当前归档日志的保留时间密切相关。如果无特殊要求,可以从当前位点开始启动。
开启事务内序号编排 根据需求,设置是否开启事务内保持排序。如果开启,OMS 可以为一个事务发送到下游进行顺序标识。 单击 预检查。
在 预检查 环节,OMS 会检查 DBP 中填写的账号密码是否能访问逻辑表下所有的物理表,并具备 SELECT 权限。同时会检查 OceanBase 数据库的
obconfig_url是否正确,可以在 sys 租户下执行show parameters like "obconfig_url",查看结果是否返回obconfig_url信息,用于后续增量阶段拉取日志使用。如果预检查报错,请排查并处理问题后,重新执行预检查,直至预检查成功。如果需要跳过某项预检查,您可以在系统配置中进行设置。
单击 启动项目。
如果您暂时无需启动项目,请单击 保存,跳转至数据同步项目的详情页面,您可以根据需要手动启动数据同步项目。如果您需要查看详情,请参见 查看数据同步项目的详情。
如果中途接入数据的过程出错(通常由于网络不通或进程启动过慢导致),您可以在同步项目的列表或详情页面,单击 恢复。