本章节介绍了一键克隆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 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实例的账号 |
是否支持新增库的迁移 |
不支持 |
不支持 |
支持克隆的RDS MySQL版本和存储类型如下:
RDS MySQL版本 |
基础版 |
高可用版 |
集群版 |
三节点企业版 |
5.6 |
无 |
本地盘 |
无 |
本地盘 |
5.7 |
云盘 |
本地盘、云盘 |
云盘 |
本地盘 |
8.0 |
云盘 |
本地盘、云盘 |
云盘 |
本地盘 |
其中,除RDS MySQL 5.6和5.7高可用版且存储类型为本地SSD盘的集群,克隆至相同版本的 PolarDB MySQL版 集群属于物理迁移(物理复制)外,其他形态的RDS MySQL集群克隆至相同或不同版本的 PolarDB MySQL版 集群均为逻辑迁移(DTS数据同步)。
方案优势
-
克隆过程完全免费
-
克隆过程数据0丢失
前提条件
-
通过物理迁移方式进行一键克隆,源RDS实例版本需满足如下条件,逻辑迁移无版本限制:
-
针对RDS MySQL 5.6,内核小版本需为20190815或以上版本。
-
针对RDS MySQL 5.7,内核小版本需为20200331或以上版本。
说明您可以执行
SHOW VARIABLES LIKE '%rds_release_date%';
命令查看源RDS实例的内核小版本。如果源RDS实例的内核小版本低于上述指定版本,您可以将内核小版本升级到最新版。关于如何升级内核小版本,请参见 升级内核小版本 。 -
-
仅表存储引擎类型为InnoDB或X-Engine的源RDS实例支持一键克隆功能。
-
源RDS实例未开启 TDE 和 SSL 。若已开启,您可以选择手动创建DTS数据迁移任务将源RDS迁移至 PolarDB 。更多详情,请参见 RDS MySQL迁移至PolarDB MySQL版 。
-
如果RDS处于高安全模式(数据库代理模式),需要创建有高权限账号(请参见 创建账号 ),或者切换到高性能模式(参见 【产品/功能变更】RDS网络链路升级说明 ),才能进行一键克隆。
使用限制
-
仅支持将RDS MySQL一键克隆至相同版本或更高版本的 PolarDB MySQL版 ,不支持降版本克隆。
如:不支持从RDS MySQL 5.7一键克隆至 PolarDB MySQL版 5.6,不支持从RDS MySQL 8.0.2一键克隆至 PolarDB MySQL版 8.0.1。
-
物理迁移(物理复制)方式的使用限制如下:
-
暂不支持跨地域迁移。
-
迁移期间不允许对源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 集群的费用,详情请参见 计费项概览 。
-
逻辑迁移(DTS数据同步)方式的收费规则如下:
您除了需承担购买 PolarDB 集群的费用之外,还需承担DTS所创建的同步任务产生的费用。但现阶段该功能处于试用阶段,创建的同步任务30天内不收取任何费用(不支持虚商、RAM用户(子账号)等账号参加该免费活动)。具体如下:
迁移对象
费用
库表结构同步和全量数据同步
创建同步任务后,30天内不收取任何费用。
超过30天后,将会取消创建的同步任务。
说明您可以前往 新版DTS同步任务的列表页面 查看同步任务的剩余时间。
接下来将为您介绍如何进行一键克隆RDS MySQL至 PolarDB MySQL版 。
前置检查:检查是否已创建PolarDB服务关联角色(仅限逻辑迁移)
在使用逻辑迁移(DTS数据同步)方式进行一键克隆前,请先检查当前阿里云账号下是否已创建PolarDB服务关联角色。具体步骤如下:
-
前往 RAM控制台 。
-
在左侧导航栏,选择 身份管理 > 角色 。
-
在角色列表中,查看是否已存在名为 AliyunServiceRoleForPolarDB 的服务关联角色。
-
若存在,则执行 步骤一:从RDS克隆 ; 。
-
若不存在,则继续执行以下步骤。
-
-
单击左侧 创建角色 。
-
在弹出的 创建角色 对话框中,选择 阿里云服务 ,并单击 下一步 。
-
选择角色类型为 服务关联角色 ,并选择云服务为 云数据库PolarDB 。
-
单击 完成 ,返回角色列表,确保已创建成功。
前置检查:删除源RDS实例中多余系统账号
为了兼容RDS MySQL和 PolarDB 两者的系统账号体系,避免迁移后目标 PolarDB 的系统账号被覆盖,源RDS实例中不允许同时存在root和aliyun_root账号。因此,在进行迁移前,请先删除源RDS实例中多余的系统账号。
RDS MySQL各个版本的正确系统账号名如下:
RDS MySQL版本 |
正确的系统账号名 |
RDS MySQL 5.6 |
root |
RDS MySQL 5.7 |
aliyun_root |
RDS MySQL 8.0 |
aliyun_root |
各个版本除了对应的系统账号之外,其余系统账号均需删除。
账号可能是用户创建的,也可能是系统创建并因版本升级而遗留的,某些场景下不会在控制台显示。
以清理RDS MySQL 5.6多余的系统账号为例,具体删除步骤如下:
-
使用高权限账号连接实例。
-
找到所有的root和aliyun_root系统账号。
select * from mysql.user where user in ('root', 'aliyun_root');
-
删除多余的系统账号。RDS MySQL 5.6正确的系统账号是root,因此需要删除aliyun_root账号。
delete from mysql.user where user = 'aliyun_root' limit n;
步骤一:从RDS克隆
本操作将创建一个与源RDS实例数据相同的 PolarDB 集群。
-
登录 PolarDB控制台 。
-
在左上角,选择集群所在地域。
-
单击 创建新集群 。
-
选择 计费类型 为 包年包月 、 按量付费 或 Serverless 。
-
包年包月:在创建集群时支付计算节点的费用,而存储空间会根据实际数据量按小时计费,并从账户中按小时扣除。
-
按量付费:无需预先支付费用,计算节点和存储空间(根据实际数据量)均按小时计费,并从账户中按小时扣除。
-
Serverless:无需预先支付费用,计算节点、存储空间、数据库代理等资源在集群使用过程中基于实际需求动态弹性扩缩,并根据扩缩的实际用量来计费。
-
-
设置如下参数。
-
在右上角检查集群配置信息,设置 购买时长 (针对 包年包月 集群)、 购买数量 和 是否 自动续费 。
-
阅读并勾选服务协议。单击 立即购买 。
-
在 支付 页面,确认未支付订单信息和支付方式,单击 订购 。
说明-
支付成功后,需要等待10~15分钟创建集群,之后您就可以在 集群列表 中看到新创建的集群。
-
当集群中的节点状态为 创建中 时,整个集群可能仍未创建完成,此时集群不可用。只有当集群状态为 运行中 时,集群才可以正常使用。
-
请确认已选中正确的地域,否则无法看到您创建的集群。
-
-
登录 PolarDB控制台 ,查看新建的 PolarDB 集群的状态。
说明若您是通过逻辑迁移(DTS数据同步)方式进行一键克隆,请单击集群ID进入集群 基本信息 页,查看迁移状态。若RDS迁移状态变为 预检查失败 ,请根据 错误信息 中的提示进行处理。
例如,如果源RDS中创建了触发器,则预检查会失败并报错 “RDS实例存在触发器” 。请先删除源RDS的触发器,再点击 继续迁移 ,或者点击 放弃迁移 后手动去DTS控制台页面创建迁移任务。具体可参见 源库存在触发器时如何配置同步或迁移作业 。
您也可以在此步骤选择 放弃迁移 ,相关影响请参见 常见问题 。
步骤二:查看数据同步任务详情(仅限逻辑迁移)
若您是通过逻辑迁移(DTS数据同步)方式进行一键克隆,请单击集群ID进入集群 基本信息 页,查看迁移状态。若遇到迁移报错(如预检查失败)或者其他异常状态(如复制延迟异常高)时,您可以前往对应的DTS数据同步任务的详情页,查看数据同步任务的具体信息。
-
进入 PolarDB控制台 。
-
找到目标集群,单击集群ID。
-
在 基本信息 页面的 RDS迁移功能 中,单击 DTS数据同步任务 的任务名称,进入DTS控制台数据同步列表。
-
找到对应的数据同步任务,您可查看预检查失败详情、查看同步任务详情、查看同步任务日志等。
常见问题
-
Q: 一键升级RDS MySQL至 和一键克隆RDS MySQL至 PolarDB MySQL版 两者有什么区别?
A:两者间的区别如下表:
对比项
一键克隆RDS MySQL至 PolarDB MySQL版
是否支持迁移或同步增量数据
支持
不支持
是否影响源RDS操作
不影响
不影响
源和目标的MySQL版本能否不同
可以不同
可以不同
-
Q:从RDS克隆会影响源RDS实例吗?
A:不会影响源RDS实例的正常运行。
-
Q:取消迁移会有什么影响?
A:取消迁移会有如下影响:
-
会切断源集群到目标集群的同步链路,源集群和目标集群不再关联。
-
目标集群恢复可读可写状态,且不会自动释放。 若不再需要使用该集群,请尽快释放,避免产生额外费用 。
-
手动取消迁移时可以选择是否关闭集群的Binlog,自动取消迁移时不会关闭Binlog。
说明关闭Binlog会带来少量的写入性能提升,Binlog关闭后,已有的Binlog文件会一直保留。您可以先缩短Binlog文件的保存时长,等待不需要的文件自动删除后,再关闭Binlog。关闭Binlog后集群会自动重启,重启任务会在5分钟之内完成,重启时服务闪断时间在40秒左右。具体时间与数据量和表数量相关,建议您在业务低谷期进行操作并确保应用程序具备重连机制。
-
相关API
API |
描述 |
创建 PolarDB 集群。
说明
一键克隆时,参数 CreationOption 取值需要为 CloneFromRDS 。 |
后续步骤
请尽快将应用的数据库连接地址修改为 PolarDB 的地址,详情请参见 管理连接地址 。