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-45-58-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

本实验完成。