从自建到云端:数据库迁移实践指南

将自建数据库迁移到阿里云RDS,实现零维护、高可用和性能提升,保障数据安全。

原文标题:从自建到云端,数据库迁移全攻略

原文作者:阿里云开发者

冷月清谈:

本文介绍了如何将自建数据库迁移到阿里云RDS数据库的完整流程,涵盖了WordPress网站搭建、数据库迁移步骤、数据验证以及服务可用性验证等方面。

迁移过程主要使用了DTS数据传输服务,配置源库(自建数据库)和目标库(RDS)信息,进行库表结构、全量数据和增量数据的迁移。文章详细描述了配置源库和目标库参数、迁移任务设置、数据校验以及最终的购买和启动迁移任务的步骤。

为了验证迁移结果,文章提供了通过查看RDS实例数据和切换数据库连接两种验证方式。通过登录RDS实例,查看目标数据库中的数据,确认全量和增量数据是否迁移成功。然后,通过修改WordPress配置文件中的数据库连接配置,将应用程序连接到RDS数据库,验证RDS服务的可用性。

此外,文章还提到了阿里云RDS数据库的优势,例如零维护成本、高可用性、性能优化和数据安全等。

怜星夜思:

1、文章中提到了RDS的很多优势,例如免运维、高可用等,那么除了这些之外,将数据库迁移到云端还有什么其他好处?
2、文章里演示的是MySQL数据库的迁移,如果我的自建数据库是其他类型的,比如SQL Server或PostgreSQL,迁移过程会有什么不同?
3、在实际迁移过程中,有哪些需要注意的事项或潜在的风险?

原文内容


一、引言

在数字化浪潮席卷而来的今天,数据库作为数据存储与管理的核心,其管理和运维显得尤为重要。随着业务规模的持续扩展,为了规避性能瓶颈、安全隐患和扩展性不足等问题,不少用户选择将数据库和应用分开部署。然而,这种做法不仅耗费大量时间与人力成本,还使运维变得更加复杂。那么,如何在不同发展阶段满足多数据库的多样化需求?又如何在保证数据安全、提升可用性和性能的同时,优化成本?这正是数据库迁移技术价值所在。

本方案将为您详细解析如何将网站的自建数据库迁移至云数据库 RDS,有效解决数据库管理中的痛点与难题。通过云数据库 RDS,您可以实现零成本维护、高可用性以及集群秒级故障切换,确保业务的稳定运行,同时优化数据库参数与性能,并全面保障数据安全。

核心优势:

• 零成本:公网流量不收费;提供最多 2 倍于存储空间的免费备份空间;通用型数据库代理不收费;支持 Serverless。
• 高可用,保证业务稳定性:高可用和集群系列秒级故障切换,最高保障 99.99% 可用性;基础系列自动故障恢复,承诺 99.5% 可用性;自动读写分离,实现负载均衡。
• 参数持续优化,性能优越:持续优化参数;支持只读实例和读写分离,扩展读性能;支持慢日志分析、自动 SQL 优化;自研 AliSQL 和 AliPG 优化性能

• 数据传输加密,阿里云自动修复:SSL 加密;TDE 加密;SQL 洞察与审计;内核 Bug 由阿里云修复

此外,本文还提供了快速体验教程,全面模拟数据库迁移过程,帮助您快速上手迁移操作。点击文末“阅读原文”,了解更多详情,参与活动更有精美礼品等您来拿!

二、网站安装及浏览

1、安装WordPress网站

一键部署资源后,进入WordPress安装页面,完成WordPress安装。

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

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

(3)在WordPress安装页面,填写网站相关信息,然后单击Install WordPress。如下图所示:

2、浏览WordPress网站

(1)返回资源编排管理控制台,在资源栈列表中单击刚创建的资源栈。

(2)单击输出页签中ECSWordPressUrl参数对应的值,即可进入网站浏览。

三、迁移数据库

现在,您可以使用DTS数据传输服务,配置源库和目标库信息,开始迁移数据库的库表结构、全量数据和增量数据。

  1. 登录DMS数据管理服务

  2. 在顶部菜单栏选择集成与开发(DTS) > 数据传输(DTS) > 数据迁移

  3. 单击创建任务

  4. 配置源库及目标库信息。

    a. 源库

    • 数据库类型:MySQL
    • 接入方式:云实例
    • 实例地区:本示例中选择华东1(杭州)
    • 是否跨阿里云账号:不跨账号
    • RDS实例ID:选择前面创建的RDS实例。
    • 数据库账号和密码:输入前面创建的RDS实例账号和密码。本示例为dbuser和您自定义的密码。
    • 连接方式:非加密连接

    b. 目标库
    • 数据库类型:MySQL
    • 接入方式:ECS 自建数据库
    • 实例地区:本示例中选择华东1(杭州)
    • 是否跨阿里云账号:不跨账号
    • ECS实例ID:选择网站所在的ECS实例。
    • 端口:3306
    • 数据库账号和密码:输入前面创建的自建数据库账号和密码。本示例为dtssync1和P@ssw0rd。
    • 连接方式:非加密连接

  5. 单击测试连接以进行下一步,系统会自动为ECS添加DTS安全组,为RDS添加DTS服务器IP至白名单,以允许DTS访问ECS和RDS。如果有失败信息,参考对应的错误提示进行修改即可。

  6. 配置迁移任务。

    a. 对象配置:

    1. 迁移类型勾选库表结构迁移、全量迁移、增量迁移。
    2. 在源库对象框中选择要迁移的wordpressdb库,再单击图片将其移动至已选择对象框,然后单击下一步高级配置。

    b. 高级配置:默认配置项不作修改,单击下一步数据校验。

    c. 数据校验:勾选全量校验和增量校验、结构校验,然后单击下一步保存任务并预检查

  7. 预检查通过率达到100%后,单击下一步购买。选择数据迁移实例的链路规格(本案例以small规格为例),阅读并选中《数据传输(按量付费)服务条款》,单击购买并启动

  8. 迁移任务正式开始。

单击迁移任务ID可以查看具体进度。当您看到如下界面,表示存量数据已迁移完成,增量数据会实时同步。此时您可以进入下一步,验证RDS里的数据。

四、方案验证

4.1 通过查看RDS实例中的数据,验证数据迁移结果

  1. 登录RDS实例

  1. 单击资源栈顶部资源按钮,然后单击Database资源ID进入RDS控制台,单击登录数据库。

  1. 在弹出的DMS页面中,填写RDS高权限数据库账号和密码,然后单击登录

本示例中,RDS高权限数据库账号为dbuser,密码为您自定义的密码。

如果报错“您暂未获取当前数据库实例的登录权限”,请单击点此申请,并由主账号完成审批。

2、全量数据验证

  1. 在SQLConsole窗口,在左侧双击目标数据库名称wordpressdb,可以看到自建数据库所有库、表数据已经完成迁移。

说明:如果找不到wordpressdb库,请右键单击RDS实例ID,选择刷新/同步数据字典。】

3. 增量数据验证

  1. 在SQLConsole窗口,双击wp_comments表名,再单击执行,查看wp_comments表的数据。

  1. 前往资源编排管理控制台,在资源栈列表中单击之前创建的资源栈。

  2. 在资源栈顶部单击输出页签,并在输出关键字列表中找到ECSWordPressUrl参数对应的值,单击进入网站,往下浏览找到如下图,点击进入评论区。

  1. 在网站中新增一条评论或多条评论,如下图

  1. 再次查看RDS实例中wp_comments表的数据,执行查询语句可以看到增加的评论,说明增量数据已迁移成功。

4.2 通过切换数据库连接并访问网站,验证RDS服务可用性

从自建数据库切换到RDS

为避免数据丢失,建议先停止写入数据,然后再将应用程序的数据库连接配置修改为云数据库RDS的连接地址。

  1. 停止写入数据到源数据库。

  2. 修改WordPress配置文件中的数据库连接配置。

  1. 在资源列表中单击WebServer资源ID进入ECS控制台,点击远程连接使用ECS账户登录。本示例中,ECS账号为root,密码为用户自定义密码。

【说明:如果提示用户名或密码不正确,可能是因为密码错误或者操作系统未完全启动,请确认输入的用户名和密码,或者稍后再尝试登录。】

  1. 打开配置文件。

sudo vim /usr/share/nginx/html/wp-config.php

  1. 按i进入插入模式。

  2. 修改数据库连接配置:

  • 修改数据库账号:将wordpressuser改为RDS高权限账号dbuser

  • 修改数据库密码:将password修改为您自定义的密码。

  • 修改数据库连接地址:将localhost修改为RDS内网连接地址(可以直接复制资源栈输出页签中RDSInternalAddress关键字对应的值)。

3. 按Esc键退出插入模式.

4. 输入:wq,并按Enter键退出vim编辑器。

说明:以上仅为本示例教程的切换步骤,关于生产环境的切换和回滚方案,请参见业务切换流程。】

验证切换后的服务可用性
  1. 返回资源编排管理控制台,在资源栈列表中单击刚创建的资源栈。

  2. 单击输出页签中ECSWordPressUrl参数对应的值,进入网站浏览,可观察到网站与切换前保持一致。如下图:

3. 在网站新增一条评论,再次查看RDS实例中wp_comments表的数据,执行查询语句可以看到增加的评论。

点击阅读原文,体验自建数据库迁移到云数据库~

https://developer.aliyun.com/topic/dec/clouddb?utm_content=g_1000400425

对啊,不同数据库的语法和特性都不一样,迁移过程中可能会遇到数据类型转换、存储过程兼容性等问题,需要提前做好准备和测试。最好先在测试环境进行迁移演练,确保迁移过程顺利进行。

安全性也是一个重要方面,云厂商通常会提供更专业的安全防护措施,例如数据加密、访问控制、安全审计等,比自己维护安全更可靠。

迁移前一定要做好数据备份!这是最重要的一点,万一迁移过程中出现问题,可以及时恢复数据,避免造成损失。“将数据库迁移到云端还有什么其他好处?”这个问题,我觉得弹性伸缩很重要。

还要考虑网络带宽的影响,如果数据库比较大,迁移时间会比较长,需要保证网络稳定,避免迁移中断。“在实际迁移过程中,有哪些需要注意的事项或潜在的风险?”数据备份、数据一致性、网络带宽都很重要。

从成本角度来说,云数据库可以按需付费,避免了自建数据库的硬件、软件、人力等固定成本投入,特别适合初创企业或业务波动较大的场景。

除了DTS之外,还可以考虑其他迁移工具或方案,比如使用数据库自带的备份恢复功能,或者一些第三方迁移工具。选择合适的方案需要根据具体情况进行评估。

我觉得很重要的一点是弹性伸缩,云数据库可以根据业务需求快速调整资源配置,不用像自建数据库那样费时费力地进行硬件升级或降级。

不同数据库的迁移工具和步骤肯定会有差异,DTS 支持多种数据库迁移,具体操作可以参考阿里云官方文档。迁移前需要评估数据库兼容性,有些数据库的迁移可能会有一些限制。