AWS Database Migration Service
分步迁移指南 (API 版本 2016-01-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

将数据从 Amazon RDS MySQL 数据库实例迁移到 Amazon Aurora MySQL 数据库集群

可以从 Amazon RDS 快照中将数据迁移(复制)到 Amazon Aurora MySQL 数据库集群,如下所述。

注意

由于 Amazon Aurora MySQL 与 MySQL 兼容,因此您可通过设置 MySQL 数据库与 Amazon Aurora MySQL 数据库集群之间的复制来迁移 MySQL 数据库中的数据。建议您的 MySQL 数据库运行 MySQL 版本 5.5 或更高版本。

将 RDS MySQL 快照迁移到 Aurora MySQL

可迁移 Amazon RDS MySQL 数据库实例的数据库快照来创建 Aurora MySQL 数据库集群。将使用原始 Amazon RDS MySQL 数据库实例中的数据填充新的数据库集群。必须已从运行 MySQL 5.6 的 Amazon RDS 数据库实例创建此数据库快照。

手动数据库快照和自动数据库快照都可以迁移。创建数据库集群后,您可创建可选 Aurora MySQL 副本。

您必须采取的常见步骤如下:

  1. 确定要为 Amazon Aurora MySQL 数据库集群配置的空间量。有关更多信息,请参阅 Amazon RDS 文档

  2. 使用控制台在 Amazon RDS MySQL 5.6 实例所在的区域中创建快照

  3. 如果数据库快照不在数据库集群所在的区域中,请使用 Amazon RDS 控制台将数据库快照复制到该区域。有关复制数据库快照的信息,请参阅 Amazon RDS 文档

  4. 使用控制台迁移数据库快照,并创建包含与原始 MySQL 5.6 数据库实例相同的数据库的 Amazon Aurora MySQL 数据库集群。

警告

Amazon RDS 只允许每个 AWS 账户一次对应于每个区域中的一个快照副本。

需要多少空间?

将 MySQL 数据库实例的快照迁移到 Aurora MySQL 数据库集群时,Aurora MySQL 将先使用 Amazon Elastic Block Store (Amazon EBS) 卷设置快照中数据的格式,然后再迁移数据。在某些情况下,为迁移设置数据格式操作需要额外的空间。将数据迁移到数据库集群的时候,请遵循以下指南和限制:

  • 虽然 Amazon Aurora MySQL 支持高达 64 TB 的存储,但是将快照迁移到 Aurora MySQL 数据库集群中的过程受快照的 EBS 卷大小限制。因此,您可迁移的最大快照大小为 6 TB。

  • MyISAM 之外的未压缩的表的大小可高达 6 TB。如果有 MyISAM 表,则 Aurora MySQL 必须使用卷中的额外空间转换这些表以使其与 Aurora MySQL 兼容。如果有压缩表,则 Aurora MySQL 必须使用卷中的额外空间将这些表解压缩,然后再将它们存储在 Aurora MySQL 集群卷中。由于此额外的空间要求,您应确保从 MySQL 数据库实例迁移的 MyISAM 表和压缩表的大小不会超出 3 TB。

减少将数据迁移到 Amazon Aurora MySQL 中所需的空间量

您可能需要先修改数据库架构,然后再将其迁移到 Amazon Aurora MySQL 中。这种修改在以下情况下会很有用:

  • 您需要加快迁移过程。

  • 您不确定需要配置的空间量。

  • 您已尝试迁移数据,但迁移因配置的空间不足而失败。

您可进行以下更改来改善将数据库迁移到 Amazon Aurora MySQL 的过程。

重要

请务必对从生产数据库快照还原的新数据库实例而非生产实例执行这些更新。然后,可以将新数据库实例快照中的数据迁移到 Amazon Aurora MySQL 数据库集群,以避免生产数据库发生任何服务中断。

表类型 限制或指南

MyISAM 表

Amazon Aurora MySQL 仅支持 InnoDB 表。如果数据库中有 MyISAM 表,则必须转换这些表,然后再将其迁移到 Amazon Aurora MySQL 中。迁移过程中,转换过程需要额外的空间以便将 MyISAM 转换为 InnoDB。

若要降低空间用尽的可能性或加快迁移过程,请先将所有 MyISAM 表转换为 InnoDB 表,然后再迁移这些表。生成的 InnoDB 表的大小与 Amazon Aurora MySQL 要求该表具有的大小相同。要将 MyISAM 表转换为 InnoDB 表,请运行以下命令:

alter table <schema>.<table_name> engine=innodb, algorithm=copy;

压缩表

Amazon Aurora MySQL 不支持压缩表(即,使用 ROW_FORMAT=COMPRESSED 创建的表)。

为了避免用完空间或为了加速迁移过程,请通过将 ROW_FORMAT 设置为 DEFAULTCOMPACTDYNAMICREDUNDANT 来扩展您的压缩表。有关更多信息,请参阅 https://dev.mysql.com/doc/refman/5.6/en/innodb-row-format.html

您可在现有 MySQL 数据库实例上使用以下 SQL 脚本来列出数据库中属于 MyISAM 表或压缩表的表。

-- This script examines a MySQL database for conditions that will block -- migrating the database into an Amazon Aurora MySQL DB. -- It needs to be run from an account that has read permission for the -- INFORMATION_SCHEMA database. -- Verify that this is a supported version of MySQL. select msg as `==> Checking current version of MySQL.` from ( select 'This script should be run on MySQL version 5.6. ' + 'Earlier versions are not supported.' as msg, cast(substring_index(version(), '.', 1) as unsigned) * 100 + cast(substring_index(substring_index(version(), '.', 2), '.', -1) as unsigned) as major_minor ) as T where major_minor <> 506; -- List MyISAM and compressed tables. Include the table size. select concat(TABLE_SCHEMA, '.', TABLE_NAME) as `==> MyISAM or Compressed Tables`, round(((data_length + index_length) / 1024 / 1024), 2) "Approx size (MB)" from INFORMATION_SCHEMA.TABLES where ENGINE <> 'InnoDB' and ( -- User tables TABLE_SCHEMA not in ('mysql', 'performance_schema', 'information_schema') or -- Non-standard system tables ( TABLE_SCHEMA = 'mysql' and TABLE_NAME not in ( 'columns_priv', 'db', 'event', 'func', 'general_log', 'help_category', 'help_keyword', 'help_relation', 'help_topic', 'host', 'ndb_binlog_index', 'plugin', 'proc', 'procs_priv', 'proxies_priv', 'servers', 'slow_log', 'tables_priv', 'time_zone', 'time_zone_leap_second', 'time_zone_name', 'time_zone_transition', 'time_zone_transition_type', 'user' ) ) ) or ( -- Compressed tables ROW_FORMAT = 'Compressed' );

脚本会生成类似于以下示例的输出。该示例显示了两个必须从 MyISAM 转换为 InnoDB 的表。输出还包括每个表的相应大小 (以 MB 为单位)。

+---------------------------------+------------------+ | ==> MyISAM or Compressed Tables | Approx size (MB) | +---------------------------------+------------------+ | test.name_table | 2102.25 | | test.my_table | 65.25 | +---------------------------------+------------------+ 2 rows in set (0.01 sec)

使用控制台迁移数据库快照

可迁移 Amazon RDS MySQL 数据库实例的数据库快照来创建 Aurora MySQL 数据库集群。将使用原始 Amazon RDS MySQL 数据库实例中的数据填充新的数据库集群。数据库快照必须从运行 MySQL 5.6 的 Amazon RDS 数据库实例进行创建,并且不得加密。有关创建数据库快照的信息,请参阅 Amazon RDS 文档

如果数据库快照不在要从中查找数据的 AWS 区域中,请使用 Amazon RDS 控制台将数据库快照复制到该区域。有关复制数据库快照的信息,请参阅 Amazon RDS 文档

使用控制台迁移数据库快照时,控制台将执行必要的操作创建数据库集群和主实例。

您还可以选择使用 AWS Key Management Service (AWS KMS) 加密密钥对新的 Aurora MySQL 数据库集群进行静态加密。此选项仅适用于未加密的数据库快照。

使用控制台迁移 MySQL 5.6 数据库快照

  1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台:https://console.amazonaws.cn/rds/

  2. 选择 Snapshots

  3. Snapshots 页面上,选择要迁移到 Aurora MySQL 数据库集群的快照。

  4. 选择 Migrate Database

    
                                    将快照迁移到 Amazon Aurora MySQL
  5. Migrate Database 页面上设置以下值:

    • 数据库实例类:选择具有数据库所需的存储和容量的数据库实例类,例如 db.r3.large。Aurora MySQL 集群卷会随着数据库中数据量的增长而自动扩展,最大大小可达 64 TB。因此,您只需选择满足当前存储要求的数据库实例类。

    • DB Instance Identifier:为数据库群集键入一个名称,该名称在您选择的区域中对于您的账户是唯一的。此标识符将在数据库群集中实例的终端节点地址中使用。您可选择对该名称进行一些巧妙处理,例如将所选的区域和数据库引擎包括在名称中(如 aurora-cluster1)。

      数据库实例标识符具有以下限制:

      • 它必须包含 1 到 63 个字母数字字符或连字符。

      • 它的第一个字符必须是字母。

      • 它不能以连字符结束或包含两个连续连字符。

      • 它对于每个 AWS 区域的每个 AWS 账户的所有数据库实例必须是唯一的。

    • VPC如果已经有 VPC,则可以通过选择 VPC 标识符(例如 vpc-a464d1c1)将该 VPC 用于 Amazon Aurora MySQL 数据库集群。有关使用现有 VPC 的信息,请参阅 Amazon RDS 文档

      否则,可以通过选择 Create a new VPC,让 Amazon RDS 为您创建 VPC。

    • 子网组如果已经有子网组,则可以通过选择子网组标识符(例如 gs-subnet-group1),将该子网组用于 Amazon Aurora MySQL 数据库集群。

      否则,可以通过选择 Create a new subnet group,让 Amazon RDS 为您创建子网组。

    • Publicly Accessible选择 No 可指定数据库集群中的实例只能由 VPC 内的资源访问。选择 Yes 可指定数据库集群中的实例可以由公用网络上的资源访问。默认值为 Yes

      注意

      您的生产数据库群集可能不需要位于公有子网中,因为仅应用程序服务器将需要访问数据库群集。如果数据库集群不需要位于公有子网中,请将 Publicly Accessible 设置为 No

    • Availability Zone (可用区)选择为 Aurora MySQL 数据库集群托管主实例的可用区。要让 Amazon RDS 选择可用区,请选择 No Preference (无首选项)

    • Database Port键入将在连接到数据库集群中的实例时使用的默认端口。默认为 3306

      注意

      您可能位于企业防火墙后面,该防火墙不允许访问默认端口 (例如,MySQL 默认端口 3306)。在此情况下,请提供企业防火墙允许的端口值。请记住此端口值,以便在稍后连接到 Aurora MySQL 数据库集群时使用。

    • Enable Encryption (启用加密)对于要进行静态加密的新 Aurora MySQL 数据库集群,选择 Yes (是)。 如果选择 Yes (是),则需要选择一个 AWS KMS 加密密钥作为 Master Key (主密钥) 值。

    • Auto Minor Version Upgrade (自动次要版本升级)如果需要让 Aurora MySQL 数据库集群在次要 MySQL 数据库引擎版本升级可用时自动接收这些升级,请选择 Yes (是)

      Auto Minor Version Upgrade 选项仅适用于升级到 Amazon Aurora MySQL 数据库集群的 MySQL 次要引擎版本。它不适用于应用于维持系统稳定性的常规修补程序。

    
                                    将快照迁移到 Amazon Aurora MySQL
  6. 选择 Migrate 以迁移您的数据库快照。

  7. 选择 Instances,然后选择箭头图标以显示数据库集群详细信息并监控迁移的进度。在详细信息页面上,您将找到用于连接到数据库群集的主实例的群集终端节点。有关连接到 Amazon Aurora MySQL 数据库集群的更多信息,请参阅 Amazon RDS 文档

    
                                数据库集群详细信息