方案概述
本章节介绍了一键升级RDS MySQL至PolarDB MySQL版的方案简介、两种升级方式及其优势和对比、升级前提条件、使用限制、收费规则等。
升级方案概述
PolarDB支持将RDS MySQL一键升级至PolarDB MySQL版,整个过程中将自动为您创建目标端PolarDB集群并同步数据。升级后的PolarDB集群包含源RDS实例的账号信息、数据库、IP白名单和必要的参数。
您可以将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实例的账号 |
是否支持新增库的迁移 | 支持 | 不支持,需要在DTS数据同步任务中重新配置迁移对象 |
支持迁移的RDS MySQL版本和存储类型如下:
RDS MySQL版本 | 基础版 | 高可用版 | 集群版 | 三节点企业版 |
5.6 | 无 | 本地盘 | 无 | 本地盘 |
5.7 | 云盘 | 本地盘、云盘 | 云盘 | 本地盘 |
8.0 | 云盘 | 本地盘、云盘 | 云盘 | 本地盘 |
其中,除RDS MySQL 5.6和5.7高可用版且存储类型为本地SSD盘的集群,迁移至相同版本的PolarDB MySQL版集群属于物理迁移(物理复制)外,其他形态的RDS MySQL集群迁移至相同或不同版本的PolarDB MySQL版集群均为逻辑迁移(DTS数据同步)。
升级方案优势
一键升级功能具有如下优势:
可保留数据库原连接地址,无需应用程序修改任何连接配置即可切换至PolarDB。
迁移完全免费。
迁移过程数据0丢失。
支持增量迁移,停机时间小于10分钟。
支持在线热迁移,迁移过程仅闪断一次(即当业务从RDS切换至PolarDB时)。
支持回滚,迁移失败可以在10分钟内恢复。
对于包年包月的RDS实例,数据从RDS迁移到PolarDB后,若业务已在PolarDB上稳定运行且不再需要RDS时,您可以申请转单优惠退款,避免浪费闲置的RDS资源,详情请参见包年包月RDS迁移至PolarDB后申请转单优惠退款。
前提条件
通过物理迁移方式进行一键升级,源RDS实例版本需满足如下条件,逻辑迁移对源RDS实例版本无限制:
针对RDS MySQL 5.6高可用版,内核小版本需为20190815或以上版本。
针对RDS MySQL 5.7高可用版,内核小版本需为20200331或以上版本。
说明您可以执行
SHOW VARIABLES LIKE '%rds_release_date%';
命令查看源RDS实例的内核小版本。如果源RDS实例的内核小版本低于上述指定版本,您可以将内核小版本升级到最新版。关于如何升级内核小版本,请参见升级内核小版本。仅表存储引擎类型为InnoDB或X-Engine的源RDS实例支持一键升级功能。
若您是通过逻辑迁移(DTS数据同步)方式进行一键升级,如果源RDS创建了触发器,请先删除RDS的触发器,再单击继续迁移,或者单击取消迁移后手动去DTS控制台页面创建迁移任务。具体可参见源库存在触发器时如何配置同步作业。
如果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。否则预检查阶段提示报错,且无法成功启动数据同步任务。
如为增量同步任务,DTS要求源数据库的本地Binlog日志保存24小时以上,如为全量同步和增量同步任务,DTS要求源数据库的本地Binlog日志至少保留7天以上(您可在全量同步完成后将Binlog保存时间设置为24小时以上),否则DTS可能因无法获取Binlog而导致任务失败,极端情况下甚至可能会导致数据不一致或丢失。由于您所设置的Binlog日志保存时间低于DTS要求的时间进而导致的问题,不在DTS的SLA保障范围内。如源为RDS MySQL,具体操作请参见管理本地日志(Binlog)。
SQL语句限制:
操作类型
SQL语句
DML
INSERT、UPDATE、DELETE
DDL
ALTER TABLE、ALTER VIEW
CREATE FUNCTION、CREATE INDEX、CREATE PROCEDURE、CREATE TABLE、CREATE VIEW
DROP INDEX、DROP TABLE
RENAME TABLE
TRUNCATE TABLE
其他限制:
类型
说明
其他限制
执行数据同步前需评估源库和目标库的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。
全量初始化会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标实例的表空间比源实例的表空间大。
在DTS同步期间,不允许有除DTS外的数据写入目标库,否则会导致源库与目标库数据不一致。例如,有除DTS外的数据写入目标库时,使用DMS执行在线DDL变更,可能引起目标库数据丢失。
DTS默认同步到目标数据库中时会取消外键约束,因此源数据库的级联、删除等操作不会同步到目标数据库。
注意事项
源RDS和目标PolarDB集群对应连接地址的SSL开启状态需保持一致:
如果源RDS的连接地址开启了SSL,并且您选择带地址切换并切换该地址,请确保PolarDB集群对应的连接地址已开启SSL。
如果源RDS的连接地址未开启SSL,则请确保目标PolarDB集群对应连接地址的SSL功能也保持关闭。
收费规则
物理迁移(物理复制)方式的收费规则如下:
从RDS迁移到PolarDB的操作完全免费,您只需承担购买PolarDB集群的费用。关于PolarDB集群的费用,详情请参见计费项概览。
对于包年包月的RDS实例,从RDS迁移到PolarDB完成后,若确定业务已在PolarDB上稳定运行且不再需要RDS时,您可以申请转单优惠退款,避免浪费闲置的RDS资源,详情请参见包年包月RDS迁移至PolarDB后申请转单优惠退款。
逻辑迁移(DTS数据同步)方式的收费规则如下:
您除了需承担购买PolarDB集群的费用之外,还需承担DTS所创建的同步任务产生的费用。但现阶段该功能处于试用阶段,创建的同步任务30天内不收取任何费用。具体如下:
迁移对象
费用
库表结构同步和全量数据同步
创建同步任务后,30天内不收取任何费用。
超过30天后,将会取消创建的同步任务。
说明您可以登录PolarDB控制台,在基本信息页面的RDS迁移功能区域查看同步任务的剩余时间。
增量数据同步
备份策略说明
PolarDB的常规备份周期、备份开始时间与RDS的常规备份周期、备份开始时间保持一致。
RDS与PolarDB的备份保留时长对应关系如下:
如果RDS的备份保留时长小于或等于14天,则PolarDB的一级备份保留时长与RDS的备份保留时长一致。
如果RDS的备份保留时长大于14天且小于30天,则PolarDB的一级备份保留时长固定为14天,同时开启二级备份,且PolarDB的二级备份同地域保留时长固定为30天;如果RDS的备份保留时长大于30天,则PolarDB开启二级备份且二级备份同地域保留时长与RDS的备份保留时长一致。
如果RDS的备份为永久保留,则PolarDB的一级备份保留时长固定为14天,并开启二级备份,且备份永久保留。
如果RDS开启了高频备份,则PolarDB默认开启高频备份。RDS与PolarDB高频备份的对应频率如下:
如果RDS的高频备份频率小于或等于120分钟,则PolarDB的高频备份频率固定为120分钟。
如果RDS高频备份频率大于120分钟且小于或等于180分钟,则PolarDB高频备份频率固定为180分钟。
如果RDS备份频率为其他频率,则PolarDB的高频备份频率固定为240分钟。
迁移完成后,您可以在控制台上根据实际情况来修改备份策略。
带地址切换
一键升级RDS至PolarDB时支持带地址切换,系统会自动交换RDS和PolarDB上的连接地址,您无需在应用程序端修改任何配置即可自动连接到PolarDB。选择该切换方式后,RDS连接地址对应的PolarDB连接地址如下图所示。
使用带地址切换功能时,需注意以下几点:
带地址切换只会切换RDS和PolarDB的域名,Vswitch、Vip等配置不会切换。
仅当源RDS和目标PolarDB集群同时存在的连接地址才支持相互切换,默认情况下仅私网主地址支持带地址切换。
带地址切换时,RDS和PolarDB的主地址一定会切换,RDS的独享代理地址及只读地址可以和PolarDB的默认集群地址及自定义地址切换,可以选择不切换或切换多组。由于PolarDB最多可以创建7个集群地址,因此最多只支持7组RDS独享代理地址及只读地址的切换。
如需切换其他连接地址,您需在切换前创建好对应的连接地址,否则不会切换。关于如何为PolarDB集群和RDS实例创建连接地址,请参见管理连接地址和设置连接地址。
带地址切换不会切换端口,请确保RDS和PolarDB的连接端口一致(PolarDB和RDS默认使用的端口号均为3306),如需修改端口,请参见修改内外网地址和端口(RDS)或修改连接地址和端口(PolarDB)。
切换域名后,可能会存在DNS解析缓存问题,在缓存过期时间内可能会出现连接不上数据库或数据库只支持读操作无法执行写入操作等情况,建议您刷新一下服务器的DNS缓存。
切换域名后,如果您需要使用DMS登录PolarDB数据库,必须使用新版本的DMS并且使用集群ID来进行登录,连接串无法登录。
相关API
API | 描述 |
创建PolarDB集群。 说明 一键升级时,参数CreationOption取值需要为MigrationFromRDS。 | |
查询PolarDB集群的迁移状态。 | |
修改迁移任务,进行任务的切换或回滚。 | |
取消或完成迁移。 |