场景描述
在帮助用户实施上云规划的时候,绕不开的一个话题,就是数据库怎么迁移到云平台上面?针对于这个问题的回答,可以使用AWS DMS这个服务,来进行把本地的数据库,迁移到aws上面。
什么是DMS
AWS Database Migration Service(AWS DMS) 是一种云服务,可以迁移关系数据库、数据仓库、NoSQL 数据库和其他类型的数据存储。您可以使用将数据迁移AWS DMS到云和本地设置的组合中,AWS Cloud或者在云和本地设置的组合之间迁移。
借AWS DMS助,您可以发现源数据存储、转换源架构和迁移数据。
要发现您的源数据基础架构,您可以使用 DMS Fleet Advisor。该服务从您的本地数据库和分析服务器收集数据,并建立可以迁移到云端的服务器、数据库和架构清单。AWS
要迁移到其他数据库引擎,可以使用 DMS 架构转换。此服务会自动评估您的源架构并将其转换为新的目标引擎。或者,您可以将 AWS Schema Conversion Tool (AWS SCT) 下载到本地 PC 以转换源架构。
转换源架构并将转换后的代码应用到目标数据库后,您可以使用迁AWS DMS移数据。您可以执行一次性迁移或复制正在进行的更改,以保持源和目标同步。因为AWS DMS是其中的一部分AWS Cloud,您可以获得AWS服务所提供的成本效率、上市速度、安全性和灵活性。
在基本层面上,AWS DMS是运行复制软件AWS Cloud的服务器。您可以创建源连接和目标连接,以告知从AWS DMS何处提取数据以及将数据加载到何处。接下来,您计划在此服务器上运行的任务来移动数据。 AWS DMS如果目标上不存在表和关联的主键,则创建这些表和关联的主键。如果你愿意,你可以自己创建目标表。或者你可以使用 AWS Schema Conversion Tool (AWS SCT) 来创建部分或全部目标表、索引、视图、触发器等。
迁移说明
宁夏的EC2云主机,去自建一个数据库。
使用DMS服务迁移到北京的RDS上面。
注意事项:数据库的版本要一致。
宁夏EC2自建数据库
自建数据库
使用到的工具为docker,用docker可以快速的构建一个mysql数据库,然后批量添加数据。
curl http://169.254.169.254/latest/dynamic/instance-identity/document ###使用这个命令可以查看到ec2的元数据信息
###安装docker yum -y install docker ###启动docker systemctl start docker && systemctl enable docker ###下载mysql镜像 docker pull mysql:8 ###启动mysql mkdir -p /data/mysql #命令解释:这里创建一个名字为aws_mysql,宿主机3306映射到容器3306端口,密码是qaz@WSX123. 宿主机的/data/mysql 映射到容器内部的/var/lib/mysql/ 镜像是mysql:8 小伙伴们可以根据自己的实际情况去自定义 docker run --name aws_mysql -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=qaz@WSX123. -v /data/mysql/:/var/lib/mysql mysql:8
生成测试数据
首先我们需要登录到数据库中,然后进行授权
###登录到容器内部 docker exec -it aws_mysql /bin/bash ###添加一个用户 mysql> alter user 'root'@'%' identified with mysql_native_password by 'root'; Query OK, 0 rows affected (0.01 sec) ###对该用户设置密码 mysql> set password for 'root'@'%' = 'qaz@WSX123.'; Query OK, 0 rows affected (0.01 sec) ###授权 mysql> grant all privileges on *.* to 'root'@'%' ; Query OK, 0 rows affected (0.00 sec) ###权限刷新 mysql> flush privileges; Query OK, 0 rows affected (0.01 sec) ###退出命令行界面 mysql> exit Bye ###退出容器终端 bash-4.4# exit exit 以上步骤就是对一个数据库进行授权
连接本地数据库
连接数据库有两种方法,一种是直接用ec2安装mysql客户端去连接,一种是使用客户端工具:Navicat去连接
ec2安装mysql客户端连接
###安装客户端工具 yum -y install mysql ###连接 mysql -uroot -p -P3306 -h127.0.0.1
Navicat工具连接(推荐)
如果不知道Navicat是怎么安装的,可以查看的我另外一篇文章,里面有涉及。这里不做安装的演示
Navicat安装:Navicat15.0工具安装与使用(含破解方法)
创建库和表
ec2创建库
###按照上面的操作方法,先登录到数据库 create database test; ###在test库里面去创建表 use test; ###创建表用于测试 CREATE TABLE users ( id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), age INT, event_time DATETIME );
Navicat操作
脚本生成测试数据
脚本内容
vim mysql.sh
#!/bin/bash
# 定义生成SQL语句的函数
generate_sql() {
local id=$1
local name=$2
local age=$3
# 生成INSERT语句
echo "INSERT INTO users (id, name, age , event_time) VALUES ('$id', '$name', '$age',NOW());"
}
# 生成10万条数据
for ((i = 1; i <= 100000; i++)); do
id=$i
name="User$i"
age=$((RANDOM % 18 + 65)) # 生成随机年龄
generate_sql "$id" "$name" "$age"
done
###执行脚本,输出为一个sql文件
bash mysql.sh >test.sql
导入sql文件
ec2导入方式:
先登录到mysql数据库中,然后执行source test.sql;
Navicat方式导入文件
至此:源数据准备完成
DMS使用
创建一个DMS复制实例
在有了源数据之后,我们接下来需要到AWS控制台上面去创建一个复制实例。该实例的内存、cpu取决于前期的规划。这里只是用作与测试,因此给的实例时2C4G的一个实例
然后点击创建
创建一个端点(源)
最后点击创建端点:
创建一个RDS数据库(Mysql)
需要导航到RDS中,然后去创建对应的mysql数据库
下面的其他选项:保持默认的就好。然后点击创建。
使用Navicat去连接该数据库。之所以要连接,是因为我们在迁移之后,要验证数据
创建端点(目标)
创建迁移任务
其他的保持默认,下面主要就是表映射
选择稍后手动启动
等待创建完成之后,然后我们点击启动任务。然后就开始迁移了。迁移的过程、取决于您的网络带宽、cpu性能、io吞吐量等
可以参考这一篇文章:https://aws.amazon.com/cn/dms/faqs/
开始启动迁移
启动迁移
数据验证
接下来我们去用Navicat工具去查看是否有这个test库和users表
增量同步测试
现在利用脚本往源数据库里面再去插入10w条数据
我们需要修改的就是范围
vim mysql2.sh
#!/bin/bash
# 定义生成SQL语句的函数
generate_sql() {
local id=$1
local name=$2
local age=$3
# 生成INSERT语句
echo "INSERT INTO users (id, name, age , event_time) VALUES ('$id', '$name', '$age',NOW());"
}
# 生成10万条数据
for ((i = 100001; i <= 200000; i++)); do
id=$i
name="User$i"
age=$((RANDOM % 18 + 30)) # 生成随机年龄
generate_sql "$id" "$name" "$age"
done
可以看到已经同步过来了。
自我判定
# | 判定描述 | 自我判定(是/否) |
|---|---|---|
| 1 | 在各搜索引擎中是否能找到知识信息(包括但不限于Google、百度、Bing) | 是 |
| 2 | 是否需要代码集成开发 | 否 |









































