阿里云首页 云数据库 OceanBase

新建通过数据库网关接入的自建 MySQL 数据库至 OceanBase 数据库 MySQL 租户的数据迁移项目

本文为您介绍如何迁移通过数据库网关接入的自建 MySQL 数据库的数据至 OceanBase 数据库 MySQL 租户。

前提条件

  • 源端 MySQL 数据库已通过数据库网关接入阿里云,详情请参见 快速入门

  • 已为源端自建 MySQL 数据库和目标端 OceanBase 数据库 MySQL 租户创建专用于数据迁移的数据库用户,并赋予其相关权限。

  • 已在目标端 OceanBase 数据库 MySQL 租户创建对应的数据库。OceanBase 数据迁移功能支持迁移表和列,不支持迁移库,您需要提前在目标端创建对应的数据库。

  • 已创建源端和目标端的数据源。

  • 已为自建 MySQL 数据库开启 Binlog。

使用限制

数据迁移仅支持复制一份源库的数据(结构)至目标数据库,并不会对源库的数据(结构)造成影响。启动迁移项目前,OMS 会自动对源端数据库和目标端数据库执行数据迁移的预检查。为确保预检查顺利执行,请先确认以下信息:

  • 自建 MySQL 数据库版本必须是 5.6、5.7 或 8.0 版本。

  • 请确保源端和目标端数据库的时钟同步。

  • MySQL 数据库的存储引擎为 InnoDB。

  • 源端为 MySQL 数据库,字符集必须是 UTF8、UTF8MB4 和 GBK。

创建数据迁移项目

  1. 新建迁移项目。

    1. 登录 OceanBase 控制台

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

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

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

    参数

    描述

    迁移项目名称

    支持中文、数字和字母的组合,不得超过 64 个字符。

    源节点

    源端节点设置为已创建的通过数据库网关接入的自建 MySQL 数据源。

    目标节点

    目标节点设置为已创建的 OceanBase 数据库 MySQL 租户数据源。

    迁移规格实例

    请确保已经购买 OMS 数据迁移链路,不同规格链路的迁移性能有所差异。

  3. 单击 下一步

  4. 选择迁移类型及对象 页面,勾选当前迁移项目的 迁移类型

    迁移类型 包括 结构迁移全量迁移增量迁移全量校检

    如果设置 全量迁移增量迁移,建议您同步设置 全量校检。在增量数据基本追平后,发起一轮针对源端数据库和目标端数据库中被迁移的数据表的全量数据校验任务。OMS 支持的数据库、迁移类型,以及 MySQL 数据库的用户权限,请参见 概述

    增量迁移 包括 数据变更 DMLInsertDeleteUpdate)和 结构变更 DDL,您可以根据需求进行选择。如果您勾选了 增量迁移,且数据变更 DML 选项中未勾选所有的 DML,则无法勾选 全量校验

  5. 选择迁移类型及对象 页面,选择迁移对象。

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

    迁移通过数据库网关接入的自建 MySQL 数据库的数据至 OceanBase 数据库 MySQL 租户时,OMS 支持通过文本导入对象。操作如下:

    1. 数据表 区域的右侧列表中,单击 导入对象

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

      注意

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

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

      请按照如下格式输入对象,库名、表名映射使用等号(=)连接。建议对象不超过1万个。

      SCHEMA.TB1 | SCHEMA.TB2 | SCHEMA.TB3=SCHEMA_RENAME.TB3_RENAME

    4. 单击 检验合法性

    5. 通过合法性的检验后,单击 确定

  6. 高级设置 区域,配置各项参数。

    参数

    描述

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

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

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

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

    外键选项

    默认为 OMS 过滤外键

    由于数据迁移过程中,数据并发写入。当目标端存在外键约束时,会影响数据迁移的正常执行。通常数据迁移时需要保证目标表不存在外键约束。

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

    预检查 环节,OMS 会检查数据库用户的读写权限、数据库的网络连接等是否符合要求。全部检查项目均通过后才能启动数据迁移项目。如果预检查报错,请排查并处理问题后,重新执行预检查,直至预检查成功。

  8. 单击 启动任务,启动该项目的结构迁移、全量迁移等各项任务。

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

启动数据迁移项目

全部检查项目检查完成后,当且仅当全部成功可以进入启动项目。有失败的检查项目需要手动修复后,在当前界面复检。数据迁移项目启动后,依次执行选择的迁移类型:

  1. 结构迁移

    负责迁移源库中的数据对象定义(表、索引、约束、注释和视图等)至 OceanBase 目标库中,会自动过滤临时表。

    当源端数据库非 OceanBase 数据库时,会依据目标 OceanBase 租户类型的语法定义标准进行数据类型和 SQL 语法的自动转换和拼装,然后复制至 OceanBase 目标库中。

    您可以对目标对象进行以下操作:

    • 查看创建语法:完全兼容,为您展示在 OBServer 执行的 DDL 语法。不完全兼容,则展示转换后的创建语法。

    • 修改创建语法并重试:运行失败的 DDL 和报错,您可以检查并修改该条 DDL 转换结果的定义,再次迁移至目标端。

    • 查看数据库返回码:失败的结构迁移任务,展示 DDL 语句和 OBServer 上执行的错误信息。

    • 重试/重试全部失败对象:失败的结构迁移任务,您可以依次进行重试,也可以 重试全部失败对象

    • 跳过/批量跳过:失败的结构迁移任务,您可以依次跳过。您也可以批量选择需要移除的对象,单击右上角的 批量跳过

    • 移除/批量移除:失败的结构迁移任务,您可以依次进行移除。您也可以批量选择需要移除的对象,单击右上角的 批量移除

  2. 全量迁移

    迁移源库表的存量数据至 OceanBase 库对应的表中。

    全量迁移加上增量迁移,可以确保目标端数据库与源端数据库的最终一致性。如果全量迁移过程中有失败的对象,会为您展示具体的失败原因。

  3. 增量迁移

    增量迁移任务开始后,会同步源库发生变化的数据(新增、修改或删除)至 OceanBase 数据库对应的表中。

    当源库不断有业务写入时,OMS 会在全量数据迁移启动前,启动增量拉取模块,以拉取源实例中的增量更新数据,对其进行解析、封装,并存储至 OMS 中。

    当全量数据迁移完成后,OMS 会启动增量数据回放模块,从增量数据拉取模块中获取增量数据。增量数据经过过滤、映射和转换后,再同步至目标实例中。

    您可以在增量迁移区域延迟时间、当前位点时间,以及迁移流量等增量迁移性能。

  4. 全量校验

    在全量数据迁移完成,增量数据迁移至目标端并与源端基本追平后,OMS 会自动发起一轮针对源库配置的数据表和目标表的全量数据校检任务。

    增量数据同步过程中,您也可以发起自定义的数据校检,OMS 会提供相应的接口。

    针对校检出不一致的数据,您可以查看具体的列信息。并且 OMS 会提供以源端为基准,在目标端进行订正操作的 SQL 脚本。

    OMS 支持 执行中 的迁移项目跳过全量校验。在 全量校验 页面,单击 跳过全量校验,并在弹出对话框中,单击 确定

    全量校验完成后,您可以单击 进入下一阶段,启动正向切换。进入切换流程后,您将无法复检当前校验任务进行数据比对和数据订正。

  5. 正向切换

    1. 启动正向切换

      该步骤不会停止链路,仅确认即将开始执行的切换流程。用户进入至正向切换任务流时,需要手动单击 启动正向切换

      注意

      启动正向切换前,请确保源端数据源为即将停写或者已经停写状态。
    2. 切换预检查

      用于检查当前项目状态是否具备切换条件,会进行同步延迟检查。如果启动增量同步后,延迟在 15 秒内,则预检查通过。如果未启动增量同步,则预检查自动通过。

      如果预检查通过,会自动执行下一步操作。如果预检查未通过,会提示报错详情。

      如果预检查未通过,您可以进行 重试跳过 操作。

      如果单击 跳过,需要在弹出的对话框中,再次单击 跳过

    3. 确认源端停写

      确认源端停写 区域,单击 确定,确认源端无增量数据产生。

    4. 确认同步追平停写位点

      OMS 自动检查源端和目标端处于一致位点。检查完成后,展示当前增量同步延迟时间和增量同步位点。

    5. 停止正向同步

      停止源端到目标端的增量迁移。如果停止失败,您可以进行 重试跳过 操作。

    6. 执行数据库对象处理

      该步骤会完成数据库对象的迁移,删除 OMS 附加列和索引,补充结构迁移自动忽略的约束,确认 Trigger 或 Sequence 等对象已经手工迁移完成,以及确认源端 Trigger 或 FK 已关闭。

      您需要手动单击 运行,来执行数据库对象。对于运行中的项目,您可以执行 查看日志跳过 操作。自行处理的项目需要手动单击 标记完成

首页 云数据库 OceanBase 数据迁移方案 MySQL数据库迁移 新建通过数据库网关接入的自建 MySQL 数据库至 OceanBase 数据库 MySQL 租户的数据迁移项目