首页 > 其他分享 >AWS上Migration实验(二)--- 使用DMS迁移数据

AWS上Migration实验(二)--- 使用DMS迁移数据

时间:2024-01-04 14:36:45浏览次数:58  
标签:单击 创建 数据库 AWS --- DMS VPC mysql

DMS是[AWS Database Migration Service]的简称,主要是帮助客户将本地数据库安全高效的迁移到AWS云上。本实验使用AWS DMS迁移MySQL数据库到AWS的RDS上。

本次实验架构图

本次实验架构图如下:

Migration-MGN.drawio.png

1. 实验准备

1.1 准备Corporate Data Center

本实验有一台Web服务器,访问地址为:http://ec2-54-149-186-172.us-west-2.compute.amazonaws.com;一台数据库服务器,访问地址为:ec2-52-42-121-115.us-west-2.compute.amazonaws.com:3306

访问Web入下:

2023-11-01-16-32-17-image.png

本次实验为了方便,在AWS上的另外VPC部署2台EC2,分别部署Web和DB。

1.2 准备AWS VPC网络环境

准备一个VPC,CIDR为10.0.0.0/16。该VPC分布在2个AZ中,每个AZ有3个子网,包含1个含有NAT Gateway的共有子网,2个私有子网,1个是Web子网,另一个是DB子网。

该VPC可以使用这个 AWS上DevOps实验(二)--- 使用Terraform创建VPC网络文章中的代码来完成。

本实验假设DMS可以访问到本地数据库实例。实际上可能会用VPN或者AWS Direct Connect访问本地服务器

1.3 配置源数据库

  1. 在源数据库实例上,向wordpress-user数据库用户授予权限(我们将在 CDC 功能中使用该用户)
mysql> GRANT REPLICATION CLIENT ON *.* to 'wordpress-user';
Query OK, 0 rows affected (0.01 sec)

mysql> GRANT REPLICATION SLAVE ON *.* to 'wordpress-user';
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT SUPER ON *.* to 'wordpress-user';
Query OK, 0 rows affected (0.01 sec)
  1. 在 MySQL 中,二进制日志 包含描述数据库更改的“事件”,例如表创建操作或表数据更改。这对于 DMS 的连续复制任务至关重要。
mkdir /var/lib/mysql/binlogs
chown -R mysql\:mysql /var/lib/mysql/binlogs
  1. 修改MySQL配置以启用二进制日志
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
chown -R mysql\:mysql /etc/mysql/my.cnf
cat <<EOF >> /etc/mysql/my.cnf
server_id=1
log-bin=/var/lib/mysql/binlogs/log
binlog_format=ROW
expire_logs_days=1
binlog_checksum=NONE
binlog_row_image=FULL
log_slave_updates=TRUE
performance_schema=ON
EOF
  1. 要实施更改,需要重新启动 MySQL 服务
systemctl restart mysql
  1. 查看MYSQL的配置是否生效
select variable_value as "BINARY LOGGING STATUS (log-bin) :: "
from performance_schema.global_variables where variable_name='log_bin';

select variable_value as "BINARY LOG FORMAT (binlog_format) :: "
from performance_schema.global_variables where variable_name='binlog_format';

2023-11-02-18-31-08-image.png

2. 部署目标DRS

2.1 创建安全组

  1. 在 AWS 控制台上,访问服务 > 计算 > EC2

2023-11-02-10-49-04-image.png

  1. 在左侧菜单中选择 “安全组”,然后单击顶部的 “创建安全组”按钮

2023-11-02-10-55-48-image.png

  1. 使用以下参数填写安全组创建表单,然后单击底部的创建安全组:
Parameter Value
Security group name DB-SG
Description Security Group for RDS Target Database
VPC TargetVPC
Inbound rules (Keep default: Empty)
Outbound rules (Keep default: All Traffic, 0.0.0.0/0)

2023-11-02-11-00-02-image.png

2.2 设置网络子网组

  1. 在 AWS 控制台中,访问服务 > 数据库 > RDS

2023-11-02-11-04-59-image.png

  1. 然后从左侧菜单中选择子网组,然后单击右上角的创建数据库子网组按钮:

2023-11-02-11-05-15-image.png

  1. 使用以下参数填写数据库子网组创建表单,然后单击底部的创建:
Parameter Value
Name database-subnet-group
Description Subnets where RDS will be deployed
VPC TargetVPC
Availability Zones Select us-west-2a and us-west-2b
Add subnets Add 10.0.101.0/24, 10.0.201.0/24

2023-11-02-11-05-22-image.png

2.3 创建目标数据库

  1. 单击左侧菜单中的数据库选项,然后单击顶部的创建数据库按钮

2023-11-02-11-06-43-image.png

  1. 引擎选项中,选择MySQL,并为Engine Version选择 5.7系列中的最新版本:

2023-11-02-11-19-49-image.png

  1. 模板部分中,选择免费套餐

2023-11-02-11-21-16-image.png

  1. “设置” 部分中,配置以下参数:
Parameter Value
DB instance identifier database-1
Master username admin
Master password VeryHardPassword

2023-11-02-11-24-29-image.png

  1. 实例配置部分中,从Burstable DB 实例类中选择db.t3.micro

2023-11-02-11-25-58-image.png

  1. “存储” 部分中,配置以下参数:
Parameter Value
Storage type General Purpose SSD (gp3)
Allocated storage 20
Storage autoscaling > Enable storage autoscaling Unchecked

2023-11-02-11-29-35-image.png

  1. “连接” 部分中,配置以下参数
Parameter Value
Virtual private cloud (VPC) Select TargetVPC
DB subnet group Select database-subnet-group
VPC security group (firewall) Select Choose Existing
Existing VPC security groups Choose DB-SG only

2023-11-02-11-33-40-image.png

  1. 对于数据库身份验证部分,选择密码身份验证

2023-11-02-11-34-10-image.png

  1. 对于 “监控” 部分,请确保未选中 “启用增强监控”

2023-11-02-11-34-46-image.png

  1. 对于 “其他配置” 部分,请确保 未选中“启用自动备份”“启用自动次要版本升级” ,以避免不必要的成本和中断:

2023-11-02-11-39-02-image.png

  1. 查看“估计每月成本” 部分的成本,然后单击底部的 “创建数据库” 按钮。

2023-11-02-11-40-26-image.png

2023-11-02-11-41-11-image.png

  1. RDS 数据库实例创建将需要几分钟的时间,您可以从左侧菜单中关注数据库选项的状态。请等待状态变为可用

2023-11-02-13-05-46-image.png

3. 部署DMS

3.1 创建安全组

  1. 在 AWS 控制台上,访问 服务 > 计算 > EC2

2023-11-02-10-49-04-image.png

  1. 在左侧菜单中选择 “安全组”,然后单击顶部的 “创建安全组” 按钮:

2023-11-02-15-50-42-image.png

  1. 使用以下参数填写安全组创建表单,然后单击底部的 创建安全组
Parameter Value
Security group name RI-SG
Description Security Group for DMS Replication Instance
VPC TargetVPC
Inbound rules (Keep default: Empty)
Outbound rules (Keep default: All Traffic, 0.0.0.0/0)

2023-11-02-15-53-59-image.png

3.2 修改RDS安全组

  1. 选中步骤2.1中创建的安全组,点击操作-> 编辑入站规则

![](file://C:\Users\guomi\AppData\Roaming\marktext\images\2023-11-02-16-00-26-image.png?msec=1704346695600)

  1. 点击添加规则

2023-11-02-16-00-26-image.png

  1. 类型中选择MYSQL/Aurora,在源中选择步骤3.1中的安全组

2023-11-02-16-04-48-image.png

3.3 创建复制实例网络组

  1. 在 AWS 控制台中,访问服务 > 迁移和传输 > 数据库迁移服务

2023-11-02-16-16-00-image.png

  1. 从左侧菜单中选择 子网组,然后单击创建子网组按钮

2023-11-02-16-19-37-image.png

使用以下参数填写 “创建复制子网组” 表单,然后单击底部的 **“创建子网组”**:

Parameter Value
Name dms-subnet-group
Description Default VPC Subnet Group for DMS
VPC TargetVPC
Add subnets TargetVPC-public-a, TargetVPC-public-b

2023-11-02-16-23-13-image.png

3.4 创建复制实例

  1. AWS 控制台中访问服务> 迁移与传输 > Database Migration Service

2023-11-02-16-24-59-image.png

  1. 从左侧菜单中选择 “复制实例” ,然后单击右上角的 “创建复制实例” 按钮:

2023-11-02-16-26-37-image.png

  1. 创建复制实例创建表单的设置部分中,填写以下参数:
Parameter Value
Name replication-instance
Descriptive Amazon Resource Name (ARN) (Keep default: Empty)
Description DMS replication instance

2023-11-02-16-28-54-image.png

  1. 对于实例配置存储部分,除了需要 开发或测试工作负载(单可用区)高可用性(以避免不必要的成本)之外,将大部分保留为默认值

2023-11-02-16-29-58-image.png

  1. 在连接和安全的高级设置中,确保选择复制子网组、可用区 (us-west-2a) 和您之前创建的复制实例安全组。

2023-11-02-16-41-30-image.png

  1. 然后点击底部的创建按钮

2023-11-02-16-41-52-image.png

  1. DMS 复制实例可能需要长达 10-15 分钟才能达到可用状态

2023-11-02-16-42-22-image.png

  1. 复制实例启动后,记下分配给我们的 DMS 复制实例的公共 IP 地址

2023-11-02-18-32-09-image.png

2023-11-02-18-33-32-image.png

4. 创建复制任务

4.1 创建源端点

  1. 在 AWS 控制台中访问服务> 迁移与传输 > Database Migration Service

2023-11-02-18-37-56-image.png 2023-11-02-18-35-56-image.png

  1. 从左侧菜单中选择 “端点” ,然后单击右上角的 “创建端点” 按钮:

2023-11-02-18-37-57-image.png

  1. 使用以下参数填写创建端点创建表单:
Parameter Value
Endpoint type Source endpoint
Endpoint identifier source-endpoint
Descriptive Amazon Resource Name (ARN) (Keep default: Empty)
Source engine MySQL
Access to endpoint database Provide access information manually
Server name Use the 'DBServerDNSName' Output section of the workshop dashboard  (or in the CloudFormation stack )
Port 3306
SSL mode (Keep default: none)
User name wordpress-user
Password AWSRocksSince2006

2023-11-02-18-44-13-image.png

  1. 在单击 “创建端点” 之前,请务必展开 “测试端点连接(可选)” 部分并执行测试连接。TargetVPC应使用之前创建的和来预先填充这些值replication-instance。如果测试成功,则单击创建端点

2023-11-02-18-57-33-image.png

4.2 创建源端点

  1. AWS DMS服务页面,从左侧菜单中选择 “端点” ,然后单击右上角的 “创建端点” 按钮:

2023-11-03-10-40-11-image.png

  1. 使用以下参数填写创建端点创建表单:
Parameter Value
Endpoint type Target endpoint
Select RDS DB instance checked
RDS Instance Select your RDS instance from the drop-down (if it's not visible enter values manually)
Endpoint Identifier target-endpoint
Descriptive Amazon Resource Name (ARN) (Keep default: Empty)
Target Engine MySQL (keep pre-populated value)
Access to endpoint database Provide access information manually
Server Name DNS name of your RDS database (keep pre-populated value)
Port 3306 (keep pre-populated value)
SSL mode (Keep default: none)
User name admin (keep pre-populated value)
Password Enter password you used when you creating the RDS database (Default: VeryHardPassword)

2023-11-03-10-40-11-image.png

  1. 在单击 “创建端点” 之前,请务必展开 “测试端点连接(可选)” 部分并执行测试连接。TargetVPC应使用之前创建的和来预先填充这些值replication-instance。如果测试成功,则单击创建端点

2023-11-03-10-48-05-image.png

4.3 创建并运行复制任务

  1. AWS DMS服务页面,左侧菜单中选择数据库迁移任务,然后单击右上角的创建任务按钮:

2023-11-03-10-54-00-image.png

  1. 使用以下参数填写创建数据库迁移任务表单:
Parameter Value
Task identifier replication-cdc
Descriptive Amazon Resource Name (ARN) (Keep default: Empty)
Replication instance replication-instance
Source endpoint source-endpoint
Target endpoint target-endpoint
Migration type Migrate existing data and replicate ongoing changes

2023-11-03-10-57-22-image.png

  1. “任务设置” 面板中,选择 “向导” 并按照下图所示进行设置:

2023-11-03-11-01-36-image.png

  1. 表映射面板中选择向导模式,按添加新选择规则按钮并wordpress-db在架构下拉列表中选择:

2023-11-03-11-05-20-image.png

  1. 在**“迁移任务启动配置”部分中,选择“创建时自动”。然后滚动到屏幕底部并单击创建任务**按钮以创建任务并开始数据复制:

2023-11-03-11-06-04-image.png

  1. 监视任务,直到状态更改为Load Complete、复制正在进行且进度为**100%**:

2023-11-03-11-07-51-image.png

2023-11-03-11-08-35-image.png

  1. 该任务将一直运行直到我们停止它,因为它是连续复制。您可以查看其详细信息以查看有关表和复制的行数的信息:

2023-11-03-11-11-46-image.png

本实验完成。

标签:单击,创建,数据库,AWS,---,DMS,VPC,mysql
From: https://blog.51cto.com/garycloud/9100839

相关文章

  • 关于 PWA url 参数 ngsw-bypass=true
    "ngsw-bypass-true"这个参数是与AngularServiceWorker(ngsw)相关的一个选项,用于控制在ServiceWorker中是否绕过缓存,直接请求网络资源。在Angular应用中,ServiceWorker主要负责缓存应用的静态资源,以提高应用的性能和用户体验。首先,让我们了解一下AngularServiceWork......
  • NEXT-HOP-LOCAL的作用
    1、实验拓扑2、实验目的1)R1没有配置next-hop-local,观察R2中的bgp路由表中ebgp引入路由的下一跳2)1)R1配置next-hop-local,观察R2中的bgp路由表中ebgp引入路由的下一跳3、实验配置R1:[V200R003C00]#sysnameR1#snmp-agentlocal-engineid800007DB03000000000000snmp-agent #......
  • 基于TIC6000的DSP教学实验箱操作教程:5-18 RGB24图像灰度转换(LCD显示)
    一、实验目的学习RGB24图像灰度转换的原理,掌握图像的读取方法,并实现在LCD上显示灰度转换前后的图像。二、实验原理RGB24图像灰度转换RGB颜色空间作为一种常用的彩色图像表示模型,分别用红(R)、绿(G)、蓝(B)三原色的组合来表示每个像素的颜色。一般情况下,RGB彩色图像灰度化有三种转化方案:(1)......
  • 无涯教程-Seaborn - 观察值分布
    在上一章中处理的类别散点图中,该方法在它可以提供的有关每个类别中值的分布的信息方面受到限制,现在,让无涯教程看看什么可以进行类别比较。BoxPlotsBoxPlots是通过四分位数可视化数据分布的便捷方法,BoxPlots通常具有从框延伸的垂直线,称为晶须。这些晶须表示上下四分位数之外......
  • 机器学习-Kmeans算法的sklearn实现
    fromsklearn.clusterimportKMeansfromsklearn.datasetsimportmake_blobsimportmatplotlib.pyplotasplt#可视化数据#生成数据n_samples=200n_clusters=3random_state=42X,y=make_blobs(n_samples=n_samples,centers=n_clusters,random_state=rando......
  • 无涯教程-Seaborn - 直方图(Histogram)
    直方图表示数据分布,方法是沿数据范围形成条形图,然后绘制条形图以显示落入每个条形图的观察数。Seaborn附带了一些数据集,在前几章中只使用了很少的数据集。无涯教程已经学习了如何加载数据集以及如何查找可用数据集列表。importpandasaspdimportseabornassbfrommatplot......
  • 无涯教程-Seaborn - 密度估计(KDE)
    核密度估计(KDE)是一种估计连续随机变量的概率密度函数的方法,用于非参数分析。在distplot中将hist标志设置为False将产生内核密度估计图。importpandasaspdimportseabornassbfrommatplotlibimportpyplotaspltdf=sb.load_dataset('iris')sb.distplot(df['petal_l......
  • 【flink番外篇】7、flink的State(Keyed State和operator state)介绍及示例 - 完整版
    文章目录Flink系列文章一、maven依赖二、KeyedState1、KeyedState介绍及示例2、KeyedState状态有效期(TTL)1)、过期数据的清理2)、全量快照时进行清理3)、增量数据清理4)、在RocksDB压缩时清理3、keyedstate示例:实现地铁站哪个进站口人数最多1)、javabean2)、实现3)、验证三、O......
  • 【flink番外篇】7、flink的State(Keyed State和operator state)介绍及示例(2) - operator
    文章目录Flink系列文章一、maven依赖二、OperatorState1、CheckpointedFunction2、带状态的SourceFunction3、operatorstate示例:实现程序异常时自动保存state,当超过重启次数时中断运行1)、实现2)、运行结果3)、hdfs上的checkpoint本文介绍了FlinkState中的operatorstate基本......
  • 【flink番外篇】7、flink的State(Keyed State和operator state)介绍及示例(1) - Keyed Sta
    文章目录Flink系列文章一、maven依赖二、KeyedState1、KeyedState介绍及示例2、KeyedState状态有效期(TTL)1)、过期数据的清理2)、全量快照时进行清理3)、增量数据清理4)、在RocksDB压缩时清理3、keyedstate示例:实现地铁站哪个进站口人数最多1)、javabean2)、实现3)、验证本文......