Amazon Aurora
Aurora 用户指南 (API 版本 2014-10-31)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

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

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

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

注意

Amazon S3 存储桶和 Amazon Aurora MySQL 数据库集群必须位于同一 AWS 区域中。

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

您可以加密正在迁移的数据,也可以在迁移过程中不加密数据。

另外,确定您是否希望在迁移过程中使用二进制日志复制来最大程度降低停机时间。如果您使用二进制日志复制,则在将数据迁移到 Aurora MySQL 数据库集群时,外部 MySQL 数据库仍对事务保持开放。在创建 Aurora MySQL 数据库集群后,您可以使用二进制日志复制以将 Aurora MySQL 数据库集群与在备份后发生的事务同步。如果 Aurora MySQL 数据库集群与 MySQL 数据库一致,您可以完全切换到 Aurora MySQL 数据库集群以执行新事务,从而完成迁移。

开始之前

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

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

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

安装 Percona XtraBackup

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

注意

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

所需权限

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

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

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

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

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

  • 如果您打算在迁移过程中加密数据,请更新将要执行迁移操作的用户的 IAM 策略,以授予 RDS 对用于加密备份的 KMS 密钥的访问权限。有关说明,请参阅创建 IAM 策略以访问 AWS KMS 资源

例如,以下 IAM 策略为用户授予所需的最小权限以使用控制台列出 IAM 角色,创建 IAM 角色,列出您的账户的 Amazon S3 存储桶以及列出 KMS 密钥。

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

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

例如,以下 IAM 策略允许用户将名为 S3Access 的角色与 Amazon 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 服务角色

您可以在 AWS 管理控制台中选择创建新角色选项(本主题稍后介绍)以创建角色。如果您选择该选项并为新角色指定名称,Amazon RDS 将使用您提供的名称为 Amazon RDS 创建访问 Amazon S3 存储桶所需的 IAM 服务角色。

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

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

  1. 完成 创建 IAM 策略以访问 Amazon S3 资源 中的步骤。

  2. 完成 创建 IAM 角色以允许 Amazon Aurora 访问 AWS 服务 中的步骤。

  3. 完成 将 IAM 角色与 Amazon Aurora MySQL 数据库集群关联 中的步骤。

备份要还原为 Amazon Aurora MySQL 数据库集群的文件

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

使用 Percona XtraBackup 创建完整备份

要创建 MySQL 数据库文件的完整备份以从 Amazon S3 中还原这些文件以创建 Amazon Aurora MySQL 数据库集群,请使用 Percona XtraBackup 实用程序 (xtrabackup) 备份数据库。

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

xtrabackup --backup --user=<myuser> --password=<password> --target-dir=</on-premises/s3-restore/backup>

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

  • Gzip (.gz)

  • tar (.tar)

  • Percona xbstream (.xbstream)

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

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | gzip - | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar.gz

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

xtrabackup --backup --user=<myuser> --password=<password> --stream=tar \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.tar

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

xtrabackup --backup --user=<myuser> --password=<password> --stream=xbstream \ --target-dir=</on-premises/s3-restore/backup> | split -d --bytes=500MB \ - </on-premises/s3-restore/backup/backup>.xbstream

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

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

通过 Percona XtraBackup 使用增量备份

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

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

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

备份注意事项

将文件上传到 Amazon S3 存储桶时,您可以使用服务器端加密来加密数据。然后,您可以从这些加密的文件中还原 Amazon Aurora MySQL 数据库集群。Amazon Aurora MySQL 可以从使用以下类型的服务器端加密功能加密的文件还原数据库集群:

  • 使用具有 Amazon S3 托管密钥的服务器端加密 (SSE-S3) – 通过增强的多因素加密使用唯一密钥加密每个对象。

  • 使用具有 AWS KMS 托管密钥的服务器端加密 (SSE-KMS) – 与 SSE-S3 类似,但您可以选择自己创建和管理加密密钥,并且还具有其他一些区别。

有关在将文件上传到 Amazon S3 存储桶时使用服务器端加密的信息,请参阅 Amazon S3 开发人员指南 中的使用服务器端加密保护数据

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 按照字母顺序以及自然数字顺序使用您的备份文件。始终在您发出 split 命令时使用 xtrabackup 选项,以确保备份文件按适当的顺序写入和命名。

Aurora 不支持使用 Percona XtraBackup 创建的部分备份。在备份数据库的源文件时,不能使用以下选项创建部分备份:--tables--tables-exclude--tables-file--databases--databases-exclude--databases-file

有关使用 Percona XtraBackup 备份数据库的更多信息,请参阅 Percona 网站上的 Percona XtraBackup - 文档xtrabackup Binary

Aurora 支持使用 Percona XtraBackup 创建的增量备份。有关使用 Percona XtraBackup 创建增量备份的更多信息,请参阅增量备份

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

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

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

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

  2. 在导航窗格中,依次选择实例从 S3 还原

  3. 选择引擎页面上,选择 Amazon Aurora,选择与 MySQL 兼容的版本,然后选择下一步

  4. 指定源备份详细信息中,指定以下内容。

    对于该选项 执行该操作

    源引擎

    目前,Aurora MySQL 仅支持从 mysql 数据库引擎的备份文件还原。

    源引擎版本

    输入从中创建备份文件的 MySQL 数据库的版本。支持 MySQL 版本 5.5 和 5.6。在框中键入 5.55.6

    S3 存储桶

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

    S3 文件夹路径前缀 (可选)

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

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

    例如,假设您将备份文件存储在名为 backups 的 Amazon S3 存储桶的子文件夹中。另外,假设您有多个备份文件集,每一个都位于自己的目录 (gzip_backup1gzip_backup2 等等)。在这种情况下,请指定 backups/gzip_backup1 前缀以从 gzip_backup1 文件夹中的文件还原。

    创建新角色

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

    IAM 角色名称

    输入要创建的新 IAM 角色的名称。新角色用于授权 Amazon Aurora 代表您访问 Amazon S3。有关更多信息,请参阅所需权限

    IAM 角色

    选择您为授权 Aurora 代表您访问 Amazon S3 而创建的 IAM 角色。如果尚未创建 IAM 角色,您可以将创建新角色设置为以创建一个角色。有关更多信息,请参阅所需权限

    允许访问 KMS 密钥

    仅当创建新角色设置为时,该选项才可用。

    如果您不加密备份文件,请选择

    如果在将备份文件上传到 Amazon S3 时使用 AES-256 (SSE-S3) 加密这些文件,请选择。在这种情况下,数据会自动解密。

    如果在将备份文件上传到 Amazon S3 时使用 AWS-KMS (SSE-KMS) 服务器端加密功能加密这些文件,请选择。接下来,为主密钥选择正确的主密钥。AWS 管理控制台 将创建一个 IAM 策略以允许 Amazon RDS 解密数据。

    有关详情,请参阅 Amazon S3 开发人员指南 中的使用服务器端加密保护数据

    AWS-KMS 加密备份文件的典型指定源备份详细信息页面如下所示。

    
                                Amazon Aurora 从 Amazon S3 存储桶迁移
  5. 选择下一步

  6. 指定数据库详细信息页面上,指定数据库集群信息。下表显示数据库实例的设置。

    对于该选项 执行该操作

    数据库实例类

    选择定义数据库集群中每个实例的处理和内存要求的数据库实例类。有关数据库实例类的更多信息,请参阅选择数据库实例类

    多可用区部署

    确定是否要在其他可用区中创建 Aurora 副本以实现故障转移支持。如果您选择在不同区域创建副本,Amazon RDS 将在不同可用区的数据库集群中为您创建 Aurora 副本,而不是在数据库集群的主实例中创建。有关多可用区的详细信息,请参阅选择区域和可用区

    数据库实例标识符

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

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

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

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

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

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

    主用户名

    输入使用字母数字字符的名称,该名称将用作您登录数据库集群的主用户名。

    主密码

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

    典型的指定数据库详细信息页面类似如下所示。

    
                                Amazon Aurora 详细信息
  7. 确认您的主密码,然后选择 Next

  8. Configure advanced settings (配置高级设置) 页面上,可自定义您的 Aurora MySQL 数据库集群的其他设置。下表列出了数据库集群的高级设置。

    对于该选项 执行该操作

    Virtual Private Cloud (VPC)

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

    子网组

    选择要用于数据库集群的数据库子网组。 有关更多信息,请参阅本主题前面的数据库集群先决条件

    公开可用性

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

    可用区

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

    VPC 安全组

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

    DB Cluster Identifier

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

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

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

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

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

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

    数据库名称

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

    要创建其他数据库,请连接到数据库集群并使用 SQL 命令 CREATE DATABASE。有关连接到数据库集群的更多信息,请参阅连接到 Amazon Aurora 数据库集群

    数据库端口

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

    数据库参数组

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

    数据库集群参数组

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

    选项组

    Aurora 具有一个默认选项组。

    IAM 数据库身份验证

    选择启用 IAM 数据库身份验证以启用 IAM 数据库身份验证。有关更多信息,请参阅 的 IAM 数据库身份验证

    加密

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

    主密钥

    仅当加密设置为启用加密时可用。选择用于加密该数据库集群的主密钥。有关更多信息,请参阅加密 Amazon RDS 资源

    优先级

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

    备份保留期

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

    增强监测

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

    监控角色

    仅当增强监测设置为启用增强监测时可用。选择您创建的 IAM 角色以允许 Amazon RDS 与 Amazon CloudWatch Logs 通信,或选择默认以让 RDS 为您创建一个名为 rds-monitoring-role 的角色。有关更多信息,请参阅增强监测

    粒度

    仅当增强监测设置为启用增强监测时可用。设置为数据库集群收集指标的时间间隔(以秒为单位)。

    自动次要版本升级

    该设置不适用于 Aurora MySQL 数据库集群。

    有关 Aurora MySQL 引擎更新的更多信息,请参阅Amazon Aurora MySQL 的数据库引擎更新

    维护时段

    选择选择时段并指定可以进行系统维护的每周时间范围。或者,为 Amazon RDS 选择无首选项以随机分配一个时段。

  9. 选择创建数据库以启动您的 Aurora 数据库实例,然后选择关闭以关闭该向导。

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

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


                        Amazon Aurora 数据库实例列表

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

通过复制同步 Amazon Aurora MySQL 数据库集群和 MySQL 数据库

为了在迁移过程中实现最少或零停机时间,您可以将在 MySQL 数据库中提交的事务复制到 Aurora MySQL 数据库集群。通过复制,数据库集群可以与迁移期间发生的 MySQL 数据库上的事务保持一致。当数据库集群完全一致时,您可以停止复制并完成向 Aurora MySQL 的迁移。

配置外部 MySQL 数据库和 Aurora MySQL 数据库集群以进行加密复制

要安全地复制数据,您可以使用加密复制。

注意

如果您不需要使用加密复制,可以跳过以下步骤,然后继续参阅 同步 Amazon Aurora MySQL 数据库集群和外部 MySQL 数据库 中的说明。

以下是使用加密复制的先决条件:

  • 必须对外部 MySQL 主数据库启用安全套接字层 (SSL)。

  • 必须为 Aurora MySQL 数据库集群准备客户端密钥和客户端证书。

在加密复制期间,Aurora MySQL 数据库集群充当 MySQL 数据库服务器的客户端。Aurora MySQL 客户端的证书和密钥必须是 .pem 格式的文件。

注意

目前,仅 Aurora MySQL 5.6 版支持具有外部 MySQL 数据库的加密复制。

配置外部 MySQL 数据库和 Aurora MySQL 数据库集群以进行加密复制

  1. 确保您为加密复制做好以下准备:

    • 如果您未对外部 MySQL 主数据库启用 SSL,且未准备客户端密钥和客户端证书,请在 MySQL 数据库服务器上启用 SSL 并生成所需的客户端密钥和客户端证书。

    • 如果在外部主数据库上启用了 SSL,请提供 Aurora MySQL 数据库集群的客户端密钥和证书。如果未提供,请为 Aurora MySQL 数据库集群生成新密钥和证书。要对客户端证书签名,您必须拥有您用来在外部 MySQL 主数据库上配置 SSL 的证书颁发机构密钥。

    相关详情,请参阅 MySQL 文档中的使用 openssl 创建 SSL 证书和密钥

    您需要证书颁发机构证书、客户端密钥和客户端证书。

  2. 通过 SSL 以主用户身份连接到 Aurora MySQL 数据库集群。

    有关通过 SSL 连接到 Aurora MySQL 数据库集群的信息,请参阅将 SSL 与 Aurora MySQL 数据库集群配合使用

  3. 运行 mysql.rds_import_binlog_ssl_material 存储过程,以将 SSL 信息导入到 Aurora MySQL 数据库集群中。

    对于 ssl_material_value 参数,将 Aurora MySQL 数据库集群的 .pem 格式文件中的信息插入到正确的 JSON 负载中。

    以下示例将 SSL 信息导入到 Aurora MySQL 数据库集群中。在 .pem 格式文件中,主体代码通常比示例中显示的主体代码长。

    call mysql.rds_import_binlog_ssl_material( '{"ssl_ca":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_cert":"-----BEGIN CERTIFICATE----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END CERTIFICATE-----\n","ssl_key":"-----BEGIN RSA PRIVATE KEY----- AAAAB3NzaC1yc2EAAAADAQABAAABAQClKsfkNkuSevGj3eYhCe53pcjqP3maAhDFcvBS7O6V hz2ItxCih+PnDSUaw+WNQn/mZphTk/a/gU8jEzoOWbkM4yxyb/wB96xbiFveSFJuOp/d6RJhJOI0iBXr lsLnBItntckiJ7FbtxJMXLvvwJryDUilBMTjYtwB+QhYXUMOzce5Pjz5/i8SeJtjnV3iAoG/cQk+0FzZ qaeJAAHco+CY/5WrUBkrHmFJr6HcXkvJdWPkYQS3xqC0+FmUZofz221CBt5IMucxXPkX4rWi+z7wB3Rb BQoQzd8v7yeb7OzlPnWOyN0qFU0XA246RA8QFYiCNYwI3f05p6KLxEXAMPLE -----END RSA PRIVATE KEY-----\n"}');

    有关更多信息,请参阅 mysql_rds_import_binlog_ssl_material 将 SSL 与 Aurora MySQL 数据库集群配合使用

    注意

    运行该过程后,密钥会存储在文件中。要稍后删除文件,您可以运行 mysql_rds_remove_binlog_ssl_material 存储过程。

同步 Amazon Aurora MySQL 数据库集群和外部 MySQL 数据库

您可以使用复制,同步 Amazon Aurora MySQL 数据库集群和 MySQL 数据库。

通过复制同步 Aurora MySQL 数据库集群和 MySQL 数据库

  1. 确保外部 MySQL 数据库的 /etc/my.cnf 文件具有相关条目。

    如果不需要加密复制,请确保先为外部 MySQL 数据库启用二进制日志 (binlogs) 并禁用 SSL。以下是 /etc/my.cnf 文件中未加密数据的相关条目。

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1

    如果需要加密复制,请确保先为外部 MySQL 数据库启用 SSL 和二进制日志。/etc/my.cnf 文件的条目包括 MySQL 数据库服务器的 .pem 文件位置。

    log-bin=mysql-bin server-id=2133421 innodb_flush_log_at_trx_commit=1 sync_binlog=1 # Setup SSL. ssl-ca=/home/sslcerts/ca.pem ssl-cert=/home/sslcerts/server-cert.pem ssl-key=/home/sslcerts/server-key.pem

    您可以通过以下命令验证是否已启用 SSL。

    mysql> show variables like 'have_ssl';

    您的输出应类似于以下内容。

    +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ | Variable_name | Value | +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ | have_ssl | YES | +~-~-~-~-~-~-~-~-~-~-~-~-~-~--+~-~-~-~-~-~--+ 1 row in set (0.00 sec)
  2. 确定复制的开始二进制日志位置:

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

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

    3. 事件列表中,记下从二进制日志文件名还原事件的位置。

      
                                        查看 MySQL 主实例

      您可以在稍后步骤中指定启动复制的位置。

  3. 连接到外部 MySQL 数据库时,创建要用于复制的用户。此账户仅用于复制,并且必须仅供您的域使用以增强安全性。以下是示例。

    mysql> CREATE USER '<user_name>'@'<domain_name>' IDENTIFIED BY '<password>';

    该用户需要 REPLICATION CLIENTREPLICATION SLAVE 权限。向该用户授予这些权限。

    GRANT REPLICATION CLIENT, REPLICATION SLAVE ON *.* TO '<user_name>'@'<domain_name>';

    如果您需要使用加密复制,则需为复制用户要求 SSL 连接。例如,您可以使用以下语句来要求用户账户的 SSL 连接 <user_name>

    GRANT USAGE ON *.* TO '<user_name>'@'<domain_name>' REQUIRE SSL;

    注意

    如果不包括 REQUIRE SSL,则复制连接可能会无提示地返回到未加密连接。

  4. 在 Amazon RDS 管理控制台中,将托管外部 MySQL 数据库的服务器的 IP 地址添加到 Aurora MySQL 数据库集群的 VPC 安全组中。有关修改 VPC 安全组的更多信息,请参阅 Amazon Virtual Private Cloud 用户指南中的您的 VPC 的安全组

    您可能还需要配置本地网络以允许来自 Aurora MySQL 数据库集群的 IP 地址的连接,以便它能与外部 MySQL 数据库进行通信。要查找 Aurora MySQL 数据库集群的 IP 地址,请使用 host 命令。

    host RDS_MySQL_DB_<host_name>

    主机名是 Aurora MySQL 数据库集群终端节点中的 DNS 名称。

  5. 通过运行 mysql.rds_set_external_master 存储过程,启用二进制日志复制。此存储过程使用以下语法。

    CALL mysql.rds_set_external_master ( host_name , host_port , replication_user_name , replication_user_password , mysql_binary_log_file_name , mysql_binary_log_file_location , ssl_encryption );

    有关这些参数的信息,请参阅 mysql_rds_set_external_master

    对于 mysql_binary_log_file_namemysql_binary_log_file_location,使用您之前记下的从二进制日志文件名还原事件的位置。

    如果未加密 Aurora MySQL 数据库集群中的数据,则必须将 ssl_encryption 参数设置为 0。如果数据经过加密,则必须将 ssl_encryption 参数设置为 1

    以下示例为含有加密数据的 Aurora MySQL 数据库集群运行该过程。

    CALL mysql.rds_set_external_master( 'Externaldb.some.com', 3306, 'repl_user'@'mydomain.com', 'password', 'mysql-bin.000010', 120, 1);

    此存储过程设置了参数,Aurora MySQL 数据库集群使用此类参数连接到外部 MySQL 数据库并读取其二进制日志。如果数据经过加密,则它还会将 SSL 证书颁发机构证书、客户端证书和客户端密钥下载到本地磁盘。

  6. 通过运行 mysql.rds_start_replication 存储过程,启动二进制日志复制。

    CALL mysql.rds_start_replication;
  7. 监控 Aurora MySQL 数据库集群落后于 MySQL 副本主数据库的程度。为了做到这一点,请连接到 Aurora MySQL 数据库集群并运行以下命令。

    SHOW SLAVE STATUS;

    在命令输出中,Seconds Behind Master 字段显示 Aurora MySQL 数据库集群落后于 MySQL 主实例的程度。如果该值为 0(零),则表示 Aurora MySQL 数据库集群与主实例保持一致,您可以转到下一步以停止复制。

  8. 连接到 MySQL 副本主数据库并停止复制。为此,请运行以下命令。

    CALL mysql.rds_stop_replication;

使用 mysqldump 从 MySQL 迁移到 Amazon Aurora

因为 Amazon Aurora MySQL 是与 MySQL 兼容的数据库,所以您可以使用 mysqldump 实用程序从 MySQL 或 MariaDB 数据库中将数据复制到现有 Aurora MySQL 数据库集群。

有关如何为大型 MySQL 数据库执行该操作的讨论,请参阅将数据导入到 Amazon RDS MySQL 或 MariaDB 数据库实例中,同时减少停机时间。对于具有较少量数据的 MySQL 数据库,请参阅将数据从 MySQL 或 MariaDB 数据库导入到 Amazon RDS MySQL 或 MariaDB 数据库实例