本文主要介绍,将既有的传统环境,利用AWS Migration Service进行迁移,本文重点的讲解如何进行数据库迁移。
文章目录
1. 设置网络
配置安全组
在迁移中,VPC 安全组 必须允许来自 DMS 复制实例 到目标 RDS 数据库的入站流量。
- 为 DMS 复制实例 创建安全组
a. 进入 AWS 控制台 > 服务 > EC2 > 安全组,点击 创建安全组 按钮。
b. 输入 安全组名称 (比如 RI-SG),填写一个 描述,从 VPC 下拉列表中选择 TargetVPC,点击 创建安全组 按钮。
无需给 DMS 复制实例 安全组 RI-SG 添加任何入站规则。
- 为 目标数据库 创建安全组
a. 仍然在 AWS 控制台 > 服务 > EC2 > 安全组 界面中,点击 创建安全组 按钮。
b. 输入 安全组名称 (比如 DB-SG),填写一个 描述,从 VPC 下拉列表中选择 TargetVPC。
c. 在 入站规则 部分点击 添加规则 按钮,配置规则以允许来自 DMS 复制实例 安全组在端口 3306 上的 入站 流量,然后点击 创建安全组 按钮
2. 创建目标数据库
数据库迁移
数据库迁移可以通过多种方式执行。在本研讨会中,我们将使用 AWS Database Migrations Service (DMS) 采用 持续数据复制 模式执行迁移。
配置 AWS DMS 之前,您需要在提供的 AWS 账户中创建目标数据库。使用 AWS Relation Database Service (RDS) 执行此活动,以便在云中轻松设置、操作和扩展关系数据库。
为目标数据库创建子网组
-
进入 AWS 控制台,选择 服务 > RDS,然后从左侧菜单中选择 子网组 然后点击 创建数据库子网组
-
在 创建数据库子网组 界面,输入下面的信息
在 添加子网 面板中,从每个可用区(us-west-2a 和 us-west-2b)添加一个子网,使用 CIDRS 10.0.101.0/24 和 10.0.201.0/24,然后按 创建 按钮。
创建目标数据库
- 现在从左侧菜单中选择 数据库 并点击 创建数据库
- 在 引擎选项 中,选择 MySQL,版本选择 MySQL 5.7.22
您可以使用 SQL 查询从源数据库中检索有关源 MySQL 版本的信息 - SELECT@@version;
在 模板 部分,选择 “免费套餐”
选择“免费套餐”模板将限制您在向导的下一步中进行选择,从而使您受到AWS免费套餐的限制
在 设置 部分,为您的新数据库实例配置数据库实例标识符(比如 database-1)、主用户名(比如 admin)和主密码。
请务必记下 主用户名 和 主密码,因为您稍后会使用它
从可突增数据库实例类中选择 db.t2.micro,存储类型选择 通用型 (SSD),取消选中“启用存储自动扩展”(此数据库不需要超过20 GB的存储空间)。
- 在 可用性与持久性 部分,保持 请勿创建备用实例 以节省成本。
对于生产工作负载,我们建议创建备用实例利用 多可用区部署 实现更高的可用性
- 在 连接 部分:
- 在 Virtual Private Cloud (VPC) 中, 选择 TargetVPC (这个是为本实验自动创建的 Amazon Virtual Private Cloud )
- 在 其它连接配置 -> 现有 VPC 安全组中,中选择之前创建的 VPC 安全组(比如 “DB-SG”)。
- 请注意,您之前创建的数据库子网组将被自动选择
注意:稍后将编辑此 VPC 安全组,以确保 DMS 复制实例能够访问目标数据库并允许从 Web 服务器进行访问。
- 对于 数据库身份验证,选择 密码身份验证。
- (此步骤只针对 AWS 主办的活动) 在 其它配置 部分,确保 监控 下面的 启用增强监测 不被选中,最后,审查 月度估算费用,点击 创建数据库 按钮。
等待数据库创建完成
3. 创建复制实例
创建复制子网组
使用 AWS DMS 的一个需求是已经配置了 子网组,它是 DMS 复制实例 使用的一组子网。
- 进入 AWS 控制台 > 服务 > Database Migration Service > 子网组,点击 创建子网组 按钮。
- 在 创建复制子网组 中,输入下面的参数值(如图):
- 点击 创建子网组 按钮
创建 AWS DMS 复制实例
在此步骤中,您将创建一个 AWS Database Migration Service 复制实例,该实例启动源数据库到目标数据库之间的连接,传输数据,并缓存在初始数据加载期间发生在源数据库上的任何更改。
- 在 AWS 控制台 中,从 服务 选择 Database Migration Service。
- 点击左侧菜单中的 复制实例 ,然后点击 创建复制实例 按钮。
在 创建复制实例 屏幕上使用下面的参数配置一个新复制实例:
在 高级安全和网络配置 中,确保选择您之前创建的复制子网组 & 复制实例安全组。
4. 点击 创建 按钮。
创建复制实例需要花几分钟时间,请等待,直到 状态 变为 可用,再执行后续步骤。在此期间,您可以查看在 AWS DMS 网页 中描述的 AWS DMS 不同用例。
4. 配置源数据库
用 Change Data Capture (CDC)模式运行 DMS 复制任务
为了确保数据库迁移的停机时间最少,我们将使用从源数据库到目标数据库的变化数据持续复制模式(Change Data Capture (CDC))。关于 CDC 的更多信息和 AWS DMS 原生支持 CDC 细节请参见 这篇文章。
在源数据库中启用 binary log
- 登录到 源环境数据库 服务器
- 为 wordpress-user 数据库用户授予额外的权限
在数据库服务器上运行下面的命令:
sudo mysql -u root -pXxxx2012
GRANT REPLICATION CLIENT ON *.* to 'wordpress-user';
GRANT REPLICATION SLAVE ON *.* to 'wordpress-user';
GRANT SUPER ON *.* to 'wordpress-user';
exit
- 为 bin logs 创建一个目录
在数据库服务器上运行下面的命令:
sudo su -
mkdir /var/lib/mysql/binlogs
chown -R mysql:mysql /var/lib/mysql/binlogs
exit
- 创建和修改 /etc/mysql/my.cnf 文件
运行下面的命令编辑文件:
sudo su -
cp /etc/mysql/mysql.conf.d/mysqld.cnf /etc/mysql/my.cnf
chown -R mysql:mysql /etc/mysql/my.cnf
nano /etc/mysql/my.cnf
然后将下面的信息加入到 [mysqld] 部分,保存文件并退出nano:
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
- 重启 MySQL 服务使更改生效
运行下面的命令应用更改:
sudo service mysql restart
应用更改要求 mysql 服务重启。这将会中断源数据库几秒钟。
- 测试 更改是否生效
通过运行下面的命令,确保在 /etc/mysql/my.cnf 中的更改生效:
sudo mysql -u root -pXxx2012
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';
exit
如果确实如此 - 您可以 退出 SSH 了。如果出现任何问题 - 请检查 /var/log/mysqld.log 文件中的错误信息。
5. 创建源端点和目标端点
创建源端点和目标端点
仍旧在 AWS DMS 界面里,进入 终端节点,然后点击 创建终端节点 按钮。
- 创建源终端节点
使用下面的参数值配置终端节点:
打开 测试终端节点连接(可选) 部分,然后在 VPC 下拉列表中选择 TargetVPC, 点击 运行测试 按钮,以验证您的终端节点配置的有效性。
测试运行一会后,您应当会在 状态 列看到 successful 的消息。点击 创建终端节点 按钮创建终端节点。
如果出现任何错误 - 请确保您配置了正确的终端节点参数,并且复制实例创建时选中了 公开访问 参数。
- 创建目标终端节点
并在 特定于终端节点的设置 -> 额外的连接属性 拷贝粘贴下面的连接参数:
parallelLoadThreads=1
设置如图所示:
- 在 测试终端节点连接(可选) 下,从 VPC 下拉列表中选择 TargetVPC,点击 运行测试 按钮验证终端节点的有效性。
测试运行一会后,您应当会在 状态 列看到 successful 的消息。点击 创建终端节点 按钮创建终端节点。
如果出现任何错误,请确保 RDS 数据库的 VPC 安全组 允许来自 AWS DMS 复制实例 安全组在端口 3306 上的入站流量(或者来自整个 TargetVPC - 10.0.0.0/16)。
终端节点连接测试也可以在 终端节点 列表界面点击 操作 按钮,然后选择 测试连接。
最后可以看到创建的两个终端节点如下:
6. 创建和运行复制任务
配置和运行复制任务
回到 AWS DMS 控制台,进入 数据库迁移任务,点击 创建任务 按钮。
- 在 创建数据库迁移任务 界面中输入下面的参数值:
- 在 任务设置 部分,输入下面的值(其它的保留缺省值不变):
在 表映像 部分,选择 引导式 UI 模式,点击 添加新选择规则 按钮,在 架构 下拉列表中选择 wordpress-db。
如果您在 架构 下拉列表中没有看到 wordpress-db,选择 输入架构 然后在 架构名称 字段中输入 wordpress-db。
滚动到屏幕底部,点击 创建任务 按钮创建任务并开始进行数据复制。
创建完任务后,在页面会出现任务,状态为正在创建中:
任务创建成功,并且出现进度百分比:
任务同步完成状态:
7. 小结
- 使用 Amazon Relational Database Service 创建了一个新的托管数据库
- 创建了一个 AWS Database Migration Service 复制实例 - 允许您在数据库之间复制数据
- 创建了 源数据库端点和目标数据库端点
- 修改了源数据库的配置,以执行 持续复制数据
- 通过 复制任务 开始复制数据
注:本文原创由
bluetata
发布于: https://bluetata.blog.csdn.net/ 转载请务必注明出处。