本章节介绍了一键克隆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集群的费用,详情请参见计费项概览。
对于包年包月的RDS实例,从RDS迁移到PolarDB完成后,若确定业务已在PolarDB上稳定运行且不再需要RDS时,您可以申请转单优惠退款,避免浪费闲置的RDS资源,详情请参见包年包月RDS迁移至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的地址,详情请参见管理连接地址。