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

从外部 MySQL 数据库将数据迁移到 Amazon Aurora 数据库群集

如果数据库支持 InnoDB 或 MyISAM 表空间,您可以使用以下选项将数据迁移到 Amazon Aurora 数据库群集:

通过使用 Amazon S3 存储桶从 MySQL 中迁移数据

可以从源 MySQL 版本 5.5 或 5.6 数据库中将完整备份文件和增量备份文件复制到 Amazon S3 存储桶,然后从这些文件还原 Amazon Aurora 数据库群集。

此选项可能比使用 mysqldump 迁移数据要快得多,因为使用 mysqldump 可重放所有命令以便在新的 Amazon Aurora 数据库群集中从源数据库重新创建架构和数据。通过复制源 MySQL 数据文件,Amazon Aurora 可以立即将这些文件用作数据库群集的数据。

Amazon Aurora 不会还原数据库中的所有内容。您应从源 MySQL 或 MariaDB 数据库保存数据库架构和以下项目的值,然后将这些内容添加到已还原的 Amazon Aurora 数据库群集 (在创建此群集后)。

在您开始之前

在将数据复制到 Amazon S3 存储桶并从这些文件还原数据库群集之前,您必须执行以下操作:

  • 在您的本地服务器上安装 Percona XtraBackup。

  • 准许 Amazon Aurora 代表您访问您的 Amazon S3 存储桶。

安装 Percona XtraBackup

Amazon Aurora 可以从使用 Percona XtraBackup 创建的文件还原数据库群集。可以从 Percona 网站安装 Percona XtraBackup。

注意

您必须使用 Percona XtraBackup 版本 2.3 或更高版本。Aurora 与 Percona XtraBackup 的早期版本不兼容。

所需权限

要将您的 MySQL 数据迁移到 Amazon Aurora 数据库群集,需要几种权限:

  • 请求该 Amazon RDS 从 Amazon S3 存储桶创建新群集的用户必须有权列出您的 AWS 账户的存储桶。通过使用 AWS Identity and Access Management (IAM) 策略,可以向用户授予此权限。

  • Amazon RDS 需要代表您访问 Amazon S3 存储桶 (在该存储桶中,您存储了用于创建 Amazon Aurora 数据库群集的文件) 的权限。通过使用 IAM 服务角色,可以向 Amazon RDS 授予必需的权限。

  • 提出请求的用户还必须有权列出您的 AWS 账户的 IAM 角色。

  • 如果提出请求的用户将创建 IAM 服务角色或将请求该 Amazon RDS 创建 IAM 角色服务 (通过使用控制台),则用户必须有权为您的 AWS 账户创建 IAM 角色。

例如,以下 IAM 策略向用户授予使用控制台列出 IAM 角色、创建 IAM 角色和列出您的账户的 S3 存储桶所需的最低权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "s3:ListBucket", "s3:ListObjects" ], "Resource": "*" } ] }

此外,为使用户可以将 IAM 角色与 S3 存储桶关联,IAM 用户必须具有该 IAM 角色的 iam:PassRole 权限。此权限允许管理员限制用户可关联到 S3 存储桶的 IAM 角色。

例如,以下 IAM 策略允许用户将名为 S3Access 的角色与 S3 存储桶关联。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"AllowS3AccessRole", "Effect":"Allow", "Action":"iam:PassRole", "Resource":"arn:aws-cn:iam::123456789012:role/S3Access" } ] }

有关 IAM 用户权限的更多信息,请参阅为 Amazon RDS 使用基于身份的策略 (IAM 策略)

创建 IAM 服务角色

可以通过选择 Create a New Role 选项 (本主题稍后将展示),让 Amazon RDS 管理控制台为您创建角色。如果您选择此选项并为新角色指定名称,则 Amazon RDS 将使用您提供的名称创建 Amazon RDS 访问 S3 存储桶所需的 IAM 服务角色。

作为替代方法,您可以使用以下程序手动创建角色。

为 Amazon RDS 创建 IAM 角色以便访问 Amazon S3

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

  2. 在导航窗格中,选择 Roles

  3. 选择 Create New Role,为新角色指定 Role Name 值,然后选择 Next Step

  4. AWS Service Roles 下,找到 Amazon RDS 并选择 Select

  5. Attach Policy 步骤中请勿选择策略进行挂载。而是选择 Next Step

  6. 检查角色信息,然后选择 Create Role

  7. 在角色列表中,选择您新创建的角色的名称。选择 Permissions 选项卡。

  8. 选择 Inline Policies。因为新角色没有挂载策略,系统将提示您创建一个。单击链接可创建新的策略。

  9. Set Permissions 页面上,选择 Custom Policy,然后选择 Select

  10. 键入 Policy Name,例如 S3-bucket-policy。为 Policy Document 添加以下代码,从而将 <存储桶名称> 替换为您允许访问的 S3 存储桶的名称。

    作为策略文档的一部分,您还可以包含文件名前缀。如果指定前缀,则 Amazon Aurora 使用 S3 存储桶中以指定前缀开头的文件创建数据库群集。如果不指定前缀,则 Aurora 使用 S3 存储桶中的所有文件创建数据库群集。

    要指定前缀,请将 <前缀> 替换为您的文件名的前缀。在前缀后面包含星号 (*)。如果您不想指定前缀,请仅指定星号。

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": [ "arn:aws-cn:s3:::<bucket name>" ] }, { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws-cn:s3:::<bucket name>/<prefix>*" ] } ] }
  11. 选择 Apply Policy

备份文件以还原为数据库群集

可以使用 Percona Xtrabackup 创建 MySQL 数据库文件的完整备份,并且可将备份文件上传到 Amazon S3 存储桶。或者,如果您已使用 Percona Xtrabackup 备份您的 MySQL 数据库文件,则可将现有的完整备份和增量备份目录和文件上传到 Amazon S3 存储桶。

使用 Percona Xtrabackup 创建完整备份

要创建 MySQL 数据库文件的完整备份,以便从 S3 还原它来创建 Amazon Aurora 数据库群集,请使用 Percona Xtrabackup 实用工具 (innobackupex) 备份您的数据库。

例如,以下命令创建 MySQL 数据库的备份并将备份文件存储在 /s3-restore/backup 文件夹中。

innobackupex --user=myuser --password=<password> --no-timestamp /s3-restore/backup

如果您要将备份压缩为单个文件 (可在需要时进行拆分),则可以使用 --stream 选项来采用下列格式之一保存备份:

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

以下命令为您的 MySQL 数据库创建一个拆分成多个 Gzip 文件的备份。

innobackupex --user=myuser --password=<password> --stream=tar \ /mydata/s3-restore/backup | gzip - | split -d --bytes=500MB \ - /mydata/s3-restore/backup/backup.tar.gz

以下命令为您的 MySQL 数据库创建一个拆分成多个 tar 文件的备份。

innobackupex --user=myuser --password=<password> --stream=tar \ /mydata/s3-restore/backup | split -d --bytes=500MB \ - /mydata/s3-restore/backup/backup.tar

以下命令为您的 MySQL 数据库创建一个拆分成多个 xbstream 文件的备份。

innobackupex --stream=xbstream \ /mydata/s3-restore/backup | split -d --bytes=500MB \ - /mydata/s3-restore/backup/backup.xbstream

在您使用 Percona Xtrabackup 实用工具备份 MySQL 数据库后,可以将备份目录和文件复制到 Amazon S3 存储桶。

有关创建文件并将其上传到 Amazon S3 存储桶的信息,请参阅 Amazon S3 入门指南中的 Amazon Simple Storage Service 入门

通过 Percona Xtrabackup 使用增量备份

Aurora 支持使用 Percona Xtrabackup 创建的完整备份和增量备份。如果您已使用 Percona Xtrabackup 对 MySQL 数据库文件进行完整备份和增量备份,则无需创建完整备份并将备份文件上传到 Amazon S3。相反,您可以通过将网站备份和增量备份的现有备份目录和文件复制到 Amazon S3 存储桶来节约大量时间。有关使用 Percona Xtrabackup 创建增量备份的更多信息,请参阅使用 innobackupex 进行增量备份

在将现有的完整备份和增量备份文件复制到 Amazon S3 存储桶时,您必须以递归方式复制基目录的内容。这些内容包括完整备份以及所有增量备份目录和文件。此复制必须在 Amazon S3 存储桶中保留目录结构。Aurora 将循环访问所有文件和目录。Aurora 使用每个增量备份附带的 xtrabackup-checkpoints 文件来标识基目录并按照日志序列号 (LSN) 范围对增量备份排序。

有关创建文件并将其上传到 Amazon S3 存储桶的信息,请参阅 Amazon S3 入门指南中的 Amazon Simple Storage Service 入门

备份注意事项

Amazon S3 将上传至 Amazon S3 存储桶的文件大小限制为 5 TB。如果数据库的备份数据超过 5 TB,您就必须使用 split 命令将备份文件拆分为多个文件,每个小于 5 TB。

Amazon RDS 将上传到 Amazon S3 存储桶的源文件数限制为 100 万。如果数据库的备份数据 (包括所有完整备份和增量备份) 包含大量文件,请使用 tarball (.tar.gz) 文件将完整备份文件和增量备份文件存储在 Amazon S3 存储桶中。

Aurora 根据文件名使用您的备份文件。确保根据文件格式为备份文件指定相应的文件扩展名,例如对于使用 Percona xbstream 格式存储的文件,指定 .xbstream

Aurora 按照字母顺序以及自然数字顺序使用您的备份文件。始终在您发出 innobackupex 命令时使用 split 选项,以确保备份文件按适当的顺序写入和命名。

Aurora 不支持使用 Percona Xtrabackup 创建的部分备份。您无法在备份数据库的源文件时使用 --include--tables-file--databases 选项创建部分备份。

Aurora 支持使用 Percona Xtrabackup (带或不带 --no-timestamp 选项) 创建的增量备份。建议您使用 --no-timestamp 选项以减小增量备份的目录结构的深度。

有关更多信息,请参阅 innobackupex 脚本

从 Amazon S3 存储桶还原 Aurora 数据库群集

可以通过使用 Amazon RDS 控制台,从 Amazon S3 存储桶还原备份文件以创建新的 Amazon Aurora 数据库群集。

从 S3 存储桶上的文件还原 Amazon Aurora 数据库群集

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

  2. 在 RDS 控制面板中,选择 Restore Aurora DB Cluster from S3

  3. Specify Source Backup Details 中,指定以下内容:

    对于此选项 请执行此操作

    Source Engine

    Amazon Aurora 当前仅支持针对 mysql 数据库引擎从备份文件还原。

    Source Engine Version

    指定从中创建备份文件的 MySQL 数据库的版本。支持 MySQL 版本 5.5 和 5.6。

    S3Bucket

    选择存储了备份文件的 Amazon S3 存储桶。

    S3 存储桶前缀

    (可选) 为在 Amazon S3 存储桶中存储的文件指定文件路径前缀。S3 Bucket Prefix 是可选的。如果不指定前缀,则 Amazon Aurora 使用 S3 存储桶的根文件夹中的所有文件和文件夹创建数据库群集。如果指定前缀,则 Amazon Aurora 使用 S3 存储桶中其完整路径以指定前缀开头的文件和文件夹创建数据库群集。

    Amazon Aurora 不会遍历 S3 存储桶中的其他子文件夹来查找备份文件。仅使用由 S3 Bucket Prefix 标识的文件夹中的文件。如果将您的备份文件存储在 S3 存储桶中的子文件夹中,则必须指定一个标识用于存储文件的文件夹的完整路径的前缀。

    例如,假设在名为 backups 的 S3 存储桶的子文件夹存储备份文件,并且有多组备份文件,每一组都有自己的目录 (如 gzip_backup1gzip_backup2,依此类推)。这种情况下,指定 backups/gzip_backup1 的前缀可从 gzip_backup1 文件夹中的文件还原。

    创建新角色

    选择 Yes 创建一个新 IAM 角色,或选择 No 选择现有 IAM 角色,以授权 Amazon Aurora 代表您访问 Amazon S3。有关更多信息,请参阅 所需权限

    IAM 角色名称

    仅当 Create a New Role 设置为 Yes 时,此选项才可用。指定要创建的新 IAM 角色的名称。该新角色用于授权 Amazon Aurora 代表您访问 Amazon S3。有关更多信息,请参阅 所需权限

    IAM 角色

    仅当 Create a New Role 设置为 No 时,此选项才可用。选择您创建的用以授权 Amazon Aurora 代表您访问 Amazon S3 的 IAM 角色。如果尚未创建 IAM 角色,您可以将 Create a New Role 设置为 Yes,然后创建一个。有关更多信息,请参阅 所需权限

    典型的 Specify Source Backup Details 页面类似如下所示。

     Amazon Aurora 从 Amazon S3 存储桶迁移
  4. 选择 Next Step

  5. Specify DB Details 页面上,指定数据库群集信息。下表显示数据库实例的设置。

    对于此选项 请执行此操作

    数据库实例类

    选择定义数据库群集中每个实例的处理和内存要求的数据库实例类。Aurora 支持 db.t2.smalldb.t2.mediumdb.r3.largedb.r3.xlargedb.r3.2xlargedb.r3.4xlargedb.r3.8xlarge 数据库实例类。有关数据库实例类选项的更多信息,请参阅数据库实例类

    Multi-AZ Deployment

    确定是否要在其他可用区中创建 Aurora 副本以实现故障转移支持。有关多可用区的详细信息,请参阅区域和可用区

    DB Instance Identifier

    键入数据库群集中主实例的名称。此标识符在您的数据库群集主实例的终端节点地址中使用。

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

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

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

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

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

    Master Username

    使用字母数字字符键入一个名称,该名称将用作您登录数据库群集的主用户名。已授予主用户名账户的默认权限包括:create, drop, references, event, alter, delete, index, insert, select, update, create temporary tables, lock tables, trigger, create view, show view, alter routine, create routine, execute, create user, process, show databases, grant option

    Master Password

    键入一个包含 8 到 41 位可打印 ASCII 字符 (的密码用不包括 /、"、和 @) 用作您的主用户密码。

    典型的 Specify DB Details 页面类似如下所示。

     Amazon Aurora 启动数据库实例向导数据库实例详细信息
  6. 确认您的主密码,然后选择 Next

  7. Configure Advanced Settings 页面上,您可以自定义 Aurora 数据库群集的其他设置。下表显示数据库群集的高级设置。

    对于此选项 请执行此操作

    VPC

    选择将托管数据库群集的 VPC。选择 Create a New VPC 以让 Amazon RDS 为您创建 VPC。有关更多信息,请参阅本主题前面的数据库群集先决条件

    子网组

    选择要用于数据库群集的数据库子网组。选择 Create a New DB Subnet Group 以让 Amazon RDS 为您创建数据库子网组。有关更多信息,请参阅本主题前面的数据库群集先决条件

    公开访问

    选择 Yes 可向数据库群集提供公有 IP 地址;否则,请选择 No。数据库群集可以混合使用公有和私有数据库实例。有关隐藏实例以防止公开访问的更多信息,请参阅从 Internet 隐藏 VPC 中的数据库实例

    可用区

    确定您是否希望指定特定的可用区。有关可用区的更多信息,请参阅区域和可用区

    VPC 安全组

    选择一个或多个 VPC 安全组以保护对数据库群集的网络访问。选择 Create a New VPC Security Group 以让 Amazon RDS 为您创建 VPC 安全组。有关更多信息,请参阅本主题前面的数据库群集先决条件

    DB Cluster Identifier

    为数据库群集键入一个名称,该名称在您选择的区域中对于您的账户是唯一的。此标识符在数据库群集的群集终端节点地址中使用。有关群集终端节点的信息,请参阅 Aurora 终端节点

    数据库群集标识符具有以下限制:

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

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

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

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

    Database Name

    为您的数据库键入一个含有达 64 位字母和数字字符的名称。如果不提供名称,Amazon RDS 不会在您创建的数据库群集上创建数据库。

    Database Port

    指定应用程序和实用程序用来访问数据库的端口。Aurora 数据库群集默认为使用默认 MySQL 端口 3306。有些公司的防火墙不允许连接到默认的 MySQL 端口。如果您公司的防火墙不允许连接默认端口,请为新数据库群集选择其他端口。

    DB Parameter Group

    选择数据库参数组。Aurora 具有一个可使用的默认数据库参数组,您也可以创建自己的数据库参数组。有关数据库参数组的更多信息,请参阅 使用数据库参数组

    数据库群集参数组

    选择数据库群集参数组。Aurora 具有一个可使用的默认数据库群集参数组,您也可以创建自己的数据库群集参数组。有关数据库群集参数组的更多信息,请参阅 使用数据库参数组

    选项组

    选择选项组。Aurora 具有一个可使用的默认选项组,或者您也可以创建自己的选项组。有关选项组的更多信息,请参阅 使用选项组

    启用加密

    选择 Yes 可对此数据库群集启用静态加密。有关更多信息,请参阅 加密 Amazon RDS 资源

    优先级

    选择实例的故障转移优先级。如果您未选择值,则默认值为 tier-1。此优先级决定从主实例故障恢复时提升 Aurora 副本的顺序。有关更多信息,请参阅 Aurora 数据库群集的容错能力

    备份保留期

    选择 Aurora 将保留数据库的备份副本的时间长度 (1 到 35 天)。可使用备份副本对数据库执行时间点还原 (PITR),以还原到第二个时间点。

    Enable Enhanced Monitoring

    选择 Yes 可实时收集您的数据库群集在其上运行的操作系统的指标。有关更多信息,请参阅 增强监控

    Monitoring Role

    此选项仅在 Enable Enhanced Monitoring 设置为 Yes 时可用。选择您创建来允许 Amazon RDS 与 Amazon CloudWatch Logs 通信的 IAM 角色。

    粒度

    此选项仅在 Enable Enhanced Monitoring 设置为 Yes 时可用。设置为数据库群集收集指标的时间之间的间隔 (以秒为单位)。

    Auto Minor Version Upgrade

    此选项不适用于 Amazon Aurora。您可以忽略它。

    Maintenance Window

    选择可以进行系统维护的每周时间范围。

    典型 Configure Advanced Settings 页面类似如下所示。

     Amazon Aurora 启动数据库实例向导配置高级设置
  8. 选择 Launch DB Instance 以启动您的 Aurora 数据库实例,然后选择 Close 以关闭该向导。

在 Amazon RDS 控制台中,新数据库实例显示在数据库实例列表中。数据库实例具有 creating 状态,直到该数据库实例完成创建并可供使用。当状态更改为 available 时,您可连接到数据库群集的主实例。根据所分配的数据库实例类和存储的不同,新实例可能需要数分钟时间才能变得可用。

要查看新创建的群集,请选择 Amazon RDS 控制台中的 Clusters 视图。有关更多信息,请参阅 查看 Amazon Aurora 数据库群集

 Amazon Aurora 数据库实例列表

记下群集的端口和终端节点。在您的执行写入或读取操作的任何应用程序的 JDBC 和 ODBC 连接字符串中,使用群集的终端节点和端口。

使用 mysqldump 从 MySQL 迁移到 Amazon Aurora

由于 Amazon Aurora 是一个与 MySQL 兼容的数据库,因此您可以使用 mysqldump 实用工具从您的 MySQL 或 MariaDB 数据库中将数据复制到现有 Amazon Aurora 数据库群集。有关对于大型 MySQL 数据库如何执行此操作的讨论,请参阅将数据导入到 Amazon RDS MySQL 或 MariaDB 数据库实例中,同时减少停机时间。对于具有较少量数据的 MySQL 数据库,请参阅将数据从 MySQL 或 MariaDB 数据库导入到 Amazon RDS MySQL 或 MariaDB 数据库实例

相关主题