一键克隆RDS MySQL至PolarDB MySQL版

本章节介绍了一键克隆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实例未开启TDESSL。若已开启,您可以选择手动创建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服务关联角色。具体步骤如下:

  1. 前往RAM控制台

  2. 在左侧导航栏,选择身份管理>角色

  3. 在角色列表中,查看是否已存在名为AliyunServiceRoleForPolarDB的服务关联角色。

  4. 单击左侧创建角色

  5. 在弹出的创建角色对话框中,选择阿里云服务,并单击下一步

    阿里云服务

  6. 选择角色类型为服务关联角色,并选择云服务为云数据库PolarDB

    服务关联角色

  7. 单击完成,返回角色列表,确保已创建成功。

前置检查:删除源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多余的系统账号为例,具体删除步骤如下:

  1. 使用高权限账号连接实例。

  2. 找到所有的root和aliyun_root系统账号。

    select * from mysql.user where user in ('root', 'aliyun_root');
  3. 删除多余的系统账号。RDS MySQL 5.6正确的系统账号是root,因此需要删除aliyun_root账号。

    delete from mysql.user where user = 'aliyun_root' limit n; 

步骤一:从RDS克隆

本操作将创建一个与源RDS实例数据相同的PolarDB集群。

  1. 登录PolarDB控制台

  2. 在左上角,选择集群所在地域。

  3. 单击创建新集群

  4. 选择计费类型包年包月按量付费Serverless

    • 包年包月:在创建集群时支付计算节点的费用,而存储空间会根据实际数据量按小时计费,并从账户中按小时扣除。

    • 按量付费:无需预先支付费用,计算节点和存储空间(根据实际数据量)均按小时计费,并从账户中按小时扣除。

    • Serverless:无需预先支付费用,计算节点、存储空间、数据库代理等资源在集群使用过程中基于实际需求动态弹性扩缩,并根据扩缩的实际用量来计费。

  5. 设置如下参数。

    说明

    下表格中未详细介绍的参数,请参考购买集群相关章节。

    参数

    说明

    创建方式

    选择从RDS克隆

    地域

    选择源RDS MySQL实例所在地域。

    说明

    新建的PolarDB集群也在此地域。

    源RDS版本

    源RDS实例的版本,您可以选择5.65.78.0

    源RDS实例

    选择源RDS实例,不包括只读实例。

    数据库引擎

    目标PolarDB集群的数据库引擎版本。您可以选择与源RDS实例一致的版本,也可以选择跨版本。

    节点规格

    按需选择,建议不低于源RDS实例规格。关于PolarDB节点规格,详情请参见企业版计算节点规格

  6. 在右上角检查集群配置信息,设置购买时长(针对包年包月集群)、购买数量是否自动续费

  7. 阅读并勾选服务协议。单击立即购买

  8. 支付页面,确认未支付订单信息和支付方式,单击订购

    说明
    • 支付成功后,需要等待10~15分钟创建集群,之后您就可以在集群列表中看到新创建的集群。

    • 当集群中的节点状态为创建中时,整个集群可能仍未创建完成,此时集群不可用。只有当集群状态为运行中时,集群才可以正常使用。

    • 请确认已选中正确的地域,否则无法看到您创建的集群。

  9. 登录PolarDB控制台,查看新建的PolarDB集群的状态。

    说明

    若您是通过逻辑迁移(DTS数据同步)方式进行一键克隆,请单击集群ID进入集群基本信息页,查看迁移状态。若RDS迁移状态变为预检查失败,请根据错误信息中的提示进行处理。预检查失败

    例如,如果源RDS中创建了触发器,则预检查会失败并报错“RDS实例存在触发器”。请先删除源RDS的触发器,再点击继续迁移,或者点击放弃迁移后手动去DTS控制台页面创建迁移任务。具体可参见源库存在触发器时如何配置同步或迁移作业

    您也可以在此步骤选择放弃迁移,相关影响请参见常见问题

步骤二:查看数据同步任务详情(仅限逻辑迁移)

若您是通过逻辑迁移(DTS数据同步)方式进行一键克隆,请单击集群ID进入集群基本信息页,查看迁移状态。若遇到迁移报错(如预检查失败)或者其他异常状态(如复制延迟异常高)时,您可以前往对应的DTS数据同步任务的详情页,查看数据同步任务的具体信息。

  1. 进入PolarDB控制台

  2. 找到目标集群,单击集群ID。

  3. 基本信息页面的RDS迁移功能中,单击DTS数据同步任务的任务名称,进入DTS控制台数据同步列表。

    DTS任务

  4. 找到对应的数据同步任务,您可查看预检查失败详情、查看同步任务详情、查看同步任务日志等。

    进入详情详情

常见问题

  • Q:一键升级RDS MySQL至和一键克隆RDS MySQL至PolarDB MySQL版两者有什么区别?

    A:两者间的区别如下表:

    对比项

    一键升级RDS MySQL至

    一键克隆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

描述

CreateDBCluster

创建PolarDB集群。

说明

一键克隆时,参数CreationOption取值需要为CloneFromRDS

后续步骤

请尽快将应用的数据库连接地址修改为PolarDB的地址,详情请参见管理连接地址