本章节介绍了一键克隆RDS MySQL至 PolarDB MySQL版 的方案简介、两种克隆方式及其优势和对比、克隆前提条件、使用限制、收费规则等。
注意事项
通过一键克隆方式迁移到 PolarDB 集群,源RDS实例的增量数据不会同步到 PolarDB 集群。
方案概述
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。
物理迁移和逻辑迁移对比
当前的一键克隆功能支持通过物理迁移(物理复制)和逻辑迁移(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 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服务关联角色。具体步骤如下:
- 前往 RAM控制台 的 角色 列表。
-
检查角色列表中,是否已存在名为
AliyunServiceRoleForPolarDB
的服务关联角色,如下:
- 若已存在,则进行 步骤一:从RDS克隆 ;若不存在,则需创建相关角色。
- 单击左侧 创建角色 。
-
在弹出的
创建角色
对话框中,选择
阿里云服务
,并单击
下一步
。
-
选择角色类型为
服务关联角色
,并选择云服务为
云数据库PolarDB
。
- 单击 完成 ,返回角色列表,确保已创建成功。
步骤一:从RDS克隆
本操作将创建一个与源RDS实例数据相同的 PolarDB 集群。
- 登录 PolarDB控制台 。
- 在控制台左上角,选择集群所在地域。
- 单击 创建新集群 。
-
选择
商品类型
为
包年包月
或
按量付费
。
- 包年包月 :在创建集群时支付计算节点的费用,而存储空间会根据实际数据量按小时计费,并从账户中按小时扣除。
- 按量付费 :无需预先支付费用,计算节点和存储空间(根据实际数据量)均按小时计费,并从账户中按小时扣除。
说明 关于包年包月和按量付费的详细对比,请参考 计算节点计费方式对比 ,并选择适用您业务场景的商品类型。 -
设置如下参数。
参数 说明 创建方式 选择 从RDS克隆 。 地域 选择源RDS MySQL实例所在地域。 说明 新建的 PolarDB 集群也在此地域。源RDS引擎 源RDS实例的引擎类型,固定为 MySQL ,不可变更。 源RDS版本 源RDS实例的版本,您可以选择 5.6 、 5.7 或 8.0 。 源RDS实例 选择源RDS实例,不包括只读实例。 兼容性 目标 PolarDB 集群的数据库引擎版本。您可以选择与源RDS实例一致的版本,也可以选择跨版本。 节点规格 按需选择,建议不低于源RDS实例规格。关于 PolarDB 节点规格,详情请参见 计算节点规格 。 - 设置 购买时长 (仅针对 包年包月 集群)和 集群数量 后,单击右侧的 立即购买 。
- 在 确认订单 页面确认订单信息,阅读并选中服务协议,单击 去支付 。
- 在 支付 页面,确认未支付订单信息和支付方式,单击 订购 。
-
登录
PolarDB控制台
,查看新建的
PolarDB
集群的状态。
说明 若您是通过逻辑迁移(DTS数据同步)方式进行一键克隆,请单击集群ID进入集群 基本信息 页,查看迁移状态。若RDS迁移状态变为 预检查失败 ,请根据 错误信息 中的提示进行处理。
例如,如果源RDS中创建了触发器,则预检查会失败并报错 “RDS实例存在触发器” 。若您确认触发器不会导致源和目标库的数据不一致,可点击 继续迁移 并跳过触发器检查;如果有数据不一致风险,可以先删除RDS的触发器,再点击 继续迁移 ,或者点击 取消迁移 后手动去DTS控制台页面创建迁移任务。具体可参见 源库存在触发器时如何配置同步作业 。
您也可以在此步骤选择取消迁移,相关影响请参见 常见问题 。
步骤二:查看数据同步任务详情(仅限逻辑迁移)
若您是通过逻辑迁移(DTS数据同步)方式进行一键克隆,请单击集群ID进入集群 基本信息 页,查看迁移状态。若遇到迁移报错(如预检查失败)或者其他异常状态(如复制延迟异常高)时,您可以前往对应的DTS数据同步任务的详情页,查看数据同步任务的具体信息。
- 进入 PolarDB控制台 。
- 找到目标集群,单击集群ID。
-
在
基本信息
页面的
RDS迁移功能
中,单击
DTS数据同步任务
的任务名称,进入DTS控制台数据同步列表。
-
找到对应的数据同步任务,您可查看预检查失败详情、查看同步任务详情、查看同步任务日志等。
常见问题
-
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 的地址,详情请参见 申请集群地址和主地址 。