Amazon Relational Database Service
用户指南 (API Version 2014-10-31)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

使用数据库快照从 MySQL 数据库实例中将数据迁移到 Amazon Aurora 数据库群集

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

注意

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

将 RDS MySQL 快照迁移到 Aurora

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

您可以将未加密或已加密的数据库快照迁移到已加密的 Aurora 数据库群集,也可以将未加密的数据库快照迁移到未加密的 Aurora 数据库群集。您无法将已加密的数据库快照迁移到未加密的 Aurora 数据库群集。

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

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

  1. 确定要为 Amazon Aurora 数据库群集预置的空间量。有关更多信息,请参阅 需要多少空间?

  2. 使用控制台在 Amazon RDS MySQL 5.6 实例所在的区域中创建快照。有关创建数据库快照的信息,请参阅创建数据库快照

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

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

警告

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

需要多少空间?

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

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

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

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

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

  • 您需要加快迁移过程。

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

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

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

重要

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

表类型 限制或指南

MyISAM 表

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

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

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

压缩表

Amazon Aurora 不支持压缩表 (即,使用 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 Amazon's Aurora 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)

AWS 管理控制台

可迁移 Amazon RDS MySQL 数据库实例的数据库快照来创建 Aurora 数据库群集。然后将使用数据库快照中的数据填充新的数据库群集。数据库快照必须来自运行 MySQL 5.6 的 Amazon RDS 数据库实例。有关更多信息,请参阅创建数据库快照

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

使用控制台迁移数据库快照时,控制台将创建数据库群集和主实例。

此外,您可以根据数据库快照是否加密,选择性地指定要用来加密数据库群集的 AWS Key Management Service (AWS KMS) 加密密钥。

  • 如果数据库快照未加密,请指定一个加密密钥来对数据库群集进行静态加密。否则,不会对您的数据库群集进行加密。

  • 如果数据库快照已加密,请指定一个加密密钥,以便使用指定的加密密钥对您的数据库群集进行静态加密。否则,您的数据库群集将使用数据库快照的加密密钥进行静态加密。

    注意

    您无法从已加密的数据库快照创建未加密的数据库群集。

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

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

  2. 选择 Snapshots

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

  4. 选择 Migrate Database

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

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

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

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

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

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

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

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

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

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

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

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

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

      注意

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

    • Availability Zone:选择为 Aurora 数据库群集托管主实例的可用区。要让 Amazon RDS 为您选择可用区,请选择 No Preference

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

      注意

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

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

    • Auto Minor Version Upgrade:此选项不适用于 Amazon Aurora。您可以忽略它。

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

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

     数据库群集详细信息

AWS CLI

可迁移 Amazon RDS MySQL 数据库实例的数据库快照来创建 Aurora 数据库群集。然后将使用数据库快照中的数据填充新的数据库群集。数据库快照必须来自运行 MySQL 5.6 的 Amazon RDS 数据库实例。有关更多信息,请参阅创建数据库快照

如果数据库快照不在要从中找到数据的 AWS 区域中,请将数据库快照复制到该区域。有关更多信息,请参阅复制数据库快照

您可以使用包含以下参数的 restore-db-cluster-from-snapshot 命令从 Amazon RDS MySQL 数据库实例的数据库快照创建 Aurora 数据库群集:

  • --db-cluster-identifier

    要创建的数据库群集的名称。

  • --engine aurora

  • --kms-key-id

    用于根据数据库快照是否加密,选择性地加密数据库群集的 AWS Key Management Service (AWS KMS) 加密密钥。

    • 如果数据库快照未加密,请指定一个加密密钥来对数据库群集进行静态加密。否则,不会对您的数据库群集进行加密。

    • 如果数据库快照已加密,请指定一个加密密钥,以便使用指定的加密密钥对您的数据库群集进行静态加密。否则,您的数据库群集将使用数据库快照的加密密钥进行静态加密。

      注意

      您无法从已加密的数据库快照创建未加密的数据库群集。

  • --snapshot-identifier

    要迁移的数据库快照的 Amazon 资源名称 (ARN)。有关 Amazon RDS ARN 的更多信息,请参阅 Amazon Relational Database Service (Amazon RDS)

使用 RestoreDBClusterFromSnapshot 命令迁移数据库快照时,该命令将创建数据库群集和主实例。

在此示例中,您从 ARN 设置为 mydbsnapshotARN 的数据库快照创建名为 mydbcluster 的数据库群集。

针对 Linux、OS X 或 Unix:

aws rds restore-db-cluster-from-snapshot \ --db-cluster-identifier mydbcluster \ --db-snapshot-identifier mydbsnapshotARN \ --engine aurora

对于 Windows:

aws rds restore-db-cluster-from-snapshot ^ --db-cluster-identifier mydbcluster ^ --db-snapshot-identifier mydbsnapshotARN ^ --engine aurora

API

可迁移 Amazon RDS MySQL 数据库实例的数据库快照来创建 Aurora 数据库群集。然后将使用数据库快照中的数据填充新的数据库群集。数据库快照必须来自运行 MySQL 5.6 的 Amazon RDS 数据库实例。有关更多信息,请参阅创建数据库快照

如果数据库快照不在要从中找到数据的 AWS 区域中,请将数据库快照复制到该区域。有关更多信息,请参阅复制数据库快照

您可以使用包含以下参数的 RestoreDBClusterFromSnapshot 命令从 Amazon RDS MySQL 数据库实例的数据库快照创建 Aurora 数据库群集:

  • DBClusterIdentifier

    要创建的数据库群集的名称。

  • Engine=aurora

  • KmsKeyId

    用于根据数据库快照是否加密,选择性地加密数据库群集的 AWS Key Management Service (AWS KMS) 加密密钥。

    • 如果数据库快照未加密,请指定一个加密密钥来对数据库群集进行静态加密。否则,不会对您的数据库群集进行加密。

    • 如果数据库快照已加密,请指定一个加密密钥,以便使用指定的加密密钥对您的数据库群集进行静态加密。否则,您的数据库群集将使用数据库快照的加密密钥进行静态加密。

      注意

      您无法从已加密的数据库快照创建未加密的数据库群集。

  • SnapshotIdentifier

    要迁移的数据库快照的 Amazon 资源名称 (ARN)。有关 Amazon RDS ARN 的更多信息,请参阅 Amazon Relational Database Service (Amazon RDS)

使用 RestoreDBClusterFromSnapshot 命令迁移数据库快照时,该命令将创建数据库群集和主实例。

在此示例中,您从 ARN 设置为 mydbsnapshotARN 的数据库快照创建名为 mydbcluster 的数据库群集。

https://rds.us-east-1.amazonaws.com/ ?Action=RestoreDBClusterFromSnapshot &DBClusterIdentifier=mydbcluster &Engine=aurora &SignatureMethod=HmacSHA256 &SignatureVersion=4 &SnapshotIdentifier=mydbsnapshotARN &Version=2014-10-31 &X-Amz-Algorithm=AWS4-HMAC-SHA256 &X-Amz-Credential=AKIADQKE4SARGYLE/20160913/us-west-2/rds/aws4_request &X-Amz-Date=20170508T123701Z &X-Amz-SignedHeaders=content-type;host;user-agent;x-amz-content-sha256;x-amz-date &X-Amz-Signature=65d0d03242d99a16ef3712142bfcd52ac63fd2f68fbb5efd7edfb1e89138da57

相关主题