

# 连接到 Amazon Aurora Global Database
<a name="aurora-global-database-connecting"></a>

 每个 Aurora Global Database 都有一个写入器端点，Aurora 会自动更新该端点，以将请求路由到主数据库集群的当前写入器实例。有了写入器端点，您在使用托管式 Aurora Global Database 切换和失效转移功能更改主区域的位置后，便无需修改连接字符串。要了解有关使用写入器端点以及 Aurora Global Database 切换和失效转移的更多信息，请参阅[在 Amazon Aurora Global Database 中使用切换或失效转移](aurora-global-database-disaster-recovery.md)。有关使用 RDS 代理连接到 Aurora Global Database 的信息，请参阅[在 Aurora Global Database 中使用 RDS 代理](https://docs.aws.amazon.com/AuroraUserGuide/rds-proxy-gdb.html)。

**Topics**
+ [选择满足您的应用程序需求的端点](#gdb-endpoint-choosing)
+ [查看 Amazon Aurora Global Database 的端点](#viewing-endpoints)
+ [使用全局写入器端点时的注意事项](#global-writer-endpoint-considerations)

## 选择满足您的应用程序需求的端点
<a name="gdb-endpoint-choosing"></a>

 是否连接到 Aurora Global Database 取决于您对数据库的读取或写入需求，以及您要将请求路由到的 AWS 区域。以下是一些典型的使用案例：
+  **将请求路由到写入器实例**：如果您需要运行数据操作语言（DML）和数据定义语言（DDL）语句，或者如果您需要在读取和写入之间保持强一致性，请连接到 Aurora Global Database 写入器端点。该端点将请求路由到您的全局数据库主集群中的写入器实例。该端点会自动更新以将请求路由到写入器实例，从而无需在每次更改全局集群中的写入器位置时更新应用程序。您还可以使用全局端点向写入器发送跨区域读/写请求。
**注意**  
 如果您在 Aurora Global Database 写入器端点可用之前设置全局数据库，则您的应用程序可能会连接到主集群的集群端点。在这种情况下，建议将连接设置切换为使用全局写入器端点。这样一来，就无需在每次 Aurora Global Database 切换或失效转移后更改连接设置。  
 写入器端点名称的第一部分是您的 Aurora Global Database 的名称。因此，如果重命名 Aurora Global Database，则写入器端点名称会更改，使用该名称的任何代码都必须更新为新名称。
+  **将读取扩展至更接近应用程序的区域**：要在您的应用程序所在或附近的 AWS 区域中扩展只读请求，请连接到主或辅助 Aurora 集群的读取器端点。
+  **通过偶尔跨区域写入来扩展读取**：对于偶尔的 DML 语句（例如用于维护和数据清理），请连接到启用了写入转发的辅助集群的读取器端点。通过写入转发，Aurora 会自动将写入语句转发给 Aurora Global Database 主区域中的写入器。写入转发提供以下优势：
  +  您无需执行繁重的工作即可在辅助集群和主集群之间建立连接以发送跨区域写入。
  +  您无需在应用程序中拆分读取和写入请求。
  +  您无需开发复杂的逻辑来管理先写后读请求的一致性。

   但是，使用写入转发时，在执行跨区域失效转移或切换后，您确实需要更新应用程序代码或配置，才能连接到新提升的主区域的读取器端点。建议您监控通过写入转发完成的操作的延迟，以检查处理写入请求的开销。最后，写入转发不支持某些 MySQL 或 PostgreSQL 操作，例如更改数据定义语言（DDL）或执行 `SELECT FOR UPDATE` 语句。

   要了解有关跨 AWS 区域使用写入转发的更多信息，请参阅 [在 Amazon Aurora Global Database 中使用写入转发](aurora-global-database-write-forwarding.md)。

 有关不同类型的 Aurora 端点的详细信息，请参阅 [连接到 Amazon Aurora 数据库集群](Aurora.Connecting.md)。

## 查看 Amazon Aurora Global Database 的端点
<a name="viewing-endpoints"></a>

 当您在控制台中查看 Aurora Global Database 时，可以看到与其所有集群关联的所有端点。下图显示了您在查看主数据库集群详细信息时看到的端点类型的示例：
+  全局写入器 – 始终指向全局数据库集群的当前写入器数据库实例的单个读/写端点。
+  写入器 – 发送至全局数据库集群中主数据库集群的读/写请求的连接端点。
+  读取器 – 发送至全局数据库集群中主数据库集群或辅助数据库集群的只读请求的连接端点。为了最大限度地减少延迟，请选择您所在 AWS 区域或离您最近的 AWS 区域的任何读取器端点。

![\[在 RDS 控制台中，Aurora Global Database 的“连接和安全性”选项卡显示了全局写入器端点。\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/aurora-global-databases-primary-cluster-connectivity-2.png)


### 控制台
<a name="viewing-endpoints.console"></a>

**查看全局数据库的端点**

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1.  在导航窗格中，选择 **Databases (数据库)**。

1.  在列表中，选择要查看其端点的全局数据库，或者主数据库集群或辅助数据库集群。

1.  选择**连接和安全性**选项卡以查看端点详细信息。显示哪些端点取决于您选择的集群类型，如下所示：
   +  全局数据库 – 全局写入器端点。
   +  主数据库集群 – 全局写入器端点，以及主集群的集群端点和读取器端点。
   +  辅助数据库集群 – 辅助集群的集群端点和读取器端点。在辅助集群上，集群端点显示为**非活动**状态，因为它不处理写入请求。您仍可连接到集群端点，但仅限于读取查询。

### AWS CLI
<a name="viewing-endpoints.CLI"></a>

 要查看全局集群的写入器端点，请使用 AWS CLI [describe-global-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-global-clusters.html) 命令，如以下示例所示。

```
aws rds describe-global-clusters --region aws_region
{
    "GlobalClusters": [
        {
            "GlobalClusterIdentifier": "global_cluster_id",
            "GlobalClusterResourceId": "cluster-unique_string",
            "GlobalClusterArn": "arn:aws:rds::123456789012:global-cluster:global_cluster_id",
            "Status": "available",
            "Engine": "aurora-mysql",
            "EngineVersion": "5.7.mysql_aurora.2.11.2",
            "GlobalClusterMembers": [

              ...
            ],
            "Endpoint": "global_cluster_id.global-unique_string.global.rds.amazonaws.com"
        }
    ]
}
```

 要查看全局集群的成员数据库集群的集群端点和读取器端点，请使用 AWS CLI [describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-clusters.html) 命令，如以下示例所示。`Endpoint` 和 `ReaderEndpoint` 的返回值分别是集群端点和读取器端点。

```
aws rds describe-db-clusters --region primary_region --db-cluster-identifier db_cluster_id
{
    "DBClusters": [
        {
            "AllocatedStorage": 1,
            "AvailabilityZones": [
                "az_1",
                "az_2",
                "az_3"
            ],
            "BackupRetentionPeriod": 1,
            "DBClusterIdentifier": "db_cluster_id",
            "DBClusterParameterGroup": "default.aurora-mysql5.7",
            "DBSubnetGroup": "default",
            "Status": "available",
            "EarliestRestorableTime": "2023-08-01T18:21:11.301Z",
            "Endpoint": "db_cluster_id.cluster-unique_string.primary_region.rds.amazonaws.com",
            "ReaderEndpoint": "db_cluster_id.cluster-ro-unique_string.primary_region.rds.amazonaws.com",
            "MultiAZ": false,
            "Engine": "aurora-mysql",
            "EngineVersion": "5.7.mysql_aurora.2.11.2",

            "ReadReplicaIdentifiers": [
                "arn:aws:rds:secondary_region:123456789012:cluster:db_cluster_id"
            ],
            "DBClusterMembers": [
                {
                    "DBInstanceIdentifier": "db_instance_id",
                    "IsClusterWriter": true,
                    "DBClusterParameterGroupStatus": "in-sync",
                    "PromotionTier": 1
                }
            ],

            ...
            "TagList": [],
            "GlobalWriteForwardingRequested": false
        }
    ]
}
```

### RDS API
<a name="viewing-endpoints.API"></a>

 要查看全局集群的写入器端点，请使用 RDS API [DescribeGlobalClusters](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeGlobalClusters.html) 操作。要查看全局集群的成员数据库集群的集群端点和读取器端点，请使用 RDS API [DescribeDBClusters](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html) 操作。

## 使用全局写入器端点时的注意事项
<a name="global-writer-endpoint-considerations"></a>

 您可以按照以下指南和最佳实践来有效利用 Aurora Global Database 写入器端点：
+  为了更大限度地减少跨区域失效转移或切换后的中断，您可以在应用程序计算与主区域和辅助 AWS 区域之间设置 VPC 连接。例如，假设您的应用程序或客户端系统与主集群在同一 VPC 中运行。如果辅助集群已提升，则全局写入器端点会自动更改为指向该集群。尽管全局写入器端点使您能够避免更改应用程序的连接设置，但在两个 VPC 之间设置网络之前，您的应用程序无法访问新提升的主 AWS 区域 VPC 中的 IP 地址。要评估设置此连接的不同选项，请参阅 [Amazon VPC 到 Amazon VPC 的连接选项](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/amazon-vpc-to-amazon-vpc-connectivity-options.html)。
+  全球数据库失效转移或切换后的全局写入器端点更新可能需要很长时间，具体取决于您的域名服务（DNS）缓存持续时间。要了解更多信息，请参阅 [Amazon Aurora MySQL Database Administrator's Handbook](https://docs.aws.amazon.com/pdfs/whitepapers/latest/amazon-aurora-mysql-db-admin-handbook/amazon-aurora-mysql-db-admin-handbook.pdf)。Aurora Global Database 在发现全局写入器端点上的 DNS 更改时会触发 RDS 事件。您可以使用该事件来设计策略，以确保 DNS 缓存不会超过事件生成后的时间。有关更多信息，请参阅[数据库集群事件](USER_Events.Messages.md#USER_Events.Messages.cluster)。
+  Aurora Global Database 以异步方式复制数据。跨区域失效转移方法可能导致一些写入事务数据在启动失效转移之前没有复制到所选的辅助实例。尽管 Aurora 会尽量尝试阻止原始主 AWS 区域中的写入，但失效转移可能会受到脑裂问题的影响。尽量减少数据丢失和脑裂风险的注意事项也适用于 Aurora Global Database 写入器端点。有关更多信息，请参阅[执行 Aurora 全球数据库的托管式失效转移](aurora-global-database-disaster-recovery.md#aurora-global-database-failover.managed-unplanned)。