美文网首页
阿里云数据库迁移方案:自建数据库迁移到云数据库

阿里云数据库迁移方案:自建数据库迁移到云数据库

作者: 阿里云最新优惠和活动汇总 | 来源:发表于2024-08-22 08:02 被阅读0次

    本方案介绍如何将网站的自建数据库迁移至云数据库 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,迁移过程平滑、安全、高效,应用停机时间降低到分钟级别。

    数据库迁移架构.png

    迁移步骤

    01 准备资源
    通过一键部署脚本,快速创建一个模拟环境,包含一个运行网站应用和数据库的ECS实例,以及一个迁移目标RDS实例。

    02 迁移数据库
    这一步骤将引导您使用数据传输服务DTS,将ECS上自建的数据迁移到RDS中。

    03 验证及切换
    通过这一步骤,您将了解如何验证数据库已经迁移成功,并尝试修改应用代码来完成迁移工作。

    04清理资源
    完成教程学习后,您可以将模拟环境的资源释放掉,避免产生额外的费用。

    部署资源

    一键部署资源

    您可以通过一键部署模板,快速创建一个云服务器ECS实例和一个云数据库RDS实例,ECS实例上已经部署了网站以及自建数据库。本方案以WordPress网站为例。

    1.单击一键部署进入ROS控制台,在顶部选择华东1(杭州)。

    2.填写模板参数,包括ECS和RDS实例所在地域、可用区,以及ECS和RDS实例的账号密码,其他参数可使用默认值或按需修改。

    3.查看页面右下角的资源价格,确认无误后单击创建。
    等待资源栈创建,资源部署时间约为10分钟,请耐心等候,直至资源栈状态显示为创建成功。

    p702385.png
    WordPress网站安装

    此时WordPress网站还不能访问,您需要进入WordPress安装页面,完成WordPress安装。

    1.访问资源编排管理控制台,在资源栈列表中单击刚创建的资源栈。

    2.在资源栈顶部单击输出页签,并在输出关键字列表中找到ECSWordPressUrl参数对应的值,单击进入网页。

    p702428.png

    3.在WordPress安装页面,填写网站相关信息,然后单击Install WordPress。

    请记住设置的网站管理员用户名和密码,用于登录网站管理页面。

    p702396.png
    查看已部署的资源

    在资源页面,您可以查看上述步骤所生成的ECS实例、RDS实例、WordPress网站访问地址等。

    1.在资源栈 > 资源栈列表中单击上一步创建的资源栈。

    2.在顶部单击资源页签,可以查看已创建的资源及相关信息。

    p702401.png

    3.在顶部单击输出页签,可以查看输出关键字列表,各关键字描述如下表所示。

    参数值 说明 示例值
    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里的数据。

    p759604.png

    验证及切换

    验证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

    云小站代金券图.png

    相关文章

      网友评论

          本文标题:阿里云数据库迁移方案:自建数据库迁移到云数据库

          本文链接:https://www.haomeiwen.com/subject/sekikjtx.html