本章节介绍了一键升级RDS MySQL至PolarDB MySQL引擎的方案简介、两种升级方式及其优势和对比、升级前提条件、使用限制、收费规则等。
升级方案概述
PolarDB支持将RDS MySQL一键升级至PolarDB MySQL引擎,升级后PolarDB集群包含源RDS实例的账号信息、数据库、IP白名单和必要的参数。
当前支持一键升级的源RDS MySQL的版本和存储类型,以及目标PolarDB MySQL引擎的版本情况如下:
- 支持源RDS MySQL 5.6、5.7和8.0的高可用版一键升级至PolarDB MySQL引擎。
说明 如果源RDS MySQL实例为基础版,请先将基础版升级为高可用版后,再执行一键升级操作。
- 支持迁移RDS MySQL至相同或不同版本的PolarDB MySQL引擎。如支持RDS MySQL 5.6一键升级至PolarDB MySQL引擎 5.6,也支持RDS MySQL 5.6升级至PolarDB MySQL引擎 8.0。
物理迁移和逻辑迁移对比
当前的一键升级功能通过物理迁移(物理复制)和逻辑迁移(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数据同步任务中重新配置迁移对象 |
此外,这两种方式所支持的MySQL版本和存储类型的具体对应关系如下:
迁移方式 | 源RDS MySQL实例版本和存储类型 | 目标PolarDB MySQL引擎集群版本 |
---|---|---|
物理迁移(物理复制) | RDS MySQL 5.6高可用版,且存储类型为本地SSD盘。 | 与RDS MySQL相同版本的PolarDB MySQL引擎集群。 |
RDS MySQL 5.7高可用版,且存储类型为本地SSD盘。 | ||
逻辑迁移(DTS数据同步) | RDS MySQL 5.6高可用版,且存储类型为本地SSD盘。 | 与RDS MySQL不同版本的PolarDB MySQL引擎集群。 |
RDS MySQL 5.7高可用版,且存储类型为云盘(ESSD PL1 云盘、ESSD PL2 云盘、ESSD PL3 云盘)。 |
|
|
RDS MySQL 8.0高可用版,且存储类型为云盘(ESSD PL1 云盘、ESSD PL2 云盘、ESSD PL3 云盘)。 | ||
RDS MySQL 8.0高可用版,且存储类型为本地SSD盘。 |
升级方案优势
一键升级功能具有如下优势:
- 可保留数据库原连接地址,无需应用程序修改任何连接配置即可切换至PolarDB。
- 迁移完全免费。
- 迁移过程数据0丢失。
- 支持增量迁移,停机时间小于10分钟。
- 支持在线热迁移,迁移过程仅闪断一次(即当业务从RDS切换至PolarDB时)。
- 支持回滚,迁移失败可以在10分钟内恢复。
前提条件
- 不管是通过物理迁移还是逻辑迁移方式进行一键升级,源RDS实例版本需满足如下条件:
- 针对RDS MySQL 5.6高可用版,内核小版本需为20190815或以上版本。
- 针对RDS MySQL 5.7高可用版,内核小版本需为20200331或以上版本。
- 针对RDS MySQL 8.0高可用版,目前无内核小版本要求。
说明 您可以执行show variables like '%rds_release_date%';
命令查看源RDS实例的内核小版本。如果源RDS实例的内核小版本低于上述指定版本,您可以将内核小版本升级到最新版。关于如何升级内核小版本,请参见升级内核小版本。 - 若您是通过逻辑迁移(DTS数据同步)方式进行一键升级,如果源RDS创建了触发器,请先确认触发器是否会导致源和目标库的数据不一致。如果确认不会导致数据不一致,可以在迁移任务预检查报错“RDS实例存在触发器”时点击继续迁移并跳过触发器检查;如果有数据不一致风险,可以先删除RDS的触发器,再点击继续迁移,或者点击取消迁移后手动去DTS控制台页面创建迁移任务。具体可参见源库存在触发器时如何配置同步作业。
- 如果RDS的连接地址开启了SSL,并且您选择带地址切换并切换该地址,请确保PolarDB集群对应的连接地址已开启SSL。
- 源RDS实例的表存储引擎为InnoDB。
- 如果RDS处于高安全模式(数据库代理模式),需要创建有高权限账号(请参见创建账号),或者切换到高性能模式(参见【重要】RDS网络链路升级说明),才能进行一键升级。
使用限制
- 物理迁移(物理复制)方式的使用限制如下:
- 暂不支持跨地域迁移。
- 迁移期间不允许对源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
说明 仅正向任务(源库同步至目标库)支持同步DDL操作,反向任务(目标库同步至源库)将自动过滤DDL操作。故在执行迁移切换操作后,由于增量数据会通过反向任务从PolarDB同步至RDS,请勿在PolarDB上执行DDL操作。 - 其他限制:
类型 说明 其他限制 - 建议源和目标库版本保持一致,或者从低版本同步到高版本以保障兼容性。如为高版本同步至低版本,可能存在数据库兼容性问题。
- 执行数据同步前需评估源库和目标库的性能,同时建议业务低峰期执行数据同步。否则全量数据初始化时将占用源库和目标库一定的读写资源,可能会导致数据库的负载上升。
- 全量初始化会并发执行INSERT操作,导致目标数据库的表产生碎片,因此全量初始化完成后目标实例的表空间比源实例的表空间大。
- 在DTS同步期间,不允许有除DTS外的数据写入目标库,否则会导致源库与目标库数据不一致。例如,有除DTS外的数据写入目标库时,使用DMS执行在线DDL变更,可能引起目标库数据丢失。
- DTS默认同步到目标数据库中时会取消外键约束,因此源数据库的级联、删除等操作不会同步到目标数据库。
收费规则
- 物理迁移(物理复制)方式的收费规则如下:
从RDS迁移到PolarDB操作完全免费,您只需承担购买PolarDB集群的费用。关于PolarDB集群的费用,详情请参见计费项概览。
- 逻辑迁移(DTS数据同步)方式的收费规则如下:
您除了需承担购买PolarDB集群的费用之外,还需承担DTS所创建的同步任务产生的费用。但现阶段该功能处于试用阶段,创建的同步任务30天内不收取任何费用。具体如下:
迁移对象 费用 库表结构同步和全量数据同步 创建同步任务后,30天内不收取任何费用。 超过30天后,将会取消创建的同步任务。
说明- 您可以登录PolarDB控制台,在基本信息页面的RDS迁移功能区域查看同步任务的剩余时间。
- 若您对同步任务的时间有更长的需求,请提交工单联系阿里云技术支持申请延长。
增量数据同步
带地址切换
一键升级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 | 描述 |
---|---|
CreateDBCluster | 创建PolarDB集群。
说明 一键升级时,参数CreationOption取值需要为MigrationFromRDS。
|
DescribeDBClusterMigration | 查询PolarDB集群的迁移状态。 |
ModifyDBClusterMigration | 修改迁移任务,进行任务的切换或回滚。 |
CloseDBClusterMigration | 取消或完成迁移。 |