将数据从外部 MySQL 数据库迁移到 Amazon Aurora MySQL 数据库集群 - Amazon Aurora
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

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

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

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

您可以将完整备份文件和增量备份文件从源 MySQL 5.5、5.6 或 5.7 版数据库复制到 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 数据库集群 (在创建该集群后):

您无法从加密的源数据库中还原,但可以加密正在迁移的数据。您也可以在迁移过程中不加密数据。

您无法从在默认 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。

注意

对于 MySQL 5.7 迁移,您必须使用 Percona XtraBackup 2.4。对于更早的 MySQL 版本,使用 Percona XtraBackup 2.3 或 2.4。

所需权限

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

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

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

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

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

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

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

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "iam:ListRoles", "iam:CreateRole", "iam:CreatePolicy", "iam:AttachRolePolicy", "s3:ListBucket", "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 用户权限的更多信息,请参阅使用策略管理访问权限

创建 IAM 服务角色

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

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

为 Aurora 创建 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。

Aurora 将上传到 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. 在 Amazon RDS 控制台右上角,选择要在其中创建数据库集群的 AWS 区域。选择与包含数据库备份的 Amazon S3 存储桶相同的 AWS 区域。

  3. 在导航窗格中,选择 Databases (数据库),然后选择 Restore from S3 (从 S3 还原)

  4. 选择 Restore from S3(从 S3 还原)。

    此时将显示 Create database by restoring from S3(通过从 S3 还原创建数据库)页面。

    
                                您指定从 S3 还原数据库集群的详细信息的页面
  5. S3 destination(S3 目标)下:

    1. 选择包含备份文件的 S3 存储桶

    2. (可选)对于 S3 文件夹路径前缀,输入存储在 Amazon S3 存储桶中的文件的文件路径前缀。

      如果未指定前缀,则 RDS 使用 S3 存储桶的根文件夹中的所有文件和文件夹创建数据库实例。如果指定了前缀,则 RDS 使用 S3 存储桶中文件路径以指定前缀开头的文件和文件夹创建数据库实例。

      例如,假设将备份文件存储在 S3 上名为 backups 的子文件夹中,并且具有多组备份文件,每个文件位于自己的目录 (gzip_backup1、gzip_backup2,依此类推) 中。在这种情况下,请指定 backups/gzip_backup1 前缀以从 gzip_backup1 文件夹中的文件还原。

  6. Engine options(引擎选项)下:

    1. 对于 Engine type(引擎类型),选择 Amazon Aurora

    2. 对于 Version(版本),为还原的数据库实例选择 Aurora MySQL 引擎版本。

  7. 对于IAM role(IAM 角色),您可以选择现有 IAM 角色。

  8. (可选)您还可以通过选择 Create a new role(创建新角色)为自己创建新的 IAM 角色。如果是这样:

    1. 请输入 IAM role name(IAM 角色名称)。

    2. 选择是否允许访问 KMS 密钥

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

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

      • 如果在将备份文件上传到 Amazon S3 时使用 AWS-KMS (SSE-KMS) 服务器端加密功能加密这些文件,请选择。接下来,为主密钥选择正确的主密钥。

        AWS 管理控制台 将创建一个 IAM 策略以允许 Aurora 解密数据。

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

  9. 选择数据库集群的设置,例如数据库集群标识符和登录凭证。有关每项设置的信息,请参阅 Aurora 数据库集群的设置

  10. 根据需要自定义 Aurora MySQL 数据库集群的其他设置。

  11. 选择 Create database(创建数据库)以启动您的 Aurora 数据库实例。

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

要查看新创建的集群,请在 Amazon RDS 控制台中选择 Databases(数据库) 视图,然后选择数据库集群。有关更多信息,请参阅查看 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 格式的文件。

配置外部 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/TLS 与 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/TLS 与 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. 确定复制的开始二进制日志位置。您可以在稍后步骤中指定启动复制的位置。

    使用 AWS 管理控制台

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

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

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

      
                                            查看 MySQL 主数据库

    使用 AWS CLI

    您也可以从 AWS CLI 中调用 describe-events 命令以获取 binlog 文件名和位置。下面显示了示例 describe-events 命令。

    PROMPT> aws rds describe-events

    在输出中,确定显示二进制日志位置的事件。

  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 <db_cluster_endpoint>

    主机名是 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 数据库执行该操作的讨论,请参阅将数据导入到 MySQL 或 MariaDB 数据库实例中,同时减少停机时间。对于具有较少量数据的 MySQL 数据库,请参阅将数据从 MySQL 或 MariaDB 数据库导入到 MySQL 或 MariaDB 数据库实例