首页 云数据库 OceanBase 数据传输 数据迁移 OceanBase 数据库之间的数据迁移

OceanBase 数据库之间的数据迁移

本文为您介绍如何使用数据传输迁移 OceanBase 数据库的数据至 OceanBase 数据库同类型租户中。

背景信息

您可以在数据传输控制台创建从 OceanBase 数据库迁移数据至 OceanBase 数据库同类型租户的数据迁移项目,通过结构迁移、全量迁移和增量同步,无缝迁移源端数据库中的存量业务数据和增量数据至目标端数据库。

前提条件

  • 已为源端和目标端 OceanBase 数据库创建专用于数据迁移项目的数据库用户,并为其赋予了相关权限。详情请参见 创建数据库用户

  • 已在目标端 OceanBase 数据创建对应的 Schema。数据传输支持迁移表和列,您需要提前在目标端创建对应的 Schema。

使用限制

  • 仅支持 OceanBase 数据库同类型租户之间的数据迁移。

    即支持迁移 OceanBase 数据库 MySQL 租户的数据至 OceanBase 数据库 MySQL 租户、迁移 OceanBase 数据库 Oracle 租户的数据至 OceanBase 数据库 Oracle 租户。

  • 迁移源端为 VPC 部署的 OceanBase 数据库时,仅支持 2.2.30~2.2.77 版本。

  • 一个数据迁移项目可以迁移多个 Schema。最大支持到同一租户级别,最小支持到某张表。

  • 存在 pknot null uk 的表为有主键表,其中不包含 function-based uk。如果源端 OceanBase 数据库 Oracle 租户的表包含虚拟列上的 function-based uk,或者为 2.2.77 以下(不包括 2.2.77)的版本,因为数据传输无法准确识别表是否存在 function-based uk,可能会导致判断是否为有主键表不准确,以及导致全量迁移和全量校验的速度较慢、增量同步存在数据不一致的风险。

    增量同步阶段,会根据数据的唯一约束将数据并行化处理,当存在 function-based uk 的表的数据在增量同步时,相关的事务操作必须是串行的,否则会造成数据的不一致。而是否存在 function-based uk 的表,必须通过管控层下发。

  • OceanBase 数据库的单向数据迁移项目中,当源端 OceanBase 数据库为 3.2.x 以下的版本且具有全局唯一索引的多分区表时,如果您更新了表的分区键的值,可能导致数据迁移过程中丢失数据。

支持的源端和目标端实例类型

下表中,OceanBase 数据库 MySQL 租户简称为 OB_MySQL,OceanBase 数据库 Oracle 租户简称为 OB_Oracle。

源端

目标端

OB_MySQL(OceanBase 实例)

OB_MySQL(OceanBase 实例)

OB_MySQL(VPC 内自建数据库)

OB_MySQL(OceanBase 实例)

OB_Oracle(OceanBase 实例)

OB_Oracle(OceanBase 实例)

OB_Oracle(VPC 内自建数据库)

OB_Oracle(OceanBase 实例)

创建数据迁移项目

  1. (可选)如果您需要迁移无主键表,请在相应租户中创建用户。

    创建用户的详情请参见 创建数据库用户。如果您需要迁移有主键表,则跳过该步骤。

    • 如果源端为 OceanBase 数据库 MySQL 租户,请创建 __oceanbase_inner_drc_user 用户。

    • 如果源端为 OceanBase 数据库 Oracle 租户,请创建 __OCEANBASE_INNER_DRC_USER 用户。

  2. 新建数据迁移项目。

    1. 登录 OceanBase 管理控制台

    2. 在左侧导航栏,单击 数据传输 > 数据迁移

    3. 数据迁移 页面,单击右上角的 新建迁移项目

  3. 选择源和目标 页面,配置各项参数。

    参数

    描述

    迁移项目名称

    建议使用中文、数字和字母的组合。名称中不能包含空格,长度不得超过 64 个字符。

    源端

    如果您已新建 OceanBase 数据源,请从下拉列表中进行选择。如果未创建,请单击下拉列表中的 新建数据源,在右侧对话框进行新建。参数详情请参见 新建 OceanBase 数据源

    重要

    源端不支持 OceanBase 数据库 4.0 版本。

    目标端

    如果您已新建 OceanBase 数据源,请从下拉列表中进行选择。如果未创建,请单击下拉列表中的 新建数据源,在右侧对话框进行新建。

    重要

    目标端不支持实例类型为 VPC 内自建数据库的 OceanBase 数据源。

    传输实例

    从下拉列表中选择已购买的传输实例。如果您未购买,请单击右侧的 购买 进行操作。详情请参见 购买传输实例

  4. 单击 下一步

  5. 选择迁移类型 页面,选择当前迁移项目的 迁移类型

    迁移类型 包括 结构迁移全量迁移增量同步全量校验反向增量

    迁移类型

    使用限制

    全量迁移

    如果选择 全量迁移,建议您在迁移数据前,收集源端 OceanBase 数据库的统计信息。

    增量同步

    增量同步 包括 同步 DMLInsertDeleteUpdate)和 同步 DDL,您可以根据需求进行选择,支持的 DDL 详情请参见 增量 DDL 支持的范围和限制增量同步 的使用限制如下:

    • 如果您未选择 同步 DDL,请进行 DDL 变更前,确保源端无变更,且增量 DML 数据已全部同步至目标端。然后在源端、目标端分别进行相关的 DDL 操作。

    • 如果您未选择 同步 DDL,对于迁移链路中表的 DDL 操作,请先在目标端数据源执行,否则存在数据迁移中断的风险。

    • 如果您选择了 同步 DDL,当源端数据库发生数据传输未支持的增量 DDL 操作时,会存在数据迁移中断的风险。

    全量校验

    • 如果选择 全量校验,建议您在全量校验开始前,分别收集源端和目标端 OceanBase 数据库的统计信息。

    • 如果您选择了 增量同步,且 同步 DML 选项中未选择所有的 DML,则数据传输不支持本场景下的全量数据校验。

    反向增量

    反向增量 限时免费,收费时会提前通知您。

  6. (可选)单击 下一步

    VPC 内自建数据库类型的 OceanBase 数据源作为源端时,如果您选择了结构迁移或增量同步,均需要根据需求补充用户名、密码、oblogproxy IP 和 oblogproxy Port 等信息。如果进行无唯一键表迁移,OceanBase 数据源则需要输入 `_OCEANBASE_INNER_DRC_USER` 的密码。

    如果源端或目标端数据源未配置相应参数,创建项目时会弹出 数据源补充信息 对话框,提醒您进行配置。参数详情请参见 新建 OceanBase 数据源

  7. 单击 下一步。在 选择迁移对象 页面,选择迁移对象。

    您可以通过 指定对象匹配规则 两个入口选择迁移对象。

    重要
    • 待迁移的表名和其中的列名不能包含中文字符。

    • 当数据库的库名或表名存在“$$”字符时,会影响数据迁移项目的创建。

    • 选择 指定对象,在左侧选中需要迁移的对象,单击 >,将其添加至右侧列表中。您可以选择一个或多个库的表、视图作为迁移对象。

      迁移 OceanBase 数据库的数据至 OceanBase 数据库时,数据传输支持通过文本导入对象、重命名对象名称、设置行过滤、查看列信息,以及移除单个或全部迁移对象。

      操作

      步骤

      导入对象

      1. 在选择区域的右侧列表中,单击右上角的 导入对象

      2. 在对话框中,单击 确定

        重要

        导入会覆盖之前的操作选择,请谨慎操作。

      3. 导入迁移对象 对话框中,导入需要迁移的对象。

        您可以通过导入 CSV 文件的方式进行库表重命名、设置行过滤条件等操作。详情请参见 下载和导入迁移对象配置

      4. 单击 检验合法性

        完成迁移对象导入后,请先检验合法性。目前暂不支持列字段映射。

      5. 通过检验后,单击 确定

      重命名

      数据传输支持重命名库名和表名。

      1. 在选择区域的右侧列表中,鼠标悬停至目标对象。

      2. 单击显示的 重命名

      3. 输入修改后的名称,单击 确定

      设置

      数据传输支持 where 条件实现行过滤,以及查看列信息。

      1. 在选择区域的右侧列表中,鼠标悬停至目标对象。

      2. 单击显示的 设置

      3. 设置 对话框中,输入标准的 SQL 语句中的 WHERE 子句,来配置行过滤。其作用范围为 全量迁移 + 增量同步

        重要
        • 请对列名添加转义符(`)。例如,`col`

        • 只有满足 where 条件的数据才会被同步至目标数据源,以实现数据的行过滤。

        • 如果开启 where 条件的行过滤,目前 CHAR 或 VARCHAR 类型会强制右 trim,可能造成 VARCHAR 的比较不准确,请谨慎使用。

      4. 单击 确定

        您也可以在 查看列 区域,查看迁移对象的列信息。

      移除/全部移除

      数据传输支持在数据映射时,对暂时选中到目标端的单个或多个对象进行移除操作。

      • 移除单个迁移对象

        在选择区域的右侧列表中,鼠标悬停至目标对象,单击显示的 移除,即可移除该迁移对象。

      • 移除全部迁移对象

        在选择区域的右侧列表中,单击右上角的 全部移除。在对话框中,单击 确定,即可移除全部迁移对象。

    • 选择 匹配规则,详情请参见 配置迁移对象的匹配规则

      说明

      如果您选择了 同步 DDL,则仅支持通过 匹配规则 的方式选择迁移对象。

  8. 单击 下一步,在 迁移选项 页面,配置各项参数。

    分类

    参数

    描述

    基本配置

    展示所选传输实例的规格,不支持修改。

    高级配置

    全量迁移是否允许目标表非空

    全量迁移允许目标表非空时,全量校验采用的是 in 模式进行数据校验。

    重要

    选择迁移类型 页面选中 全量迁移,才支持设置该选项。

    全量迁移是否允许索引不一致

    根据业务需求,设置全量迁移是否允许索引不一致。

  9. 单击 预检查,系统对数据迁移项目进行预检查。

    预检查 环节,数据传输会检查数据库用户的读写权限、数据库的网络连接等是否符合要求。全部检查项目均通过后才能启动数据迁移项目。如果预检查报错:

    • 您可以排查并处理问题后,重新执行预检查,直至预检查成功。

    • 您也可以单击错误预检查项操作列中的 跳过,会弹出对话框提示您跳过本操作的具体影响,确认可以跳过后,请单击对话框中的 确定

  10. 单击 启动项目。如果您暂时无需启动项目,请单击 保存,跳转至数据迁移项目的详情页面,您可以根据需要进行手动启动。

    数据传输支持在数据迁移项目运行过程中修改迁移对象,详情请参见 查看和修改迁移对象。数据迁移项目启动后,会根据选择的迁移类型依次执行,详情请参见 查看迁移详情

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