本章节介绍了一键克隆RDS MySQL至 PolarDB MySQL版 的方案简介、两种克隆方式及其优势和对比、克隆前提条件、使用限制、收费规则等。

注意事项

通过一键克隆方式迁移到 PolarDB 集群,源RDS实例的增量数据不会同步到 PolarDB 集群。

说明 如果需要在新建 PolarDB 集群的同时,使源RDS实例的增量数据实时同步到 PolarDB 集群,即实现平滑迁移(不停机迁移),请参见 一键升级RDS MySQL至PolarDB MySQL版

方案概述

PolarDB 支持从RDS MySQL一键克隆数据至新的 PolarDB MySQL版 集群。一键克隆功能将会新建一个与源RDS实例的数据相同的 PolarDB 集群, PolarDB 集群包含源RDS实例的账号、数据库、IP白名单和必要的参数。

当前支持一键克隆的源RDS MySQL的版本和存储类型,以及目标 PolarDB MySQL版 的版本情况如下:

  • 支持源RDS MySQL 所有版本 以及 所有存储类型 实例的迁移。不管是RDS MySQL 5.6、5.7还是8.0,本地SSD盘还是云盘存储,都支持一键克隆至 PolarDB MySQL版
    说明 当前仅RDS MySQL高可用版系列支持一键克隆至 PolarDB MySQL版
  • 支持迁移RDS MySQL至 相同或不同版本 PolarDB MySQL版 。如支持RDS MySQL 5.6一键克隆至 PolarDB MySQL版 5.6,也支持RDS MySQL 5.6克隆至 PolarDB MySQL版 8.0。
说明 RDS MySQL 8.0版本、RDS MySQL云盘版本一键克隆至 PolarDB MySQL版 ,以及RDS MySQL跨版本一键克隆至 PolarDB MySQL版 ,都是通过逻辑迁移(DTS数据同步)方式实现。该方式目前处于灰度发布阶段,具体请参见 物理迁移和逻辑迁移对比

物理迁移和逻辑迁移对比

当前的一键克隆功能支持通过物理迁移(物理复制)和逻辑迁移(DTS数据同步)两种方式实现。

  • 物理迁移(物理复制)方式 :通过物理复制的方式,从源RDS MySQL实例复制全量数据至创建的 PolarDB MySQL版 集群中。
  • 逻辑迁移(DTS数据同步)方式 :通过数据传输服务DTS,创建数据同步任务,将源RDS MySQL实例的库表结构和全量数据同步至创建的 PolarDB MySQL版 集群中。

物理迁移(物理复制)和逻辑迁移(DTS数据同步)方式有如下区别:

对比项 物理迁移(物理复制) 逻辑迁移(DTS数据同步)
是否需要DTS工具 不需要 需要
是否支持迁移或同步增量数据 不支持 不支持
是否影响源RDS操作 不影响 不影响
源和目标的MySQL版本能否不同 仅支持5.6和5.7本地盘实例相同版本升级 支持相同版本和跨版本升级
升级后是否需要在 PolarDB 集群中创建数据库账户 不需要,升级后 PolarDB 集群包含源RDS实例的账号 不需要,升级后 PolarDB 集群包含源RDS实例的账号
是否支持新增库的迁移 不支持 不支持

此外,这两种方式所支持的MySQL版本和存储类型的具体对应关系如下:

迁移方式 源RDS MySQL实例版本和存储类型 目标 PolarDB MySQL版 集群版本
物理迁移(物理复制) RDS MySQL 5.6和5.7高可用版,且存储类型为本地SSD盘。 与RDS MySQL相同版本的 PolarDB MySQL版 集群。
逻辑迁移(DTS数据同步) RDS MySQL 5.6和5.7高可用版,且存储类型为本地SSD盘。 与RDS MySQL不同版本的 PolarDB MySQL版 集群。
RDS MySQL 5.7高可用版,且存储类型为云盘(ESSD PL1 云盘、ESSD PL2 云盘、ESSD PL3 云盘)。
  • 与RDS MySQL相同版本的 PolarDB MySQL版 集群。
  • 与RDS MySQL不同版本的 PolarDB MySQL版 集群。
RDS MySQL 8.0高可用版,存储类型为云盘(ESSD PL1 云盘、ESSD PL2 云盘、ESSD PL3 云盘)或本地SSD盘。

方案优势

  • 克隆过程完全免费
  • 克隆过程数据0丢失

前提条件

  • 不管是通过物理迁移还是逻辑迁移方式进行一键克隆,源RDS实例版本需满足如下条件:
    • 针对RDS MySQL 5.6,内核小版本需为20190815或以上版本。
    • 针对RDS MySQL 5.7,内核小版本需为20200331或以上版本。
    • 针对RDS MySQL 8.0高可用版,目前无内核小版本要求。
    说明 您可以执行 show variables like '%rds_release_date%'; 命令查看源RDS实例的内核小版本。如果源RDS实例的内核小版本低于上述指定版本,您可以将内核小版本升级到最新版。关于如何升级内核小版本,请参见 升级内核小版本
  • 源RDS实例未开启 TDE SSL 。若已开启,您可以选择手动创建DTS数据迁移任务将源RDS迁移至 PolarDB 。更多详情,请参见 RDS MySQL迁移至PolarDB MySQL
  • 源RDS实例的表存储引擎为InnoDB。
  • 如果RDS处于高安全模式(数据库代理模式),需要创建有高权限账号(请参见 创建账号 ),或者切换到高性能模式(参见 【重要】RDS网络链路升级说明 ),才能进行一键克隆。 查看数据库模式

使用限制

  • 物理迁移(物理复制)方式的使用限制如下:
    • 暂不支持跨地域迁移。
    • 迁移期间不允许对源RDS实例执行参数设置的操作。
  • 逻辑迁移(DTS数据同步)方式的使用限制如下:
    • 暂不支持跨地域迁移。
    • 迁移期间不允许对源RDS实例执行参数设置的操作。
    • 对源库有如下限制:
      类型 说明
      源库限制
      • 待同步的表需具备主键或唯一约束,且字段具有唯一性,否则可能会导致目标数据库中出现重复数据。
      • 如同步对象为表级别,且需进行编辑(如表列名映射),则单次同步任务仅支持同步至多1000张表。当超出数量限制,任务提交后会显示请求报错,此时建议您拆分待同步的表,分批配置多个任务,或者配置整库的同步任务。
      • Binlog日志:需开启Binlog,开启方法请参见 设置实例参数 ,并且binlog_row_image为full。否则预检查阶段提示报错,且无法成功启动数据同步任务。
    • 其他限制:
      类型 说明
      其他限制
      • 建议源和目标库版本保持一致,或者从低版本同步到高版本以保障兼容性。如为高版本同步至低版本,可能存在数据库兼容性问题。
      • 执行数据同步前需评估源库和目标库的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。
      • 全量初始化会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标实例的表空间比源实例的表空间大。
      • 如同步对象为单个或多个表(非整库),那么在数据同步时,勿对源库的同步对象使用gh-ost或pt-online-schema-change等类似工具执行在线DDL变更,否则会导致同步失败。

        您可以使用数据管理DMS(Data Management Service)来执行在线DDL变更,请参见 不锁表结构变更

      • 在DTS同步期间,不允许有除DTS外的数据写入目标库,否则会导致源库与目标库数据不一致。例如,有除DTS外的数据写入目标库时,使用DMS执行在线DDL变更,可能引起目标库数据丢失。
      • DTS默认同步到目标数据库中时会取消外键约束,因此源数据库的级联、删除等操作不会同步到目标数据库。

收费规则

  • 物理迁移(物理复制)方式的收费规则如下:
    • 从RDS迁移到 PolarDB 的操作完全免费,您只需承担购买 PolarDB 集群的费用。关于 PolarDB 集群的费用,详情请参见 计费项概览
    • 对于包年包月的RDS实例,从RDS迁移到 PolarDB 完成后,若确定业务已在 PolarDB 上稳定运行且不再需要RDS时,您可以申请转单优惠退款,避免浪费闲置的RDS资源,详情请参见 包年包月RDS迁移至PolarDB后申请转单优惠退款
  • 逻辑迁移(DTS数据同步)方式的收费规则如下:

    您除了需承担购买 PolarDB 集群的费用之外,还需承担DTS所创建的同步任务产生的费用。但现阶段该功能处于试用阶段,创建的同步任务30天内不收取任何费用。具体如下:

    迁移对象 费用
    库表结构同步和全量数据同步 创建同步任务后,30天内不收取任何费用。

    超过30天后,将会取消创建的同步任务。

    说明 您可以前往 新版DTS同步任务的列表页面 查看同步任务的剩余时间。

接下来将为您介绍如何进行一键克隆RDS MySQL至 PolarDB MySQL版

前置检查:检查是否已创建PolarDB服务关联角色(仅限逻辑迁移)

在使用逻辑迁移(DTS数据同步)方式进行一键克隆前,请先检查当前阿里云账号下是否已创建PolarDB服务关联角色。具体步骤如下:

  1. 前往 RAM控制台 角色 列表。
  2. 检查角色列表中,是否已存在名为 AliyunServiceRoleForPolarDB 的服务关联角色,如下:
    ram
  3. 若已存在,则进行 步骤一:从RDS克隆 ;若不存在,则需创建相关角色。
  4. 单击左侧 创建角色
  5. 在弹出的 创建角色 对话框中,选择 阿里云服务 ,并单击 下一步
    阿里云服务
  6. 选择角色类型为 服务关联角色 ,并选择云服务为 云数据库PolarDB
    服务关联角色
  7. 单击 完成 ,返回角色列表,确保已创建成功。

步骤一:从RDS克隆

本操作将创建一个与源RDS实例数据相同的 PolarDB 集群。

  1. 登录 PolarDB控制台
  2. 在控制台左上角,选择集群所在地域。
  3. 单击 创建新集群
  4. 选择 商品类型 包年包月 按量付费
    • 包年包月 :在创建集群时支付计算节点的费用,而存储空间会根据实际数据量按小时计费,并从账户中按小时扣除。
    • 按量付费 :无需预先支付费用,计算节点和存储空间(根据实际数据量)均按小时计费,并从账户中按小时扣除。
    说明 关于包年包月和按量付费的详细对比,请参考 计算节点计费方式对比 ,并选择适用您业务场景的商品类型。
  5. 设置如下参数。
    说明 下表格中未详细介绍的参数,请参考PolarDB集群购买相关章节: 购买按量付费集群 购买包年包月集群
    参数 说明
    创建方式 选择 从RDS克隆
    地域 选择源RDS MySQL实例所在地域。
    说明 新建的 PolarDB 集群也在此地域。
    源RDS引擎 源RDS实例的引擎类型,固定为 MySQL ,不可变更。
    源RDS版本 源RDS实例的版本,您可以选择 5.6 5.7 8.0
    源RDS实例 选择源RDS实例,不包括只读实例。
    兼容性 目标 PolarDB 集群的数据库引擎版本。您可以选择与源RDS实例一致的版本,也可以选择跨版本。
    节点规格 按需选择,建议不低于源RDS实例规格。关于 PolarDB 节点规格,详情请参见 计算节点规格
  6. 设置 购买时长 (仅针对 包年包月 集群)和 集群数量 后,单击右侧的 立即购买
  7. 确认订单 页面确认订单信息,阅读并选中服务协议,单击 去支付
  8. 支付 页面,确认未支付订单信息和支付方式,单击 订购
  9. 登录 PolarDB控制台 ,查看新建的 PolarDB 集群的状态。
    说明 若您是通过逻辑迁移(DTS数据同步)方式进行一键克隆,请单击集群ID进入集群 基本信息 页,查看迁移状态。若RDS迁移状态变为 预检查失败 ,请根据 错误信息 中的提示进行处理。 预检查失败

    例如,如果源RDS中创建了触发器,则预检查会失败并报错 “RDS实例存在触发器” 。若您确认触发器不会导致源和目标库的数据不一致,可点击 继续迁移 并跳过触发器检查;如果有数据不一致风险,可以先删除RDS的触发器,再点击 继续迁移 ,或者点击 取消迁移 后手动去DTS控制台页面创建迁移任务。具体可参见 源库存在触发器时如何配置同步作业

    您也可以在此步骤选择取消迁移,相关影响请参见 常见问题

步骤二:查看数据同步任务详情(仅限逻辑迁移)

若您是通过逻辑迁移(DTS数据同步)方式进行一键克隆,请单击集群ID进入集群 基本信息 页,查看迁移状态。若遇到迁移报错(如预检查失败)或者其他异常状态(如复制延迟异常高)时,您可以前往对应的DTS数据同步任务的详情页,查看数据同步任务的具体信息。

  1. 进入 PolarDB控制台
  2. 找到目标集群,单击集群ID。
  3. 基本信息 页面的 RDS迁移功能 中,单击 DTS数据同步任务 的任务名称,进入DTS控制台数据同步列表。
    DTS任务
  4. 找到对应的数据同步任务,您可查看预检查失败详情、查看同步任务详情、查看同步任务日志等。
    进入详情 详情

常见问题

  • Q: 一键升级RDS MySQL至 PolarDB MySQL版 和一键克隆RDS MySQL至 PolarDB MySQL版 两者有什么区别?

    A:两者间的区别如下表:

    对比项 一键升级RDS MySQL至 PolarDB MySQL版 一键克隆RDS MySQL至 PolarDB MySQL版
    是否支持迁移或同步增量数据 支持 不支持
    是否影响源RDS操作 不影响 不影响
    源和目标的MySQL版本能否不同 可以不同 可以不同
  • Q:从RDS克隆会影响源RDS实例吗?

    A:不会影响源RDS实例的正常运行。

  • Q:取消迁移会有什么影响?

    A:取消迁移后,源RDS实例可以修改参数; PolarDB 集群恢复可读可写,且数据不会释放。手动取消时可以选择是否关闭 PolarDB 集群的Binlog,自动取消时不会关闭。

相关API

API 描述
CreateDBCluster 创建 PolarDB 集群。
说明 一键克隆时,参数 CreationOption 取值需要为 CloneFromRDS

后续步骤

请尽快将应用的数据库连接地址修改为 PolarDB 的地址,详情请参见 申请集群地址和主地址