手把手带你从自建 MySQL 迁移到云数据库,一步就能脱胎换骨

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 阿里云瑶池数据库来开课啦!自建数据库迁移至云数据库 RDS原来只要一步操作就能搞定!点击阅读原文完成实验就可获得一本日历哦~

简述

在业务初期,您可能会为了控制成本选择在应用服务器上自建数据库。但随着业务增长,这种应用和数据库部署在一个服务器上的架构,会有性能、安全、扩展性方面的隐患。


在业务开始增长阶段,为了消除性能、安全、扩展性方面的隐患,您可能会选择将数据库和应用分开部署。但数据库迁移工作并不简单,并且实现高可用和读写分离也很复杂,需要大量的时间和人力成本。


如果您的业务在未来会持续增长,建议您将数据库迁移到云数据库上。云数据库 RDS 可以让您使用一写多读、故障自动切换、自动备份等关键特性的同时,无需关注复杂的数据库运维工作。云数据库 RDS采用高可用架构,支持跨可用区容灾,可以给业务带来数据安全、可用性、性能和成本方面收益。


在没有过往经验的情况下,您可能会担心自己不够熟悉数据库迁移,而无法完成这项工作。阿里云云起实验室为您提供了一个快速体验环境,模拟了一遍数据库迁移所需的工作,帮助你快速熟悉这一流程。6月19日,阿里云数据库专家也将开设直播,带你陪跑数据库迁云全流程,对过程中你可能遇到的操作、选型、成本等问题进行一一解答。


实验地址:https://developer.aliyun.com/adc/scenario/311000460018


创建实验资源


说明


本实验将快速为您创建一个云服务器ECS实例和一个云数据库RDS实例,ECS实例上已经部署了网站以及自建数据库。本实验以WordPress网站为例。


  1. 签署同意服务协议并授权云起实验室创建、读取及释放实操相关资源权限后,进入创建资源。创建资源需要5分钟左右的时间,请您耐心等待。


  1. 云产品资源列表,您可以查看本场景涉及的云产品资源信息。

image.png


安全设置


资源创建完成后,为了保护您阿里云主账号上资源的安全,请您重置云服务器ECS的登录密码、设置安全组端口和重置云数据库RDS的数据库密码。


  1. 重置云服务器ECS的登录密码。


  1. 云产品资源列表的ECS云服务器区域,单击管理

image.png

  1. 实例详情页签的基本信息区域,单击重置密码

image.png

  1. 重置实例密码对话框中,设置新密码确认密码重置密码的方式选择在线重置密码配置SSH密码登录策略选择开启,单击确认修改

image.png

返回如下结果,表示ECS实例root用户的登录密码重置成功。

image.png

4. 设置安全组端口。

  1. 云产品资源列表的安全区域,单击管理

image.png

5. 在访问规则区域的入方向中,添加SSH(22)HTTP(80)HTTPS(443)MySQL(3306)端口。

重要

添加端口时,授权对象建议选择您的本机IP地址。

image.png

6. 重置云数据库RDS的高权限账号的密码。

  1. 云产品资源列表的云数据库RDS实例区域,单击管理

image.png

7. 在左侧导航栏中,单击账号管理

image.png

8. 在用户账号页签,单击高权限账号右侧操作列下的重置密码

image.png

9. 在重置密码对话框中,设置新密码确认新密码,单击确定

image.png


配置MySQL


资源创建完成后,ECS实例上会安装LNMP环境,但是还需要您自己创建WordPress网站和DTS数据传输时所用的数据库账号和密码。

  1. 云产品资源列表ECS云服务器区域,单击远程连接

image.png

  1. 登录实例对话框中,输入用户自定义密码,单击确定

image.png

  1. 执行如下命令,创建WordPress网站所用数据库账号和密码。


警告


  • 您需要将命令中的WordPressuser密码修改为用户自定义密码。建议使用复杂密码以增加安全性,包含大小写字母、数字和特殊字符的组合。

  • 在本实验中,授权数据库账号权限较大,您可根据实际情况进行修改。
mysql -e "CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'WordPressuser密码';"
mysql -e "GRANT ALL PRIVILEGES ON wordpressdb.* TO 'wordpressuser'@'localhost';"
mysql -e "FLUSH PRIVILEGES;"
  1. 执行如下命令,创建DTS数据传输所用数据库账号和密码。

警告

  • 您需要将命令中的dtssync1密码修改为用户自定义密码。

  • 在本实验中,授权数据库账号权限较大,您可根据实际情况进行修改。
mysql -e "CREATE USER dtssync1 IDENTIFIED BY 'dtssync1密码';"
mysql -e "GRANT ALL ON *.* TO 'dtssync1'@'%';"
mysql -e "FLUSH PRIVILEGES;"
mysql -e "SET GLOBAL binlog_format = 'ROW';"


WordPress网站安装


资源创建完成后,ECS实例上已下载WordPress安装包,您还需要手动安装并配置WordPress,然后进入WordPress安装页面,完成WordPress安装。


  1. 执行如下命令,进入到WordPress安装包的目录。
cd /usr/share/nginx/html
  1. 执行如下命令,解压WordPress安装包。
tar -xzvf 6.5.3.tar.gz
  1. 执行如下命令,将WordPress文件夹重命名并授权。
mv WordPress-6.5.3  wordpress
cp -R wordpress/* .
  1. 执行如下命令,复制配置文件。
cp wp-config-sample.php wp-config.php
  1. 执行如下命令,修改WordPress配置文件中的数据库信息。

说明

您需要将命令中的WordPressuser密码修改为用户自定义密码。

sed -i "s/database_name_here/wordpressdb/" wp-config.php
sed -i "s/username_here/wordpressuser/" wp-config.php
sed -i "s/password_here/WordPressuser密码/" wp-config.php
sed -i "s/localhost/localhost/" wp-config.php
  1. 执行如下命令,重启Nginx和PHP服务。
systemctl restart nginx
systemctl restart php-fpm
  1. 在浏览器地址栏中,输入http://ECS实例公网IP,访问WordPress网站。

说明

您可在云产品资源列表查看ECS实例公网IP。

image.png

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

说明

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

image.png


迁移数据库


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

  1. 云产品资源列表的云数据库RDS实例区域,单击管理

image.png

  1. 在左侧导航栏中,单击数据迁移及同步

image.png

  1. 选择数据迁移页签,单击创建迁移任务

image.png

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

说明

如果您是首次使用数据传输服务DTS,会弹出未授权DTS的错误弹窗,您需要单击前往RAM授权,根据页面提示完成授权,即可正常使用DTS。

  1. 源库信息。
  1. 数据库类型:MySQL。
  2. 接入方式:ECS自建数据库。
  3. 实例地区:本示例中选择华东1(杭州)。
  4. 是否跨阿里云账号:不跨账号。
  5. ECS实例ID:选择网站所在的ECS实例。
  6. 端口:3306。
  7. 数据库账号和密码:输入前面创建的DTS数据传输所用的数据库账号和密码。本示例为dtssync1和用户自定义密码。
  8. 连接方式:非加密连接。

image.png

  1. 目标库信息。
  1. 数据库账号和密码:输入RDS实例的高权限账号和密码。本示例为dbuser和用户自定义密码。
  2. 连接方式:非加密连接。

image.png

  1. 单击测试连接以进行下一步,会自动为ECS添加DTS安全组、为RDS添加DTS服务器IP至白名单,以允许DTS访问ECS和RDS。

说明

如果有失败信息,参考对应的错误提示进行修改即可。

image.png

  1. 配置任务对象。
  1. 勾选库表结构迁移全量迁移增量迁移

image.png

  1. 源库对象框中选择要迁移的wordpressdb库,再单击>标将其移动至已选择对象框,然后单击下一步保存任务并预检查

image.png

  1. 高级配置区域,勾选全量校验增量校验结构校验,然后单击下一步保存任务并预检查

image.png

  1. 预检查页面,预检查通过率达到100%后,单击下一步购买


image.png

  1. 在购买页面,选择数据迁移实例的链路规格(本案例以small规格为例),阅读并选中《数据传输(按量付费)服务条款》,单击购买并启动

image.png

  1. 迁移任务正式开始。

数据迁移页面,单击迁移任务ID,可以查看具体进度。

image.png

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

image.png

验证RDS数据

您可以登录到云数据库RDS实例,查询RDS中是否具备了全量数据,并在网站新增加一条评论,验证该新评论是否从自建数据库同步到RDS。

  1. 登录RDS实例。
  1. 云产品资源列表的云数据库RDS实例区域,单击登录

image.png

  1. 登录实例对话框中,填写RDS高权限数据库账号和密码,然后单击登录

说明

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

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

image.png

  1. 验证全量数据。

在SQLConsole窗口,在左侧选择数据库实例>已登录实例>test for database migration实例,双击目标数据库名称wordpressdb,可以看到自建数据库所有库、表数据已经完成迁移。

说明

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

image.png

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

image.png

  1. 在浏览器地址栏中,输入http://ECS实例公网IP/wp-login.php,访问WordPress网站。

说明

您可在云产品资源列表查看ECS实例公网IP。

  1. 在左侧导航栏中,单击Comments,在其中一条评论下单击Reply,输入内容增加一条评论,然后单击Reply

image.png

返回如下页面,表示已在网站中添加一条评论。

image.png

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

image.png

从自建数据库切换到RDS

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

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

  2. 修改WordPress配置文件中的数据库连接配置。
  1. 返回ECS服务器终端页签,或在云产品资源列表的ECS云服务器区域,单击远程连接,重新连接至ECS实例。

  2. 执行如下命令,执行打开配置文件。
sudo vim /usr/share/nginx/html/wp-config.php
  1. 按i进入插入模式。

  2. 修改数据库连接配置。
  1. 将数据库账号和密码修改为RDS实例的数据库账号和密码,本示例中,将wordpressuser改为dbuser,将password改为用户自定义密码。

image.png

  1. 将localhost修改为RDS实例内网地址。

说明

您可在云产品资源列表中查看RDS实例数据库内网地址。

image.png

  1. Esc键退出插入模式。

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

说明

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

清理资源

  • 在完成实验后,如果无需继续使用资源,请按照以下步骤操作。
  • 释放DTS任务。
  1. 登录数据传输服务DTS控制台[4]

  2. 数据迁移页面,选择DTS任务所在地域,找到目标任务。

image.png

  1. 在目标任务右侧的操作列中,单击 image.png ,然后单击释放任务

image.png

  • 释放一键部署创建的所有资源。

选择不保留资源,单击结束实操。在结束实操对话框中,单击确定

image.png



最后,感谢您的体验,如需技术支持,请在钉钉搜索群号「 83050005374 」,加入群聊。

参考链接:

[1]https://account.console.aliyun.com/v2/[2]https://usercenter2.aliyun.com/home
[3]https://help.aliyun.com/document_detail/146841.html

[4]https://dtsnew.console.aliyun.com/migrate/cn-hangzhou




来源  |  阿里云开发者公众号
作者  |  阿里云开发者










相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
11天前
|
SQL Java 数据库连接
数据库迁移不再难:Flyway 与 Liquibase 大比拼,哪个才是你的真命天子?
【9月更文挑战第3天】数据库迁移在软件开发中至关重要,尤其在使用 ORM 框架如 Hibernate 时。为确保部署时能顺利应用最新的数据库变更,开发者常使用自动化工具。Flyway 和 Liquibase 是当前流行的两种选择,均能有效管理数据库版本控制。Flyway 采用 SQL 脚本表示变更,简单易用;Liquibase 支持多种脚本格式,功能更强大,适合复杂项目。本文将对比这两种工具的特点,并通过示例展示各自的优缺点,帮助开发者根据项目需求做出合适的选择。
15 1
|
1天前
|
存储 缓存 关系型数据库
MySQL 视图:数据库中的灵活利器
视图是数据库中的虚拟表,由一个或多个表的数据经筛选、聚合等操作生成。它不实际存储数据,而是动态从基础表中获取。视图可简化数据访问、增强安全性、提供数据独立性、实现可重用性并提高性能,是管理数据库数据的有效工具。
|
1天前
|
SQL 关系型数据库 MySQL
MySQL技术安装配置、数据库与表的设计、数据操作解析
MySQL,作为最流行的关系型数据库管理系统之一,在WEB应用领域中占据着举足轻重的地位。本文将从MySQL的基本概念、安装配置、数据库与表的设计、数据操作解析,并通过具体的代码示例展示如何在实际项目中应用MySQL。
6 0
|
14天前
|
前端开发 C# 设计模式
“深度剖析WPF开发中的设计模式应用:以MVVM为核心,手把手教你重构代码结构,实现软件工程的最佳实践与高效协作”
【8月更文挑战第31天】设计模式是在软件工程中解决常见问题的成熟方案。在WPF开发中,合理应用如MVC、MVVM及工厂模式等能显著提升代码质量和可维护性。本文通过具体案例,详细解析了这些模式的实际应用,特别是MVVM模式如何通过分离UI逻辑与业务逻辑,实现视图与模型的松耦合,从而优化代码结构并提高开发效率。通过示例代码展示了从模型定义、视图模型管理到视图展示的全过程,帮助读者更好地理解并应用这些模式。
30 0
|
14天前
|
SQL 数据采集 关系型数据库
|
14天前
|
数据库 关系型数据库 MySQL
惊!Hibernate与MySQL的绝密优化技巧大揭秘,让你的数据库飞起来!
【8月更文挑战第31天】在企业应用开发中,结合使用持久层框架Hibernate与数据库管理系统MySQL可显著提升数据库交互效率。本文探讨了多项优化策略,包括配置二级缓存、采用单向关联减少JOIN操作、优化HQL查询语句以及合理使用MySQL索引。通过具体示例,文章详细讲解了如何实施这些优化措施,以期为企业应用提供更高效稳定的数据支持。
25 0
|
14天前
|
API Java 开发框架
【从零到精通】如何用Play Framework快速构建RESTful API?看完这篇你就懂了!
【8月更文挑战第31天】《Play Framework快速入门:从零开始构建RESTful API》介绍了如何使用高性能Web开发框架Play Framework构建简单的RESTful API。从环境搭建到项目创建,再到实现用户列表的增删查功能,本文档详细指导每个步骤,并解释核心概念。适合初学者快速上手。首先确保已安装JDK和sbt,然后通过sbt创建Play项目,接着定义控制器、模型及路由,最后运行应用进行测试。通过本教程,你将掌握构建RESTful API的基础知识,为进一步学习Play Framework打下坚实基础。
24 0
|
14天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
81 0
|
23天前
|
SQL 关系型数据库 MySQL
【揭秘】MySQL binlog日志与GTID:如何让数据库备份恢复变得轻松简单?
【8月更文挑战第22天】MySQL的binlog日志记录数据变更,用于恢复、复制和点恢复;GTID为每笔事务分配唯一ID,简化复制和恢复流程。开启binlog和GTID后,可通过`mysqldump`进行逻辑备份,包含binlog位置信息,或用`xtrabackup`做物理备份。恢复时,使用`mysql`命令执行备份文件,或通过`innobackupex`恢复物理备份。GTID模式下的主从复制配置更简便。
107 2
|
22天前
|
关系型数据库 MySQL 数据库
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决
RDS MySQL灾备服务协同解决方案构建问题之数据库备份数据的云上云下迁移如何解决