开发者学堂课程【关系型数据库 ACP 认证课程:快速学习 RDS 云关系型数据库解析与实践】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/927/detail/14618
RDS 云关系型数据库解析与实践
三、RDS 的数据迁移
1、数据迁移的概述
迁入就是将原实例、本地的迁移到 RDS 上,实例之间进行数据的复制,RDS 提供实例间数据库迁移的,DTS 提供数据传输服务。在云上,在做数据库迁移时,无论是迁入迁出,都是 DTS 来做。数据迁入有几种方法。
(1)通过 mysqldump 导出逻辑备份,导出以后 RDS 里面用纯传统的方式,DMS,执行 mysqldump 文件,执行. sql 文件,数据就过去了。也可以用 DTS 来做。本地机房做一个利旧,将本地机房做备份用,将 RDS 的物理备份或逻辑备份下载下来,下载下来以后先传到 OSS 里面,通过 OSS 进行下载,下载完成以后,在本地机房执行就可以。数据库迁移以前做比较麻烦,后来有了 DTS 数据传输服务以后,现在数据迁移变得特别简单。
2、数据迁移的两种方式
阿里云迁移工具的 DTS,支持很多的数据库。阿里云的迁移工具无论是 MySQL、SqlServer、Oracle 常见的数据库,里面有很多数据库 DTS 都是支持的,具体那些版本,比如 SqlServer 08、SqlServer 22、SqlServer 12、SqlServer 14、SqlServer 19等等。还有官营数据库和非官营数据库都是支持的,不仅仅是表格列的这些,这些只是一官营数据库来说一些比较常用的,DTS 是都支持的,版本可以查帮助文档里面。非阿里云的迁移,像 MySQ L就用 mysqldump,SqlServer 就用SSMS,Oracle 就用 RMAN。其实用的特别多的就是DTS,哪怕迁移失败,也会告诉你那一块迁移失败。
3、数据迁移:mysqldump 逻辑导入
Mysqldump 直接把一行命令把库当下来以后,导出一个 sql,导出 sql 以后在进行恢复,但是 mysqldump 会有一个问题,问题就是如果想使用 mysqldump,一般数据量不大的情况或者允许停机时间比较长的情况下,因为做 mysqldump 的时候数据库不能在启用的过程中,如果业务一直不停,还是在写库的时候、在做mysqldump 的时候,里面的文件就不全了,所以必须要停机、听业务,把业务停掉之后才能做 mysqldump。数据量比较大的情况,用传统的工具做打包、上传、在恢复,停业务的时间就非常非常的长,所以不太适合。最优的方式还是不停业务在线迁移的情况下,可以发通知,比如说,我们最近在做迁移,可能会产生一些不稳定的现象,因为他们是一个内部的系统,发通知是为了稳妥。
4、数据迁入:DTS 不停机迁入
在迁移的过程中用 DTS 在线迁移,是有进程在读取源库里面的内容的,对业务是有一点点影响的,但是业务不会停,所以在不停业务的情况下,先迁移结构,把结构迁移完之后在迁移全量,全量迁移其实是在某一个时间节点,比如开始创建一个时间节点,打一个标记,从这个节点往前推,这些都是全量。迁移玩全量之后,对 DTS 做一个监控就好了,哪怕报错了也可以继续修改,然后点就绪任务就好了,这样就可以把迁移整体的周期拉长,业务不会停,迁移完成之后就自动迁移增量,增量迁移会很快,因为源数据很大,但是新增确并不多所以就很快,迁移完成之后源库和新的目的库就在保持一个数据的同步,保持数据同步以后,到了时间点的时候,只要把云上的这套业务的数据库地址,都已经提起那配好的,只要把域名切过去就行,原环境停掉之后,直接把域名剪切到新的环境里,迁移的过程中可以对新的业务做一些测试等等。
5、数据迁出:下载备份+本地数据导入
本地数据导入的两种方式:
(1)利用物理备份文件恢复到自建数据库,RDS 使用开源软件 Xtrabackup 对MySQL 数据库进行实例级别的全量物理备份,用户需要下载改软件,并使用改软件进行恢复。
(2)利用逻辑备份文件迁移恢复到自建数据库。
6、数据迁移:DTS 不停机迁出
DTS 可以进行不停机的迁出,也是结构迁移、全量迁移、增量迁移对于 RDS 源端需要的是只读权限。迁入和迁出有区别,做迁入是本地库到云上面,然后云到本地是迁出。迁入:本地迁移到云上面需要的权限是 select 权限,增量迁移需要的权限要高一些,比如 select、super、replication slave、replication client 等。一般目的端需要的是读写权限,因为不仅要读还需要写。迁出:迁出源端是 RDS,是云上,目的端是本地库,所以 RDS 只需要只读权限就可以了,目的端需要的是读写权限。
四、演示操作
1、迁移数据库
启动服务器,里面有一个 alisql 的表,alisql 里面是有一些表的,然后把这些表迁移到云数据库 RDS 上面。
迁移比较简单,用 DTS。
(1)先创建一个迁移任务
①实例类型:可以选择在 ECS 上自建
②数据库类型:选择 MySQL
③端口:3306(检查端口是否打开)
④输入数据库账号和密码
⑤测试连接
⑥实例类型:选择RDS实例
⑦输入数据库账号和密码
(2)创建一个账号
①数据库账号:aliuser
②账号类型:选择普通账号
③输入密码和确认密码
④点击确定
⑤设置读写权限
(3)创建数据库
①数据库名称:alidb
②授权账号:选择 aliuser 普通账号
③点击确定
就已经测试好,DT S已经和云服务器 ECS 里面自建的 MySQL 连接测试登录成功。建议都做一个测试。
(4)白名单
新创建的 MySQL 数据库需要设置白名单。
①添加白名单
②分辑名称:test
③辑内白名单:0.0.0.0/0
④点击确定
(5)DTS 会自动添加 IP 地址段到 RDS 上
①点击 alisql 迁移
②点击大括号 >
③其他的选择默认就可以了,点击预检查预启动
(6)预检查点击下一步
①选择数据传输
②点击立即购买并启动
DTS 迁移会把迁移失败的放在最上面,状态显示为迁移中,先迁移结构在迁移全量。DTS 新版本会自动刷新,在结构迁移中可以看到迁移的状态,可以看到表和全量的数据有没有迁。
迁移完成后会显示以迁移多少行,然后我们可以和源库进行比对。完成之后会将整个库都迁移过来。
(7)登录实例
①输入数据库类型:选择 MySQL
②输入数据库账号和数据库密码
③点击登录
然后点击查询,点击左侧就可以知道数据都已经迁移过来了。
1、数据库备份演示
以云服务器 ECS 自建 MySQL 为例当做源端,目的端提前准备好一个 RDS 实例。先做迁移,先把表迁移过来,在里面做一些数据,然后直接用迁移的表做数据,然后备份、删除。
(1)手动备份
①点击左侧备份与恢复
②点击备份实例
②备份方式:选择快照备份
(2)备份设置
①点击备份设置
②点击编辑
③然后选择要备份的天数、时间等。
(3)日志备份
①点击编辑
②选择保留时长、空间、个数、等。
(4)点击右上角可以查看任务进度
①进度表
3、备份恢复
(1)备份完成以后点击数据恢复
(2)创建一个新的实例
①计费方式:选择按量付费
②还原方式:点击按时间点
③选择时间(精确到秒级)
4、删除数据
(1)选择要删除的表
(2)点击选择管理表
(3)点击删除表