

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 将本地 MySQL 数据库迁移至 Amazon RDS for MySQL
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql"></a>

*Lorenzo Mota，Amazon Web Services*

## Summary
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-summary"></a>

此模式为将本地 MySQL 数据库迁移至 Amazon Relational Database Service (Amazon RDS) for MySQL 提供了指导。该模式讨论了如何使用 AWS Database Migration Service (AWS DMS) 或原生 MySQL 工具（例如 **mysqldump**）进行完整数据库迁移。这种模式主要适用于 DBAs 和解决方案架构师。它可以在小型或大型项目中用作测试程序（我们建议至少一个测试周期），或作为最终迁移程序。

## 先决条件和限制
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-prereqs"></a>

**先决条件**
+ 一个活跃的 AWS 账户
+ 本地数据中心的 MySQL 源数据库

**限制**
+ 数据库大小限制：[64 TB](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)

**产品版本**
+ MySQL 版本 5.5、5.6、5.7、8.0。有关支持版本的最新列表，请参阅 AWS 文档[中的 Amazon RDS 上的 MySQL](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_MySQL.html)。如果您正在使用 AWS DMS，另请参阅使用与 M [ySQL 兼容的数据库作为当前支持的 AWS DMS MySQL 版本的目标](https://docs.aws.amazon.com/dms/latest/userguide/CHAP_Target.MySQL.html)。 AWS DMS

## 架构
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-architecture"></a>

**源技术堆栈**
+ 本地数据库。

**目标技术堆栈**
+ 运行 MySQL 的 Amazon RDS 数据库实例

**目标架构**

下图介绍了迁移后 Amazon RDS for MySQL 的目标实施。

![\[割接后将 Amazon RDS for MySQL 实施作为目标\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/2e10114e-e389-4d24-9b6a-fa56beee5369.png)


**AWS 数据迁移架构**

**使用 AWS DMS：**

下图显示了在直接转换之前使用 AWS DMS 发送完整和增量更改时的数据迁移架构。从本地到的网络连接 AWS 取决于您的要求，并且超出了这种模式的范围。

![\[使用 AWS DMS 时将数据迁移到 AWS 的架构。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/ecc9b282-1897-4971-99ed-83223b17000d.png)


**使用原生 MySQL 工具：**

使用 MySQL 原生工具时的数据迁移架构如下图所示。导出转储文件被复制到亚马逊简单存储服务 (Amazon S3) Simple Service，并在转换之前导入到亚马逊 RDS for MySQL 数据库 AWS 中。从本地到的网络连接 AWS 取决于您的要求，并且超出了这种模式的范围。

 

![\[使用原生 MySQL 工具时将数据迁移至 AWS 的架构。\]](http://docs.aws.amazon.com/zh_cn/prescriptive-guidance/latest/patterns/images/pattern-img/808809dd-030f-42af-a5a7-c4ba40456193/images/3bbec989-c3eb-473e-ba4a-032d6a4271c5.png)


**备注**：
+ 根据停机时间要求和数据库的大小，使用 AWS DMS 或更改数据捕获 (CDC) 工具可以最大限度地减少转换时间。 AWS DMS 可以帮助将新目标的切换时间缩短到最少（通常为几分钟）。 如果数据库的大小和网络延迟允许很短的窗口，那么使用 **mysqldump** 的离线策略就足够了。（我们建议进行测试以获得大致时间。）
+ 通常，CDC 策略比离线选项 AWS DMS 需要更多的监控和复杂性。

## 工具
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-tools"></a>
+ **AWS 服务**: [AWS Database Migration Service (AWS DMS)](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html) 可帮助您将数据存储迁移到云和本地设置的组合之间 AWS 云 或迁移。有关支持的 MySQL 源数据库和目标数据库的信息 AWS DMS，请参阅[将兼容 MySQL 的数据库迁移到](https://docs.aws.amazon.com/dms/latest/sbs/CHAP_MySQL.html)。 AWS如果您的源数据库不受支持 AWS DMS，则必须选择其他方法来迁移数据。
+ **原生 MySQL 工具**：[mysqldump](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html)
+ **第三方工具**：[Per](https://www.percona.com/software/mysql-database/percona-xtrabackup) cona XtraBackup

## 操作说明
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-epics"></a>

### 计划迁移
<a name="plan-the-migration"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 验证数据库版本。 | 验证源数据库和目标数据库版本。 | 数据库管理员 | 
| 确定硬件要求。 | 确定目标服务器的硬件要求。 | 数据库管理员、系统管理员 | 
| 确定存储要求。 | 确定目标数据库的存储需求(如存储类型和容量)。 | 数据库管理员、系统管理员 | 
| 选择实例类型。 | 根据容量、存储功能、网络功能选择目标实例类型。 | 数据库管理员、系统管理员 | 
| 确定网络访问要求。 | 确定源和目标数据库的网络访问安全要求。 | 数据库管理员、系统管理员 | 
| 确定不支持的对象。 | 确定不支持的对象（如有）并确定迁移工作。 | 数据库管理员 | 
| 确定依赖项。 | 确定对远程数据库的任何依赖项。 | 数据库管理员 | 
| 确定应用程序迁移策略。 | 确定客户端应用程序迁移策略。 | 数据库管理员、应用程序所有者、系统管理员 | 

### 配置基础设施
<a name="configure-the-infrastructure"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 创建虚拟私有云（VPC）。 | 配置路由表、互联网网关、NAT 网关和子网。有关更多信息，请参阅[亚马逊 RDS 文档中的VPCs 和](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html) Amazon RDS。 | 系统管理员 | 
| 创建安全组。 |  IPs 根据您的要求配置端口和 CIDR 范围或特定范围。MySQL 的默认端口是 3306。有关更多信息，请参阅 Amazon RDS 文档中的[使用安全组控制访问权限](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html)。 | 系统管理员 | 
| 配置和启动 Amazon RDS for MySQL DB 实例。 | 有关说明，请参阅 Amazon RDS 文档中的[创建 Amazon RDS 数据库实例](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_CreateInstance.html)。查看支持的版本。 | 系统管理员 | 

### 迁移数据 - 选项 1（使用原生工具）
<a name="migrate-data-option-1-using-native-tools"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 使用原生 MySQL 工具或第三方工具迁移数据库对象和数据。 | 有关说明，请参阅 mysq [ldump 和 [Percona XtraBackup](https://www.percona.com/software/mysql-database/percona-xtrabackup)（用于物理迁移）等 MySQ](https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html) L 工具的文档。有关选项的更多信息，请参阅博客文章 [MySQL 到 Amazon RDS for MySQL 或 Amazon Aurora MySQL 的迁移选项](https://aws.amazon.com/blogs/database/migration-options-for-mysql-to-amazon-rds-for-mysql-or-amazon-aurora-mysql/) | 数据库管理员 | 

### 迁移数据-选项 2（使用 AWS DMS）
<a name="migrate-data-option-2-using-dms"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 使用迁移数据 AWS DMS。 | 有关说明，请参阅 [AWS DMS 文档](https://docs.aws.amazon.com/dms/latest/userguide/Welcome.html)。 | 数据库管理员 | 

### 在割接之前执行初步任务
<a name="perform-preliminary-tasks-before-cutover"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 修复对象计数差异。 | 从源数据库和新目标数据库收集对象计数。修复目标数据库差异。 | 数据库管理员 | 
| 检查依赖项。 | 检查与其他数据库之间的依赖关系（链接）是否有效并按预期工作。 | 数据库管理员 | 
| 执行测试。 | 如果这是测试周期，请执行查询测试、收集指标以及修复问题。 | 数据库管理员 | 

### 割接
<a name="cut-over"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 切换至目标数据库。 | 将客户端应用程序切换至新基础设施。 | 数据库管理员、应用程序所有者、系统管理员 | 
| 提供测试支持。 | 为功能应用测试提供支持。 | 数据库管理员 | 

### 关闭项目
<a name="close-the-project"></a>


| Task | 说明 | 所需技能 | 
| --- | --- | --- | 
| 关闭资源。 | 关闭您为迁移创建的临时 AWS 资源。 | 数据库管理员、系统管理员 | 
| 验证项目文档。 | 查看和验证项目文档。 | 数据库管理员、应用程序所有者、系统管理员 | 
| 收集指标。 | 收集关于迁移时间、手动与工具工作的百分比、成本节省等指标。 | 数据库管理员、应用程序所有者、系统管理员 | 
| 关闭项目。 | 关闭项目并提供反馈。 | 数据库管理员、应用程序所有者、系统管理员 | 
| 停用源数据库。 | 当所有迁移和割接任务完成后，停用本地数据库。 | 数据库管理员、系统管理员 | 

## 相关资源
<a name="migrate-an-on-premises-mysql-database-to-amazon-rds-for-mysql-resources"></a>

**参考**
+ [关系数据库的迁移策略](https://docs.aws.amazon.com/prescriptive-guidance/latest/strategy-database-migration/welcome.html)
+ [AWS DMS 网站](https://aws.amazon.com/dms/)
+ [AWS DMS 文档](https://docs.aws.amazon.com/dms/)
+ [Amazon RDS 文档](https://docs.aws.amazon.com/rds/)
+ [Amazon RDS 定价](https://aws.amazon.com/rds/pricing/)
+ [Amazon VPC 和 Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_VPC.html)
+ [Amazon RDS Multi-AZ 部署](https://aws.amazon.com/rds/details/multi-az/)
+ [使用 Percona、A XtraBackup mazon EFS 和 Amazon S3 将本地 MySQL 数据库迁移到 Aurora MySQL](https://docs.aws.amazon.com/prescriptive-guidance/latest/patterns/migrate-on-premises-mysql-databases-to-aurora-mysql-using-percona-xtrabackup-amazon-efs-and-amazon-s3.html)
+ [Amazon RDS 数据库实例存储](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html)

**教程**
+ [入门 AWS DMS](https://aws.amazon.com/dms/getting-started/)
+ [Amazon RDS 入门](https://aws.amazon.com/rds/getting-started/)