Aurora 全局数据库入门 - Amazon Aurora
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

Aurora 全局数据库入门

要开始使用 Aurora 全局数据库,请创建 Aurora 集群并添加一个或多个辅助 AWS 区域。您可以在添加辅助 AWS 区域之前或之后将数据加载到集群中。

创建 Aurora 全局数据库

Aurora 全局数据库跨多个 AWS 区域。首先,您需要创建全局数据库本身以及读/写主集群。然后,在其他 AWS 区域中添加一个或多个只读辅助集群。

当您为主集群和辅助集群指定名称时,请选择与现有 Aurora 集群不同的名称,即使这些集群位于其他 AWS 区域中。

重要

在创建 Aurora 全局数据库之前,请按照 Amazon RDS 用户指南中的设置 Amazon RDS 中的介绍针对您的账户、网络和安全设置完成设置任务。

要使用控制台创建 Aurora MySQL 版本 5.6.10a 的全局数据库,请参阅第二个过程。

创建 Aurora 全局数据库

  1. 从现有 Aurora 集群开始或者创建新集群。使用 Aurora MySQL 1.22.0 或更高版本、Aurora MySQL 2.07 或更高版本,或 Aurora PostgreSQL 10.11 版本。有关创建集群的更多信息,请参阅创建数据库集群并连接到 Aurora MySQL 数据库集群上的数据库创建数据库集群并连接到 Aurora PostgreSQL 数据库集群上的数据库

  2. 创建 Aurora 集群并可供使用后,创建一个或多个辅助集群。为此,请按照将 AWS 区域添加到 Aurora 全局数据库中的步骤进行操作。每个辅助集群位于与原始集群不同的 AWS 区域中。

Aurora MySQL 版本 5.6.10a 要求在创建集群时选择使集群与 Aurora 全局数据库兼容。仅当使用此 Aurora MySQL 版本创建集群时才会在 AWS 管理控制台 中看到 Global (全局) 选项。对于 Aurora MySQL 版本 1.22 及更高版本,您可以将任何集群与 Aurora 全局数据库一起使用,而无需在创建集群时进行任何特殊选择。

对于 5.6.10a 和 1.22 之间的 Aurora MySQL 版本,在创建集群时不需要做任何特殊选择。但是,要在 Aurora 全局数据库中使用此类集群,请确保首先将其升级到 Aurora MySQL 版本 1.22 或更高版本。

创建 Aurora MySQL 全局数据库(仅 5.6.10a 版本)

  1. 登录 AWS 管理控制台,并针对提供 Aurora 全局数据库的 AWS 区域打开 Amazon RDS 控制台。有关更多信息,请参阅Aurora 全局数据库的限制

  2. 选择创建数据库

  3. 选择引擎页面上,选择 Aurora 引擎,并对 Database location (数据库位置) 选择 Global (全局)。有关示例,请参阅下面的图像。

    注意

    确保选择的是标准创建标准创建显示 Aurora 全局数据库所需的选项。请勿选择轻松创建

    1. 选择 Amazon Aurora 作为引擎:

      
                    创建数据库时引擎选项选择的屏幕截图。
    2. 选择 Amazon Aurora with MySQL compatibility (与 MySQL 兼容的 Amazon Aurora)

    3. 选择 Version (版本) 5.6.10a。

    4. 选择 Global (全局) 作为数据库位置:

      
                    创建 Aurora 集群时数据库位置选择的屏幕截图。选择“global (全局)”以创建 Aurora 全局数据库。
      注意

      选择 Global (全局) 将设置全局数据库和主 Aurora 集群。一旦全局数据库创建且可用,即可添加辅助 AWS 区域。

  4. 对于其他 Aurora 集群使用相同的决策流程以填写剩余设置。有关创建 Aurora 数据库集群的更多信息,请参阅创建 Amazon Aurora 数据库集群

    
                屏幕截图显示创建 Aurora 全局数据库时的补充设置。
  5. 选择 Create

当主数据库集群已创建并可用时,按照将 AWS 区域添加到 Aurora 全局数据库中的步骤创建一个或多个辅助集群。

要使用 CLI 创建 Aurora 全局数据库,请使用以下过程之一:

  • 创建 Aurora 全局数据库,然后添加主要 AWS 区域并在该 AWS 区域中添加数据库实例。

  • 首先创建主集群,然后创建全局数据库,同时指定要用作主集群的集群。

创建 Aurora 全局数据库,然后添加主 AWS 区域和数据库实例

  1. 创建 Aurora 全局数据库,然后添加主 AWS 区域集群。

    1. 创建 Aurora 全局数据库本身。最初,没有集群与之关联。使用以下值:

      • 在 Aurora MySQL 中,对 --engine 参数指定 aurora

      • 在 Aurora PostgreSQL 中,对 --engine 参数指定 aurora-postgresql,并对 --engine-version 参数指定 10.11

      对于 Linux、macOS 或 Unix:

      aws rds create-global-cluster --region primary_region \ --global-cluster-identifier global_database_id \ --engine engine_type \ --engine-version version # optional

      对于 Windows:

      aws rds create-global-cluster ^ --global-cluster-identifier global_database_id ^ --engine engine_type ^ --engine-version version # optional

      要了解有关其他选项的更多信息,请参阅create-global-cluster

    2. 使用 AWS CLI describe-global-clusters 命令检查 Aurora 全局数据库是否已变为可用状态,如下例所示。

      aws rds describe-global-clusters --region primary_region --global-cluster-identifier global_database_id # ID is optional

      当结果显示状态为 available 时,继续执行下一步。

    3. 为 Aurora 全局数据库创建主集群。为此,使用 AWS CLI create-db-cluster 命令。指定您创建全局数据库时的相同 --global-cluster-identifier 值。

      • 在 Aurora MySQL 中,对 --engine 参数指定 aurora

      • 在 Aurora PostgreSQL 中,对 --engine 参数指定 aurora-postgresql,并对 --engine-version 参数指定 10.11

      对于 Linux、macOS 或 Unix:

      aws rds create-db-cluster \ --region primary_region \ --db-cluster-identifier db_cluster_id \ --master-username master_userid \ --master-user-password master_password \ --engine { aurora | aurora-mysql | aurora-postgresql } \ --engine-version version \ --global-cluster-identifier global_database_id

      对于 Windows:

      aws rds create-db-cluster ^ --region primary_region ^ --db-cluster-identifier db_cluster_id ^ --master-username master_userid ^ --master-user-password master_password ^ --engine { aurora | aurora-mysql | aurora-postgresql } ^ --engine-version version ^ --global-cluster-identifier global_database_id
      注意

      对于 Aurora MySQL 版本 5.6.10a,您还需要为 --engine-mode 参数指定 global

      要了解有关其他选项的更多信息,请参阅create-db-cluster

    4. 使用 AWS CLI describe-db-clusters 命令检查 Aurora 集群是否已变为可用状态,如下例所示。

      aws rds describe-db-clusters --region primary_region --db-cluster-identifier db_cluster_id # ID is optional

      当结果显示状态为 available 时,继续执行下一步。

  2. 为主集群创建主数据库实例。为此,使用 AWS CLI create-db-instance 命令。

    • 按如下所示指定 --engine 参数:

      • 对于 Aurora MySQL 版本 1 或 5.6.10a,请使用 --engine aurora

      • 对于 Aurora MySQL 版本 2,请使用 --engine aurora-mysql

      • 对于 Aurora PostgreSQL,请使用 --engine aurora-postgresql

    • (可选)指定 --engine-version 参数以选择要使用的特定版本。

    • 对于 Aurora MySQL 版本 5.6.10a,请指定 --engine-mode global

    下面的示例演示如何操作。

    对于 Linux、macOS 或 Unix:

    aws rds create-db-instance \ --db-cluster-identifier db_cluster_id \ --db-instance-class instance_class \ --db-instance-identifier db_instance_id \ --engine { aurora | aurora-mysql | aurora-postgresql} \ --engine-version version \ --region primary_region

    对于 Windows:

    aws rds create-db-instance ^ --db-cluster-identifier db_cluster_id ^ --db-instance-class instance_class ^ --db-instance-identifier db_instance_id ^ --engine { aurora | aurora-mysql | aurora-postgresql } ^ --engine-version version ^ --region primary_region

    您无需包含 --master-username--master-user-password 参数,因为这些值是从主数据库集群中获取的。

    要了解有关其他选项的更多信息,请参阅create-db-instance

  3. 使用 AWS CLI describe-db-clusters 命令检查 Aurora 全局数据库的主集群是否已变为可用状态,如下例所示。

    aws rds describe-db-clusters --db-cluster-identifier sample-global-cluster
  4. describe-db-clusters 结果显示状态 available 时,创建主集群的主实例以便复制能够开始。为此,请使用 AWS CLI create-db-instance 命令,如以下示例中所示。

    对于 Linux、macOS 或 Unix:

    aws rds create-db-instance \ --db-cluster-identifier sample-global-cluster \ --db-instance-class instance_class \ --db-instance-identifier sample-replica-instance \ --engine aurora

    对于 Windows:

    aws rds create-db-instance ^ --db-cluster-identifier sample-global-cluster ^ --db-instance-class instance_class ^ --db-instance-identifier sample-replica-instance ^ --engine aurora

    在数据库实例已创建并可用后,复制将开始。您可以调用 AWS CLI describe-db-instances 命令以确定数据库实例是否可用。

作为替代过程,您可以先创建主数据库集群,然后再创建全局数据库。

通过创建主数据库集群,然后创建 Aurora 全局数据库来创建全局数据库

  1. 创建空 Aurora 数据库集群。

    • 对于 Aurora MySQL 版本 5.6.10a,请指定以下参数和值:

      • --engine aurora

      • --engine-version 5.6.10a

      • --engine-mode global

        此设置仅与 aurora --engine 设置结合使用。

    • 对于 Aurora PostgreSQL,指定以下参数和值:

      • --engine aurora-postgresql

      • --engine-version 10.11

    对于 Linux、macOS 或 Unix:

    aws rds --region primary_region \ create-db-cluster \ --db-cluster-identifier primary_cluster_id \ --master-username master_userid \ --master-user-password master_password \ --engine { aurora | aurora-mysql | aurora-postgresql } \ --engine-version version aws rds --region primary_region \ create-db-instance \ --db-instance-class instance_class \ --db-cluster-identifier primary_cluster_id \ --db-instance-identifier db_instance_id \ --engine { aurora | aurora-mysql | aurora-postgresql }

    对于 Windows:

    aws rds --region primary_region ^ create-db-cluster ^ --db-cluster-identifier primary_cluster_id ^ --master-username master_userid ^ --master-user-password master_password ^ --engine { aurora | aurora-mysql | aurora-postgresql } ^ --engine-version version aws rds --region primary_region ^ create-db-instance ^ --db-instance-class instance_class ^ --db-cluster-identifier primary_cluster_id ^ --db-instance-identifier db_instance_id ^ --engine { aurora | aurora-mysql | aurora-postgresql }
  2. 使用以下值在 Aurora 数据库集群中创建数据库实例:

    • 对于 Aurora MySQL 版本 5.6.10a,请指定 --engine aurora--engine-mode global

    • 对于 Aurora PostgreSQL,请指定 --engine aurora-postgresql

    以下是 Aurora PostgreSQL 示例:

    对于 Linux、macOS 或 Unix:

    aws rds --region primary_region \ create-db-instance \ --db-instance-class instance_class \ --db-cluster-identifier primary_cluster_id \ --db-instance-identifier db_instance_id \ --engine aurora-postgresql

    对于 Windows:

    aws rds --region primary_region ^ create-db-instance ^ --db-instance-class instance_class ^ --db-cluster-identifier primary_cluster_id ^ --db-instance-identifier db_instance_id ^ --engine aurora-postgresql
  3. 创建主数据库集群和数据库实例并可用后,创建 Aurora 全局数据库。通过在要在其中创建 Aurora 全局数据库的 AWS 区域中调用 AWS CLI create-global-cluster 命令来执行此操作。使用 --source-db-cluster-identifier 参数指定之前创建的主数据库集群。

    对于 Linux、macOS 或 Unix:

    aws rds create-global-cluster \ --global-cluster-identifier global_database_id \ --source-db-cluster-identifier primary_cluster_ARN

    对于 Windows:

    aws rds create-global-cluster ^ --global-cluster-identifier global_database_id ^ --source-db-cluster-identifier primary_cluster_ARN

要使用 RDS API 创建 Aurora 全局数据库,请运行 CreateGlobalCluster 操作。

将 AWS 区域添加到 Aurora 全局数据库

在创建 Aurora 全局数据库及其主集群后,可以通过添加一个或多个新的 AWS 区域增加其全球覆盖范围。此过程涉及附加一个或多个辅助 Aurora 集群。每个辅助集群必须与主集群和任何其他辅助集群位于不同的 AWS 区域中。

注意

您可以附加到 Aurora 全局数据库的辅助 Aurora 集群的最大数量为 5。因此,您可以与全局数据库关联的集群最多为六个:一个带有读/写实例和可选读取器实例的主集群以及五个只读辅助集群。

对于全局数据库中的每个辅助集群,主集群中读取器数据库实例的最大数量减少 1。例如,如果您的全局数据库有 3 个辅助集群,则主集群中读取器数据库实例的最大数量为 12,而不是 15。在某些情况下,主集群中的读取器实例数加上辅助集群数可能总共 15 个。如果是这样,则无法将任何其他辅助集群添加到全局数据库。

将 AWS 区域添加到 Aurora 全局数据库

  1. 在 AWS 管理控制台的导航窗格中,选择 Databases (数据库)

  2. 选择您要为其创建辅助集群的 Aurora 全局数据库对应的复选框。如果主集群或其中的数据库实例仍处于 Creating 状态,请等待它们全部变为 Available

  3. 对于操作,选择添加区域

    
                屏幕截图显示 Aurora 全局数据库的“添加区域”选项。
  4. Add a region (添加区域) 页面上,选择辅助 AWS 区域。

    
                  屏幕截图显示 Aurora 全局数据库的“添加区域”对话框。
  5. 在新的 AWS 区域中填写辅助 Aurora 集群的其余字段,然后选择 Add region (添加区域)

要使用 AWS CLI 将 AWS 区域添加到 Aurora 全局数据库,请运行 create-db-cluster 命令。

以下命令创建一个新的 Aurora 集群,将其作为只读辅助集群附加到全局数据库,然后将数据库实例添加到新集群。create-db-cluster 命令的 --global-cluster-identifier 选项指定要附加新集群的全局数据库。按如下所示指定 --engine 参数:

  • 对于 Aurora MySQL 版本 1 或 5.6.10,请使用 --engine aurora

  • 对于 Aurora MySQL 版本 2,请使用 --engine aurora-mysql

  • 对于 Aurora PostgreSQL,请使用 --engine aurora-postgresql

对于加密的集群,指定 --source-region 选项以及与主 AWS 区域匹配的值。

以下是 Aurora PostgreSQL 示例:

对于 Linux、macOS 或 Unix:

aws rds --region secondary_region \ create-db-cluster \ --db-cluster-identifier secondary_cluster_id \ --global-cluster-identifier global_database_id \ --engine { aurora | aurora-mysql | aurora-postgresql } --engine-version version aws rds --region secondary_region \ create-db-instance \ --db-instance-class instance_class \ --db-cluster-identifier secondary_cluster_id \ --db-instance-identifier db_instance_id \ --engine { aurora | aurora-mysql | aurora-postgresql }

对于 Windows:

aws rds --region secondary_region ^ create-db-cluster ^ --db-cluster-identifier secondary_cluster_id ^ --global-cluster-identifier global_database_id_id ^ --engine { aurora | aurora-mysql | aurora-postgresql } ^ --engine-version version aws rds --region secondary_region ^ create-db-instance ^ --db-instance-class instance_class ^ --db-cluster-identifier secondary_cluster_id ^ --db-instance-identifier db_instance_id ^ --engine { aurora | aurora-mysql | aurora-postgresql }

要使用 RDS API 将新的 AWS 区域添加到 Aurora 全局数据库,请运行 CreateDBCluster 操作。使用 GlobalClusterIdentifier 参数指定现有全局数据库的标识符。

将数据导入 Aurora 全局数据库

要将数据导入 Aurora 全局数据库,请使用以下方法之一:

  • 创建 Aurora 集群或 Amazon RDS 数据库实例的快照,然后将其还原到 Aurora 全局数据库的主集群。目前,请确保所有导入快照所来自的源都必须与 Aurora MySQL 版本 1、Aurora MySQL 版本 2 或 Aurora PostgreSQL 10.11 兼容。

    下面显示了还原 Aurora MySQL 5.6 实例的示例。

    
            屏幕截图显示 Aurora 全局数据库的“还原快照”页面。
  • 对主集群使用时间点还原以便将集群数据还原到之前状态。有关更多信息,请参阅 将数据库集群还原至指定时间

Aurora 全局数据库的关键区别在于:您始终将数据导入您指定为主集群的集群。您可以在将该集群添加到 Aurora 全局数据库之前或之后执行初始数据导入。主集群中的所有数据自动复制到任何辅助集群。