通过本方案,RDS MySQL的数据可在线实时同步到PolarDB MySQL版,并且升级切换后的PolarDB集群包含源RDS实例的账号信息、数据库、IP白名单和必要的参数。这样可实现不修改应用代码的情况下,将RDS MySQL数据库迁移升级至PolarDB MySQL版。
一、方案优势
零改造成本
100%兼容MySQL,您可以像使用MySQL一样使用PolarDB MySQL版 可保留数据库原连接地址,无需应用程序修改任何连接配置即可切换至PolarDB。
安全可靠
支持在线热迁移(增量实时同步),迁移过程仅闪断一次(即当业务从RDS切换至PolarDB时),业务停机时间<10分钟。支持一键回滚,迁移失败可以在10分钟内恢复。
迁移免费
迁移链路完全免费,对于包年包月的RDS实例,数据从RDS迁移到PolarDB后,若业务已在PolarDB上稳定运行且不再需要RDS时,您可以申请转单优惠退款,避免浪费闲置的RDS资源。
二、应用背景
秒级无感弹性伸缩,快速应对业务峰值
PolarDB解决了传统数据库的升配时间会随着存储量、宿主机资源的情况而上升的问题。
海量存储,支持上百 TB 级别数据
PolarDB采用存储和分离架构,单实例最高100 TB 存储,节点支持纵向扩展和横向扩展。
提供高读写性能,支持业务全球化部署
PolarDB提供低延迟、高稳定、高性能的云服务,满足游戏业务需求。
数据强一致性保证,满足金融级可靠性要求
PolarDB采用存储和计算分离的架构,支持秒级故障恢复、数据一致性和数据备份容灾。
三、架构与部署
本架构通过一键迁移升级功能,将RDS MySQL的数据实时同步到PolarDB MySQL版。在正式切换前,可先通过DAS提供的流量回放和压测功能对目标端PolarDB进行全面的兼容性和性能评估。正式切换时,会自动将源端RDS的连接地址交换给目标PolarDB端,从而实现无需修改应用程序任何代码和配置的情况下将RDS MySQL在线升级至PolarDB MySQL版。
方案概览
PolarDB MySQL 版是阿里云自研的云原生数据库,产品基于云原生架构、计算存储分离、软硬件一体化设计,具有一写多读或多写多读、共享存储、60亿行数据稳定运行、秒级DDL、主从切换无闪断、闪回查询等持续为业务提供高价值的特性。
通过本方案,您可以体验如何在不修改任何应用代码的情况下,将 MySQL 数据库中的数据迁移至 PolarDB MySQL 版,借助 PolarDB 的超高弹性、性能、高可用高可靠等特性来应对业务高速增长带来的数据库压力。
本迁移方案具有以下优势:
1.零改造成本
- 100%兼容MySQL,您可以像使用MySQL一样使用PolarDB MySQL版
- 可保留数据库原连接地址,无需应用程序修改任何连接配置即可切换至PolarDB
2.安全可靠
- 支持在线热迁移(增量实时同步),迁移过程仅闪断一次(即当业务从RDS切换至PolarDB时),业务停机时间<10分钟
- 支持一键回滚,迁移失败可以在10分钟内恢复
3.迁移免费
- 迁移链路完全免费
- 对于包年包月的RDS实例,数据从RDS迁移到PolarDB后,若业务已在PolarDB上稳定运行且不再需要RDS时,您可以申请转单优惠退款,避免浪费闲置的RDS资源。
方案架构
方案提供的默认设置(如地域、VPC、实例名称等)完成部署后在阿里云上运行环境如下图所示。实际部署时您可以根据资源规划修改部分设置,但最终形成的运行环境与下图相似。
本方案的技术架构包括以下基础设施和云服务:
- 地域和可用区:RDS MySQL实例和PolarDB MySQL版实例必须在同地域,可用区无限制
- 1个专有网络VPC:升级后的PolarDB MySQL版实例将与升级前RDS MySQL实例使用同一个VPC网络
- 核心系统:
1个ECS实例,用于部署MySQL客户端,模拟业务读写RDS MySQL数据库
1个RDS MySQL实例,通过一键升级,切换至PolarDB MySQL实例
部署准备
开始部署前,请按以下指引完成账号申请、账号充值、RAM用户创建和授权。
准备账号
1.如果您还没有阿里云账号,请访问阿里云账号注册页面,根据页面提示完成注册。阿里云账号是您使用云资源的付费实体,因此是部署方案的必要前提。
2.为阿里云账号充值。
- 为节省成本,本方案默认选择使用按量付费资源,使用按量付费资源需要确保账户余额不小于100元。
- 完成本方案的部署及体验,预计产生费用不超过20元(假设您选择下表中的相关规格资源,且运行时间不超过2小时,如果调整了资源规格,请以控制台显示的实际报价以及最终账单为准)。
云服务 | 规格配置 | 地域 | 预估费用参考 |
---|---|---|---|
云数据库 PolarDB | polar.mysql.x4.large | 华东2(上海) | 4.17 元/小时 |
云数据库 RDS MySQL | mysql.n2.medium.2c | 华东2(上海) | 1.381 元/小时 |
云服务器 ECS | ecs.g7.xlarge | 华东2(上海) | 配置费用:1.089 元/小时 公网流量费用:0.800 元/GB |
3.阿里云账号拥有操作资源的最高权限,从云资源安全角度考虑,建议您创建一个RAM用户,使RAM用户仅能操作有限的资源,然后由RAM用户完成本方案。
- 访问资源组页面,单击创建资源组,创建一个资源组,例如命名为rds2polardb。
- 访问RAM控制台-用户页面,单击创建用户,勾选控制台访问和OpenAPI 调用访问,填写其他信息,创建一个RAM用户。
- 访问RAM控制台-权限策略页面,单击创建权限策略,单击脚本编辑,并复制粘贴以下内容,完成创建自定义权限策略。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"polardb:Describe",
"ecs:Describe",
"vpc:Describe",
"ros:"
],
"Resource": "*"
}
]
}
4.访问RAM控制台-用户页面,授予权限。
- 单击目标RAM用户操作列的添加权限,选择授权范围为指定资源组(例如rds2polardb),然后选择系统策略AliyunECSFullAccess、AliyunRDSFullAccess、AliyunVPCFullAccess和AliyunPolardbFullAccess,单击确定。
- 再次单击目标RAM用户操作列的添加权限,选择授权范围为整个云账号,然后选择前面创建的自定义权限策略,单击确定。
- 创建AliyunServiceRoleForPolarDB角色,用于PolarDB服务访问其他云服务资源。
访问RAM访问控制台-角色页面,单击创建角色,角色类型选择阿里云服务,角色类型配置为服务关联角色,选择云服务为云数据库 PolarDB,单击完成。
一键部署
资源编排(ROS)可以让您通过YAML或JSON文件清晰简洁地描述所需的云资源及其依赖关系,然后自动化地创建和配置这些资源。您可以通过下方提供的ROS一键部署链接,来自动化地完成这些资源的创建和配置。
本文介绍的ROS模板主要完成了以下内容:
- 部署1个专有网络VPC。
- 部署1台交换机。
- 部署1台云服务器 ECS。
- 部署1个云数据库 RDS MySQL实例。
- 已在RDS MySQL实例中写入测试数据。
- 部署1个从云数据库 RDS MySQL实例迁移生成的云数据库 PolarDB MySQL实例。
1.单击一键部署前往ROS控制台,系统自动打开使用新资源创建资源栈的面板。
2.确认好地域后(本文以华东2(上海)为例),在配置模板参数步骤中配置资源栈名称、ECS等配置。
3.单击两次下一步,跳转至配置资源栈(可选)步骤,选择资源组为被授权的资源组(本文以rds2polardb为例)。
4.单击创建,系统将自动创建并部署本教程所需的资源。
5.当资源栈信息页面的状态显示为创建成功时表示一键配置完成。
5.单击资源页签,找到已创建的PolarDB实例,单击实例ID,进入PolarDB实例详情页,查看RDS实例的数据是否已存在。
迁移切换
当目标PolarDB集群的复制延迟小于60秒时,即可进行迁移切换操作。正式业务切换,建议选择业务低峰期进行。
1.本方案通过持续写入RDS MySQL,并查看RDS MySQL和PolarDB MySQL两边的最新时间和数据量来观察切换带来的中断耗时。
一键部署完成后,会生成2个脚本可用于模拟业务持续写入RDS MySQL,并实时观察RDS MySQL和PolarDB MySQL两边的最新时间和数据量来观察切换带来的中断耗时。2个脚本包含:loop_insert_query_mysql.sh、loop_query_polardb.sh,其中
- loop_insert_query_mysql.sh 主要用于模拟每隔5秒向RDS MySQL写入数据,并打印系统时间、数据写入时间、数据的总行数、PolarDB的版本等信息。
- loop_query_polardb.sh 主要用于模拟每隔5秒查询PolarDB数据库,并打印系统时间、数据写入时间、数据的总行数、PolarDB的版本等信息。
- 可通过PolarDB版本信息判断当前连接的是RDS MySQL还是PolarDB,如下
左边是RDS MySQL(无polardb_version返回值),右边是PolarDB MySQL(polardb_version非空)
2.登录ECS
返回ECS实例列表页面,找到已创建的实例,单击对应操作列下的远程连接。
在弹出的远程连接对话框中,单击通过Workbench远程连接对应的立即登录。
在弹出的登录实例对话框中,输入登录信息,单击确定。
- 用户名:输入用户名(例如root)
- 密码:创建ECS实例时,在登录凭证处设置的登录密码。
3.在ECS上,执行脚本模拟业务持续在RDS MySQL写入数据,并观察RDS MySQL和PolarDB MySQL两边的最新时间和数据量来观察切换带来的中断耗时。
~]# ls /root/*.sh
/root/loop_insert_query_mysql.sh /root/loop_query_polardb.sh
-- A窗口
~]# sh /root/loop_insert_query_mysql.sh
-- B窗口
~]# sh loop_query_polardb.sh
4.在基本信息页面的RDS迁移功能中,单击迁移切换。
5.在开始切换对话框中,选择带地址切换(应用程序不用改连接配置)
6.切换成功
本方案重点介绍在线不更改连接地址完成RDS MySQL一键升级至PolarDB MySQL。影响中断时间的因素较多,实际生产业务升级中,切换过程一般小于5分钟。
完成及清理
方案验证
参考迁移切换迁移成功的结果显示。
清理资源
在本方案中,您创建了1个专有网络VPC、1台交换机、1台ECS云服务器、1个云数据库 RDS MySQL 实例、1个云原生数据库 PolarDB MySQL 实例。测试完方案后,您可以在ROS控制台直接删除资源栈并删除相关资源。
官网相关地址直达:
1.更多阿里云方案查询:https://www.aliyun.com
2.阿里云服务器ECS相关活动:https://www.aliyun.com/daily-act/ecs/activity_selection
3.云小站(代金券发布平台):https://www.aliyun.com/minisite/goods