阿里云数据库迁移方案:自建数据库迁移到云数据库
本方案介绍如何将网站的自建数据库迁移至云数据库 RDS,解决您随着业务增长可能会面临的数据库运维难题。数据库采用高可用架构,支持跨可用区容灾,给业务带来数据安全、可用性、性能和成本方面收益。方案提供了快速体验教程,模拟了数据库迁移所需的工作,帮助您快速上手。
体验本方案预计费用不超过3元(假设资源运行时间不超过1小时,如果调整资源规格、使用时长,或执行本方案以外的操作,可能会导致费用发生变化,请以控制台显示的实际价格和最终账单为准。)
一、背景
从开展业务的初期到业务增长期,对数据库的性能、可用性会有不同的需求,运维也会变得越来越复杂。建议您尽早将数据库迁移到云数据库 RDS 上。
数据库迁移方案背景.jpg业务初期
在业务初期,您可能会为了控制成本选择在应用服务器上自建数据库。但随着业务增长,这种应用和数据库部署在一个服务器上的架构,会有性能、安全、扩展性方面的隐患。
业务开始增长
为了消除性能、安全、扩展性方面的隐患,您可能会选择将数据库和应用分开部署。但数据库迁移工作并不简单,并且实现高可用和读写分离也很复杂,需要大量的时间和人力成本。
业务持续增长
如果您的业务在未来会持续增长,建议您尽早将数据库迁移到云数据库上。云数据库 RDS 可以让您使用一写多读、故障自动切换、自动备份等关键特性的同时,无需关注复杂的数据库运维工作。
二、RDS 解决的问题
稳定可靠
解决可用性问题:数据云盘存储通过多副本冗余确保数据可靠性;高可用版和集群版采用主备容灾架构,最高可保障99.99%可用性;集群版可启用MGR特性实现RPO=0,数据零丢失。
降本增效
解决成本和扩展性问题:计费方式灵活,Serverless实现最高70%降本;支持ARM架构,体验相同,性价比更高;可按需弹性升降配,不浪费资源。
数据库“自动驾驶”
解决运维复杂问题:支持自动扩缩容、自动SQL优化、自动SQL限流等,实现数据库的自感知、自修复、自优化、自运维及自安全,减轻运维负担,减少运维成本。
三、如何迁移到 RDS
在没有过往经验的情况下,您可能仍然会担心自己不够熟悉数据库迁移,而无法完成这项工作。 这里我们提供了一个快速体验教程,模拟了一遍数据库迁移所需的工作,帮助你快速熟悉这一流程。
自建数据库迁移到云数据库
为了控制成本,本方案中所创建的资源都是尽可能使用小规格资源,体验费用预计不超过 3 元(假设您在 1 小时内完成体验并及时释放资源)。 方案架构如下:
-
由RDS实现数据库可靠性、可用性、安全性的保障。
-
应用部署在ECS上,通过内网(VPC)访问RDS。
-
使用数据传输服务DTS将ECS上的自建数据库迁移至云数据库RDS,迁移过程平滑、安全、高效,应用停机时间降低到分钟级别。
迁移步骤
01 准备资源
通过一键部署脚本,快速创建一个模拟环境,包含一个运行网站应用和数据库的ECS实例,以及一个迁移目标RDS实例。
02 迁移数据库
这一步骤将引导您使用数据传输服务DTS,将ECS上自建的数据迁移到RDS中。
03 验证及切换
通过这一步骤,您将了解如何验证数据库已经迁移成功,并尝试修改应用代码来完成迁移工作。
04清理资源
完成教程学习后,您可以将模拟环境的资源释放掉,避免产生额外的费用。
部署资源
一键部署资源
您可以通过一键部署模板,快速创建一个云服务器ECS实例和一个云数据库RDS实例,ECS实例上已经部署了网站以及自建数据库。本方案以WordPress网站为例。
1.单击一键部署进入ROS控制台,在顶部选择华东1(杭州)。
2.填写模板参数,包括ECS和RDS实例所在地域、可用区,以及ECS和RDS实例的账号密码,其他参数可使用默认值或按需修改。
3.查看页面右下角的资源价格,确认无误后单击创建。
等待资源栈创建,资源部署时间约为10分钟,请耐心等候,直至资源栈状态显示为创建成功。
WordPress网站安装
此时WordPress网站还不能访问,您需要进入WordPress安装页面,完成WordPress安装。
1.访问资源编排管理控制台,在资源栈列表中单击刚创建的资源栈。
2.在资源栈顶部单击输出页签,并在输出关键字列表中找到ECSWordPressUrl参数对应的值,单击进入网页。
p702428.png3.在WordPress安装页面,填写网站相关信息,然后单击Install WordPress。
请记住设置的网站管理员用户名和密码,用于登录网站管理页面。
p702396.png查看已部署的资源
在资源页面,您可以查看上述步骤所生成的ECS实例、RDS实例、WordPress网站访问地址等。
1.在资源栈 > 资源栈列表中单击上一步创建的资源栈。
2.在顶部单击资源页签,可以查看已创建的资源及相关信息。
p702401.png3.在顶部单击输出页签,可以查看输出关键字列表,各关键字描述如下表所示。
参数值 | 说明 | 示例值 |
---|---|---|
ECSWordPressUrl | WordPress访问地址 | 系统自动生成 |
ECSInstanceUser | ECS实例登录账号和密码 | USERNAME: root PASSWORD: 用户自定义 |
WPUserForSQL | ECS自建MySQL数据库账号和密码,该账号用于数据库SQL操作。 | USERNAME: wordpressuser PASSWORD: password |
WPUserForDTS | ECS自建MySQL数据库账号和密码,该账号用于数据库(源库)在DTS中运行数据迁移任务。 | USERNAME: dtssync1 PASSWORD: P@ssw0rd |
RDSUserDTS | RDS数据库高权限账号和密码,用于数据库(目标库)在DTS中运行数据迁移任务。 | USERNAME: dbuser PASSWORD: 用户自定义 |
迁移数据库
现在,您可以使用DTS数据传输服务,配置源库和目标库信息,开始迁移数据库的库表结构、全量数据和增量数据。
1.登录DMS数据管理服务。
2.在顶部菜单栏选择集成与开发(DTS) > 数据传输(DTS) > 数据迁移。
3.单击创建任务。
4.配置源库及目标库信息。
4.1 源库
- 数据库类型:MySQL
- 接入方式:ECS 自建数据库
- 实例地区:本示例中选择华东1(杭州)
- 是否跨阿里云账号:不跨账号
- ECS 实例 ID:选择网站所在的ECS实例。
- 端口:3306
- 数据库账号和密码:输入前面创建的自建数据库账号和密码。本示例为dtssync1和P@ssw0rd。
- 连接方式:非加密连接
4.2 目标库
- 数据库类型:MySQL
- 接入方式:云实例
- 实例地区:本示例中选择华东1(杭州)
- RDS 实例 ID:选择前面创建的RDS实例。
- 数据库账号和密码:输入前面创建的RDS实例账号和密码。本示例为dbuser和您自定义的密码。
- 连接方式:非加密连接
5.单击测试连接以进行下一步,会自动为ECS添加DTS安全组、为RDS添加DTS服务器IP至白名单,以允许DTS访问ECS和RDS。
如果有失败信息,参考对应的错误提示进行修改即可。
6.配置迁移任务。
- 勾选库表结构迁移、全量迁移、增量迁移。
- 在源库对象框中选择要迁移的wordpressdb库,再单击向右小箭头.png将其移动至已选择对象框,然后单击下一步高级配置。
- 勾选全量校验和增量校验、结构校验,然后单击下一步保存任务并预检查。
7.预检查通过率达到100%后,单击下一步购买。选择数据迁移实例的链路规格(本案例以small规格为例),阅读并选中《数据传输(按量付费)服务条款》,单击购买并启动。
8.迁移任务正式开始。
单击迁移任务ID可以查看具体进度。当您看到如下界面,表示存量数据已迁移完成,增量数据会实时同步。此时您可以进入下一步,验证RDS里的数据。
验证及切换
验证RDS里的数据
您可以登录到云数据库RDS实例,查询RDS中是否具备了全量数据,并在网站新增加一条评论,验证该新评论是否从自建数据库同步到RDS。
1.登录RDS实例
-
单击资源栈顶部资源按钮,然后单击Database资源ID进入RDS控制台,单击登录数据库。
-
在弹出的DMS页面中,填写RDS高权限数据库账号和密码,然后单击登录。
本示例中,RDS高权限数据库账号为dbuser,密码为您自定义的密码。
如果报错“您暂未获取当前数据库实例的登录权限”,请单击点此申请,并由主账号完成审批。
2.验证全量数据
在SQLConsole窗口,在左侧双击目标数据库名称wordpressdb,可以看到自建数据库所有库、表数据已经完成迁移。
3.验证增量数据
- 在SQLConsole窗口,双击wp_comments表名,再单击执行,查看wp_comments表的数据。
- 在浏览器输入WordPress网站IP,在网站上增加一条评论。
- 再次查看RDS实例中wp_comments表的数据,可以看到增加的评论,说明增量数据已迁移成功。
从自建数据库切换到RDS
为避免数据丢失,建议先停止写入数据,然后再将应用程序的数据库连接配置修改为云数据库RDS的连接地址。
1.停止写入数据到源数据库。
2.修改WordPress配置文件中的数据库连接配置。
- 在资源列表中单击WebServer资源ID进入ECS控制台,点击远程连接使用ECS账户登录。本示例中,ECS账号为root,密码为用户自定义密码。
- 打开配置文件。
sudo vim /usr/share/nginx/html/wp-config.php
-
按i进入插入模式。
-
修改数据库连接配置:
将数据库账号和密码修改为RDS实例的数据库账号和密码,本示例中,将wordpressuser改为dbuser,将password改为您自定义的密码。
将localhost修改为RDS实例内网地址。
在资源列表中点击Database资源ID进入RDS控制台,在基本信息 > 网络类型 > 查看连接详情中找到RDS数据库内网地址。 -
按Esc键退出插入模式。
-
输入:wq,并按Enter键退出vim编辑器。
清理资源
完成教程后,建议及时释放不需要的资源,包括DTS数据迁移任务和ECS实例等,
1.释放DTS任务
- 登录DMS数据管理服务。
- 在顶部菜单栏选择集成与开发(DTS) > 数据传输(DTS) > 数据迁移。
- 选择DTS任务所在地域,找到目标任务。
- 在操作列单击image.png,然后单击释放任务。
2.释放一键部署创建的所有资源。
-
访问资源编排管理控制台,找到对应资源栈,单击删除。
-
完成确认操作。
四、迁移前后对比
对比项 | ECS 自建数据库 | 使用云数据库 RDS |
---|---|---|
成本 | 公网流量收费;备份数据占用空间;无现成数据库代理用于读写分离;无现成Serverless方案 | 公网流量不收费;提供最多2倍于存储空间的免费备份空间;通用型数据库代理不收费;支持Serverless |
稳定 | 无现成高可用;无现成负载均衡 | 高可用和集群系列秒级故障切换,最高保障99.99%可用性;基础系列自动故障恢复,承诺99.5%可用性;自动读写分离,实现负载均衡 |
性能 | 无现成的参数调优;无现成读写分离;性能排查复杂;无内核优化 | 持续优化参数;支持只读实例和读写分离,扩展读性能;支持慢日志分析、自动SQL优化;自研AliSQL和AliPG优化性能 |
安全 | 无现成的连接链路加密;无现成的TDE加密;审计困难,无SQL审计;内核Bug需要自行修复 | SSL加密;TDE加密;SQL洞察与审计;内核Bug由阿里云修复 |
官网相关地址直达:
1.更多阿里云方案查询:https://www.aliyun.com
2.阿里云服务器ECS相关活动:https://www.aliyun.com/daily-act/ecs/activity_selection
3.云小站(代金券发布平台):https://www.aliyun.com/minisite/goods