本章节介绍了一键升级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数据同步)方式实现。具体请参见物理迁移和逻辑迁移对比。
源RDS MySQL实例的计费类型不管是包年包月还是按量付费,都可以一键升级至PolarDB MySQL版,并且目标PolarDB集群的计费方式可以是包年包月、按量付费或是Serverless。
物理迁移和逻辑迁移对比
当前的一键升级功能通过物理迁移(物理复制)和逻辑迁移(DTS数据同步)两种方式实现。
物理迁移(物理复制)方式
先通过物理复制的方式,先从源RDS MySQL实例复制全量数据,然后保持增量同步至创建的PolarDB MySQL版集群中。
增量同步过程中,所有创建的非InnoDB表都会转成InnoDB表。
逻辑迁移(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。
升级链路30天内免费,不支持虚商、RAM用户(子账号)等账号参加该免费活动。
迁移过程数据0丢失。
支持增量迁移,停机时间小于10分钟。
支持在线热迁移,迁移过程仅闪断一次(即当业务从RDS切换至PolarDB时)。
支持回滚,迁移失败可以在10分钟内恢复。
前提条件
通过物理迁移方式进行一键升级,源RDS实例版本需满足如下条件,逻辑迁移对源RDS实例版本无限制:
针对RDS MySQL 5.6高可用版,内核小版本需为20190815或以上版本。
针对RDS MySQL 5.7高可用版,内核小版本需为20200331或以上版本。
说明您可以执行
SHOW VARIABLES LIKE '%rds_release_date%';
命令查看源RDS实例的内核小版本。如果源RDS实例的内核小版本低于上述指定版本,您可以将内核小版本升级到最新版。关于如何升级内核小版本,请参见升级内核小版本。物理迁移时,建议将本地日志(Binlog)的保留时长设置为至少24小时或以上。
仅表存储引擎类型为InnoDB或X-Engine的源RDS实例支持一键升级功能。
若您是通过逻辑迁移(DTS数据同步)方式进行一键升级,如果源RDS创建了触发器,请先删除RDS的触发器,否则会导致迁移中断。具体可参见源库存在触发器时如何配置同步或迁移作业。
如果RDS处于高安全模式(数据库代理模式),需要创建有高权限账号(请参见创建账号),或者切换到高性能模式(参见【产品/功能变更】RDS网络链路升级说明),才能进行一键升级。
使用限制
仅支持将RDS MySQL一键升级至相同版本或更高版本的PolarDB MySQL版,不支持降版本升级。如不支持从RDS MySQL 5.7一键升级至PolarDB MySQL版 5.6,不支持从RDS MySQL 8.0.2一键升级至PolarDB MySQL版 8.0.1。
带地址切换中,当前不支持IPv6地址的带地址切换。
已有DTS双向同步的集群无法进行一键迁移。
物理迁移(物理复制)方式的使用限制如下:
暂不支持跨地域迁移。
迁移期间不允许对源RDS实例执行参数设置的操作。
逻辑迁移(DTS数据同步)方式的使用限制如下:
说明在库表结构迁移和全量迁移阶段,请勿执行库或表结构变更的DDL操作,否则数据迁移任务会失败。
暂不支持跨地域迁移。
迁移期间不允许对源RDS实例执行参数设置的操作。
仅支持迁移库、表、视图、存储过程、函数这五类结构,不支持迁移event结构。
对源库有如下限制:
类型
说明
源库限制
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集群,请提前将只读节点的白名单合入到主节点的白名单配置中。
逻辑迁移过程中,全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。
逻辑迁移过程中,全量数据初始化时会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标实例的表空间比源实例的表空间大。
逻辑迁移过程中,请勿手动释放DTS任务。
全量数据同步需要一定时间,耗时与数据量大小有关,在此期间,目标端状态为创建中,请耐心等待。
收费规则
物理迁移(物理复制)方式
物理迁移(物理复制)方式中,整个迁移过程不收取额外费用,仅收取目标PolarDB集群的费用。
若目标PolarDB集群为按量付费集群,目标集群在整个迁移过程中不计费,而是在如下操作后才开始正常按量计费:
若目标PolarDB集群为包年包月集群,则在创建目标PolarDB集群时预支付对应的费用。
逻辑迁移(DTS数据同步)方式
逻辑迁移(DTS数据同步)方式中,不收取DTS迁移和同步任务的费用(不支持虚商、RAM用户(子账号)等账号参加该免费活动),仅收取目标PolarDB集群的费用。
备份策略说明
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集群同时存在的连接地址才支持相互切换,默认情况下目标端仅创建私网主地址和私网集群地址,如果源端包含2个以上的连接地址,您需在切换前在目标端创建好对应的连接地址,否则不会切换。关于如何为PolarDB集群和RDS实例创建连接地址,请参见管理连接地址和设置连接地址。
带地址切换时,RDS主地址一定会切换,您可以选择和PolarDB主地址或默认集群地址切换。RDS的独享代理地址及只读地址可以和PolarDB的默认集群地址及自定义地址切换,可以选择不切换或切换多组。由于PolarDB最多可以创建7个集群地址,因此最多只支持7组RDS独享代理地址及只读地址的切换。
在增量同步完成后,目标端集群会变成运行中,在带地址切换前,您可以进行参数配置、只读节点补齐、地址补齐等操作。
使用带地址切换交换私网地址前,请确保源RDS实例和目标端PolarDB集群属于同一个VPC,否则切换后原有服务将无法连接。
切换域名后,如果您需要使用DMS登录PolarDB数据库,请确保配置了正确的集群ID或连接串。
迁移评估
为了保证迁移链路的顺利和更好的迁移体验,PolarDB提供了迁移评估功能,您可以校验在开始迁移前,对实例状态、迁移任务依赖、源实例属性信息等前提条件进行预校验,提前发现影响迁移进度的前置条件并处理,以降低迁移过程中的处理成本和资源成本。
具体操作说明,请参见迁移评估。
相关API
API | 描述 |
创建PolarDB集群。 说明 一键升级时,参数CreationOption取值需要为MigrationFromRDS。 | |
查询PolarDB集群的迁移状态。 | |
修改迁移任务,进行任务切换或回滚。 | |
取消或完成迁移。 |