转:一键升级RDS MySQL至PolarDB MySQL引擎
PolarDB支持将RDS MySQL一键升级至PolarDB MySQL引擎,升级后PolarDB集群包含源RDS实例的账号、数据库、IP白名单和必要的参数。
方案优势
- 可保留数据库原连接地址,无需应用程序修改任何连接配置即可切换至PolarDB。
- 无需DTS等数据迁移工具,仅需PolarDB控制台即可完成整个迁移流程。
- 迁移完全免费。
- 迁移过程数据0丢失。
- 支持增量迁移,停机时间小于10分钟。
- 支持在线热迁移,迁移过程仅闪断一次(即当业务从RDS切换至PolarDB时)。
- 支持回滚,迁移失败可以在10分钟内恢复。
- 对于包年包月的RDS实例,数据从RDS迁移到PolarDB后,若业务已在PolarDB上稳定运行且不再需要RDS时,您可以申请转单优惠退款,避免浪费闲置的RDS资源,详情请参见包年包月RDS迁移至PolarDB后申请转单优惠退款。
前提条件
- 源RDS实例版本需为RDS MySQL 5.6或5.7高可用版,且存储类型为本地SSD盘。
- 针对RDS MySQL 5.6,内核小版本需为20190815或以上版本。
- 针对RDS MySQL 5.7,内核小版本需为20200331或以上版本。
说明 您可以执行show variables like '%rds_release_date%';命令查看源RDS实例的内核小版本。如果源RDS实例的内核小版本低于上述指定版本,您可以将内核小版本升级到最新版。关于如何升级内核小版本,请参见升级内核小版本。
- 源RDS实例未开启TDE和SSL。
- 源RDS实例的表存储引擎为InnoDB。
- 如果RDS处于高安全模式(数据库代理模式),需要创建有高权限账号(请参见创建账号),或者切换到高性能模式(参见【重要】RDS网络链路升级说明),才能进行一键升级。
带地址切换
一键升级RDS至PolarDB时支持带地址切换,系统会自动交换RDS和PolarDB上的连接地址,您无需在应用程序端修改任何配置即可自动连接到PolarDB。选择该切换方式后,RDS连接地址对应的PolarDB连接地址如下图所示。
使用带地址切换功能时,需注意以下几点:
- 带地址切换只会切换RDS和PolarDB的域名,Vswitch、Vip等配置不会切换。
- 仅当源RDS和目标PolarDB集群同时存在的连接地址才支持相互切换,默认情况下仅私网主地址支持带地址切换。
- 如需切换其他连接地址,您需在切换前创建好对应的连接地址,否则不会切换。关于如何为PolarDB集群和RDS实例创建连接地址,请参见申请集群地址和主地址和设置连接地址。
- 带地址切换不会切换端口,请确保RDS和PolarDB的连接端口一致(PolarDB和RDS默认使用的端口号均为3306),如需修改端口,请参见修改内外网地址和端口(RDS)或修改连接地址和端口(PolarDB)。
- 切换域名后,可能会存在DNS解析缓存问题,在缓存过期时间内可能会出现连接不上数据库或数据库只支持读操作无法执行写入操作等情况,建议您刷新一下服务器的DNS缓存。
- 切换域名后,如果您需要使用DMS登录PolarDB数据库,必须使用新版本的DMS并且使用集群ID来进行登录,连接串无法登录。
功能限制
- 暂不支持跨地域迁移。
- 迁移期间不允许对源RDS实例执行参数设置的操作。
费用
- 从RDS迁移到PolarDB的操作完全免费,您只需承担购买PolarDB集群的费用。关于PolarDB集群的费用,详情请参见计费项概览。
- 对于包年包月的RDS实例,从RDS迁移到PolarDB完成后,若确定业务已在PolarDB上稳定运行且不再需要RDS时,您可以申请转单优惠退款,避免浪费闲置的RDS资源,详情请参见包年包月RDS迁移至PolarDB后申请转单优惠退款。
迁移流程介绍
步骤 |
说明 |
1、从RDS迁移 |
本操作将创建一个与源RDS实例数据相同的PolarDB集群,源RDS实例的增量数据会实时同步到该PolarDB集群。 |
2、迁移切换 |
说明 迁移切换完成后,如果您发现数据存在异常等问题,可以执行迁移回滚,快速恢复至迁移前的状态。 |
3、完成迁移 |
|
步骤一:从RDS迁移
本操作将创建一个与源RDS实例数据相同的PolarDB集群,源RDS实例的增量数据会实时同步到该PolarDB集群。
- 登录PolarDB控制台。
- 在控制台左上角,选择集群所在地域。
- 单击创建新集群。
- 选择商品类型为包年包月或按量付费。
- 包年包月:在创建集群时支付计算节点的费用,而存储空间会根据实际数据量按小时计费,并从账户中按小时扣除。
- 按量付费:无需预先支付费用,计算节点和存储空间(根据实际数据量)均按小时计费,并从账户中按小时扣除。
说明 PolarDB MySQL引擎已推出计算包。推荐购买按量付费的集群,因为按量付费的集群支持配合计算包使用,比包年包月付费方式更划算、更灵活。详情请参见购买方式1:按量付费+计算包(推荐) 。
- 设置如下参数。
参数 |
说明 |
地域 |
选择源RDS MySQL实例所在地域。 说明 新建的PolarDB集群也在此地域。 |
创建方式 |
选择从RDS迁移。 即先从RDS复制全量数据,然后保持增量同步,主要用于迁移。在正式迁移切换前PolarDB的读写状态为只读,且默认开启Binlog。迁移完成后,若原RDS为包年包月实例,可申请转单优惠退款。 |
源RDS引擎 |
源RDS实例的引擎类型,固定为MySQL,不可变更。 |
源RDS版本 |
源RDS实例的版本,您可以选择5.6或5.7。 |
源RDS实例 |
选择源RDS实例,不包括只读实例。 |
主可用区 |
可用区是地域中的一个独立物理区域,不同可用区之间没有实质性区别。 您可以选择将PolarDB集群与ECS创建在同一可用区或不同的可用区。 您只需要选择主可用区,系统会自动选择备可用区。 |
网络类型 |
PolarDB集群的网络类型,不可变更。 |
VPC网络 VPC交换机 |
PolarDB集群所属的VPC和虚拟交换机。请确保PolarDB集群与需要连接的ECS创建于同一个VPC,否则它们无法通过内网互通,无法发挥最佳性能。 |
兼容性 |
PolarDB集群的数据库引擎版本,默认与源RDS引擎版本保持一致,不可变更。 |
系列 |
固定为集群版(2-16个节点)【推荐】,无需选择。 |
子系列 |
PolarDB MySQL引擎集群版支持通用规格和独享规格两种子系列,其中:
关于两种类型的详细对比,请参见如何选择通用规格和独享规格。 |
节点规格 |
按需选择,建议不低于源RDS实例规格。关于PolarDB节点规格,详情请参见计算节点规格。 |
节点个数 |
无需选择。系统将自动创建一个与主节点规格相同的只读节点。 |
存储费用 |
无需选择。系统会根据实际数据使用量按小时计费,详情请参见产品价格。 说明 创建集群时无需选择存储容量,存储容量随数据量的增减而自动弹性伸缩。 |
时区 |
设置集群时区,默认时区为UTC+08:00。 |
表名大小写 |
设置集群表名是否区分大小写,您可以选择不区分大小写(默认)或当本地数据库区分大小时,您可以选择区分大小写,便于您迁移数据。 说明 集群创建后该参数无法修改,请谨慎选择。 |
删除(释放)集群时 |
设置删除(释放)集群时的备份保留策略,默认保留最后一个备份(释放前自动备份)。
说明 删除(释放)集群时保留备份可能会产生少量费用,您可以随时删除备份来节省成本。关于数据备份的计费规则,详情请参见备份存储(超出免费额度)计费规则。 |
集群名称 |
|
资源组 |
从已创建资源组中选择一个目标资源组。 说明 资源组是在单个云账号下将一组相关资源进行统一管理的容器,一个资源只能归属于一个资源组,详情请参见RAM资源分组与授权。 |
- 设置购买时长(仅针对包年包月集群)和集群数量后,单击右侧的立即购买。
- 在确认订单页面确认订单信息,阅读并选中服务协议,单击立即开通即可。
开通成功后,需要10~15分钟创建集群,之后您就可以在集群列表中看到新创建的集群。
说明
- 当集群中的节点状态为创建中时,整个集群可能仍未创建完成,此时集群不可用。只有当集群状态为运行中时,集群才可以正常使用。
- 请确认已选中正确的地域,否则无法看到您创建的集群。
- 当您的数据量较大时,推荐您购买PolarDB存储包,相比按小时付费,预付费购买存储包有折扣,购买的容量越大,折扣力度就越大,详情请参见搭配存储包。
- 在支付页面,确认未支付订单信息和支付方式,单击订购。
- 集群创建成功后,登录PolarDB控制台,确认目标PolarDB集群的复制延迟小于60秒即可进行步骤二:迁移切换操作。
说明
步骤二:迁移切换
- 进入PolarDB控制台。
- 找到目标集群,单击集群的ID。
- 在基本信息页面单击迁移切换。
说明
- 切换过程一般小于5分钟。
- 本操作将交换源RDS实例和目标PolarDB集群的读写状态(即将源RDS实例修改为只读,将PolarDB集群修改为可读可写),同时会更换复制方向(即将PolarDB集群的新增数据同步到RDS实例)。
- 在开始切换对话框中,选择带地址切换(应用程序不用改连接配置)或不带地址切换(应用程序需要改为新的PolarDB连接配置)。
- 若您选择带地址切换(应用程序不用改连接配置),操作步骤如下:
- 选中带地址切换(应用程序不用改连接配置),系统会自动交换RDS和PolarDB上的连接地址,您无需在应用程序端修改任何配置即可自动连接到PolarDB。
注意 使用带地址切换(应用程序不用改连接配置)前,请务必参见切换注意事项。
- 单击确定。
- 若您选择不带地址切换(应用程序需要改为新的PolarDB连接配置),操作步骤如下:
- 选中不带地址切换(应用程序需要改为新的PolarDB连接配置),在迁移切换完成后,您需要尽快修改应用程序端的数据库连接地址。
- 单击确定。
- 刷新页面,当PolarDB读写状态显示为读写后,尽快修改应用里的数据库连接地址。
说明 迁移切换完成后,如果您发现数据存在异常等问题,可以进行回滚操作,快速恢复至迁移前的状态也可以选择迁移回滚(可选)。
步骤三:完成迁移
从RDS迁移后,您需要在7天内进行完成迁移操作。
警告 由于本操作将中断PolarDB集群和RDS实例间的数据同步,不再提供迁移回滚功能,建议您使用一段时间PolarDB集群,确认正常后再执行本操作。
- 登录PolarDB控制台。
- 找到目标集群,单击集群的ID。
- 在基本信息页面,单击完成迁移,在弹出的对话框中单击确定。
说明
- 单击确定后,系统将在约2分钟内中断同步关系,期间迁移状态将显示为关闭同步,请耐心等待迁移完成。
- 您可以在完成迁移对话框内选择是否关闭PolarDB集群的Binlog。关闭Binlog会带来少量的写入性能提升,但关闭Binlog后PolarDB集群会自动重启使新配置生效。
- 如果不再需要源RDS实例,可以释放实例。若实例为包年包月实例,可申请RDS转单优惠退款。详情请参见释放实例和包年包月RDS迁移至PolarDB后申请转单优惠退款。
迁移回滚(可选)
在完成迁移前,如果您发现数据存在异常等问题,可以进行回滚操作,快速恢复至迁移前的状态(RDS实例为可读可写,PolarDB集群为只读,同时会将RDS实例的数据同步到PolarDB集群)。
- 登录PolarDB控制台。
- 找到目标集群,单击集群ID。
- 在基本信息页面单击迁移回滚。
- 在开始回切对话框中,选择带地址回切(应用程序不用改连接配置)或不带地址回切(应用程序需要改为原RDS连接配置)。
- 若您选择带地址回切(应用程序不用改连接配置),操作步骤如下:
- 选中带地址回切(应用程序不用改连接配置),系统会自动交换RDS和PolarDB上的连接地址,您无需在应用程序端修改任何配置即可自动回切到RDS。
- 单击确定。此时RDS实例为可读可写,PolarDB集群为只读,同时会将RDS实例的数据同步到PolarDB集群。
- 若您选择不带地址回切(应用程序需要改为原RDS连接配置),操作步骤如下:
- 选中不带地址回切(应用程序需要改为原RDS连接配置),在迁移切换完成后,您需要尽快修改应用程序端的数据库连接地址。
- 单击确定。此时RDS实例为可读可写,PolarDB集群为只读,同时会将RDS实例的数据同步到PolarDB集群。
- 刷新页面,当源RDS读写状态显示为读写后,请尽快修改应用里的数据库连接地址为RDS连接地址。
迁移常见问题
- Q:一键升级RDS MySQL至PolarDB MySQL引擎、一键克隆RDS MySQL至PolarDB MySQL引擎和从RDS MySQL迁移至PolarDB MySQL三者有什么区别?
A:3者间的区别如下表:
对比项 |
一键升级RDS MySQL至PolarDB MySQL引擎 |
||
是否需要DTS工具 |
× |
× |
√ |
是否支持迁移或同步增量数据 |
√ |
× |
√ |
是否影响源RDS操作 |
× |
× |
× |
源和目标的MySQL版本能否不同 |
× |
× |
√ |
说明 表中√表示支持或需要,×表示不支持或不需要。
- Q:升级后的PolarDB MySQL引擎节点规格需要和源RDS MySQL的实例规格保持一致吗?
A:您可以按需选择PolarDB MySQL引擎的规格,建议不低于源RDS实例规格。所有集群版的PolarDB节点均为独享型,性能稳定可靠。详情请参见计费项概览。
- Q:升级前是否需要先购买PolarDB MySQL引擎集群?
A:您无需提前购买PolarDB MySQL引擎集群,步骤一:从RDS迁移即包含购买和创建一个与源RDS实例数据相同的PolarDB集群的操作。
- Q:从RDS迁移会影响源RDS实例吗?
A:不会影响源RDS实例的正常运行。
- Q:平滑迁移对源RDS实例性能有影响吗?
A:迁移不会影响源RDS实例上的使用操作,但数据迁移涉及查询操作,会消耗源RDS实例一部分的查询性能。
- Q:平滑迁移对业务有影响吗?
A:平滑迁移能够保证迁移过程不丢失数据,停机(即暂停业务,不产生增量数据,而非停用数据库)时间小于10分钟,如果有需要还可以进行回滚。
- Q:取消迁移会有什么影响?
A:取消迁移后,源RDS实例可以修改参数;PolarDB集群恢复可读可写,且数据不会释放。手动取消时可以选择是否关闭PolarDB集群的Binlog,自动取消时不会关闭。
- Q:升级完成后,将业务切换到PolarDB,应用程序端的连接地址是否需要修改?
A:您可以在迁移切换时选择带地址切换(应用程序不用改连接配置),系统会自动交换RDS和PolarDB上的连接地址,您无需在应用程序端修改任何配置即可自动连接到PolarDB。
- Q:迁移切换时选择了带地址切换(应用程序不用改连接配置),迁移完成后-为什么PolarDB集群仍然使用新的连接地址?
A:仅当源RDS和目标PolarDB集群同时存在的连接地址才支持相互切换,默认情况下仅私网主地址支持带地址切换。如需切换其他连接地址,您需在切换前创建好对应的连接地址,否则不会切换。关于如何为PolarDB集群和RDS实例创建连接地址,请参见申请集群地址和主地址和设置连接地址。
- Q:源RDS实例中还包含只读实例,若选择带地址切换(应用程序不用改连接配置),只读实例的连接地址能否一并切换?
A:不能。一键升级至PolarDB不会迁移源RDS只读实例的连接地址,仅支持迁移源RDS主实例的连接地址和读写分离地址。您需要在应用程序端手动修改源RDS只读实例的连接地址为PolarDB的连接地址。
- Q:业务成功切换后,为什么连接不上PolarDB数据库或连接成功但只支持读操作无法执行写入操作?
A:切换域名后,可能会存在DNS解析缓存问题,在缓存过期时间内可能会出现连接不上数据库或数据库只支持读操作无法执行写入操作等情况,建议您刷新一下服务器的DNS缓存。
- Q:一键升级到PolarDB前,能否先进行兼容性测试并简单评估迁移工作量?
A:您可以先通过一键克隆RDS MySQL至PolarDB MySQL引擎功能克隆一份数据到PolarDB进行兼容性测试和评估迁移工作量,测试没有问题后再参照本文操作一键升级至PolarDB。
- Q:迁移切换后,为什么在PolarDB控制台上看不见完成迁移按钮?
A:若您已经执行过完成迁移操作,该按钮将会消失,避免您重复执行相同操作。
- Q:一键升级至PolarDB后,还需要在目标PolarDB集群中创建与源RDS实例相同的账号和密码吗?
A:不需要。升级后PolarDB集群将包含源RDS实例的账号密码、数据库、IP白名单和必要的参数等信息。
- Q:源RDS实例已开启了TDE或SSL,如何再迁移至PolarDB集群?
A:已开启了TDE或SSL的RDS实例不支持一键升级至PolarDB集群,您可以选择使用DTS将源RDS迁移至PolarDB。更多详情,请参见从RDS MySQL迁移至PolarDB MySQL。
- Q:一键升级是否支持跨版本升级?如将RDS MySQL 5.6升级至PolarDB MySQL引擎 8.0版本?
A:暂不支持。若需要将RDS MySQL 5.6跨版本升级至PolarDB MySQL引擎 8.0版本,您可以通过DTS进行迁移。更多详情,请参见从RDS MySQL迁移至PolarDB MySQL。
- Q:若在一键升级至PolarDB MySQL引擎前,源RDS实例已开启了DTS数据同步任务,升级时是否会影响该任务?
A:不会。通过一键升级进行迁移时,会先从RDS复制一份全量数据至一个新的PolarDB集群,然后将增量数据保持同步至该PolarDB集群。源RDS上DTS数据同步任务的数据源仍然是源RDS,数据迁移至PolarDB并不会影响源RDS上的运行和操作。
但迁移完成后,如果您将业务切换到新的PolarDB,且源RDS停止使用了,DTS的数据源是不会自动改到新PolarDB集群的,此时,您需要重新创建DTS同步任务,将数据源改为PolarDB集群。
相关API
API |
描述 |
创建PolarDB集群。 说明 一键升级时,参数CreationOption取值需要为MigrationFromRDS。 |
|
查询PolarDB集群的迁移状态。 |
|
修改迁移任务,进行任务的切换或回滚。 |
|
取消或完成迁移。 |
文档链接: