

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 设置 Amazon Neptune 全球数据库
<a name="neptune-gdb-setup"></a>

您可以通过以下方式之一创建 Neptune 全球数据库：
+ [使用所有新的数据库集群和实例创建全球数据库](#neptune-gdb-creating-cli)。
+ [使用现有 Neptune 数据库集群作为主集群创建全球数据库](#neptune-gdb-add-existing)。

**Topics**
+ [Amazon Neptune 中全球数据库的配置要求](#neptune-gdb-setup-config)
+ [使用在 AWS CLI Amazon Neptune 中创建全球数据库](#neptune-gdb-creating-cli)
+ [将现有数据库集群转换为全球数据库](#neptune-gdb-add-existing)
+ [在 Amazon Neptune 中向主区域添加辅助全球数据库区域](#neptune-gdb-attaching)
+ [连接到 Neptune 全球数据库](#neptune-gdb-connect)

## Amazon Neptune 中全球数据库的配置要求
<a name="neptune-gdb-setup-config"></a>

Neptune 全球数据库至少跨越两个。 AWS 区域主 AWS 区域 包含具有一个写入器实例的 Neptune 数据库集群。一到五个辅助 AWS 区域 中的每一个区域都包含一个只读 Neptune 数据库集群，该集群完全由只读副本实例组成。至少需要一所 AWS 区域 中学。

组成全球数据库的 Neptune 数据库集群具有以下特定要求：
+ **数据库实例类要求** — 全球数据库需要针对内存密集型工作负载进行优化的 `r5` 或 `r6g` 数据库实例类，例如 `db.r5.large` 实例类型。
+ **AWS 区域 要求** — 全局数据库需要一个主 Neptune 数据库集群合而为一 AWS 区域，并且至少需要一个位于不同区域的辅助 Neptune 数据库集群。您最多可以创建五个辅助只读 Neptune 数据库集群，每个集群必须在不同的区域中。换句话说，Neptune 全球数据库中没有两个 Neptune 数据库集群可位于同一个 AWS 区域中。
+ **引擎版本要求** — 全球数据库中的所有数据库集群使用的 Neptune 引擎版本应相同，并且必须大于或等于 `1.2.0.0`。如果您在创建新的全球数据库、集群或实例时未指定引擎版本，则将使用最新的引擎版本。

**重要**  
尽管可以为全球数据库中的每个数据库集群单独配置数据库集群参数组，但最好在集群之间保持设置的一致性，以避免在必须将辅助集群提升为主集群时出现意外行为变化。例如，对于所有数据库集群中的对象索引、流等使用相同设置。

## 使用在 AWS CLI Amazon Neptune 中创建全球数据库
<a name="neptune-gdb-creating-cli"></a>

**注意**  
本节中的示例遵循使用反斜杠 (`\`) 作为行扩展符的 UNIX 惯例。对于 Windows，请用尖号 (`^`) 代替反斜杠。

**要使用创建全局数据库 AWS CLI**

1. 首先使用`[create-global-cluster](https://docs.aws.amazon.com/cli/latest/reference/neptune/create-global-cluster.html)` AWS CLI 命令（封装 [CreateGlobalCluster](api-global-dbs.md#CreateGlobalCluster) API）创建一个空的全局数据库。指定要作为主区域的 AWS 区域 的名称，将 Neptune 设置为数据库引擎，也可选择指定要使用的引擎版本（必须为 1.2.0.0 或更高版本）：

   ```
   aws neptune create-global-cluster
     --region (primary region, such as us-east-1) \
     --global-cluster-identifier (ID for the global database) \
     --engine neptune \
     --engine-version (engine version; this is optional)
   ```

1. 全球数据库可能需要几分钟才能可用，因此在转入下一步之前，请使用 `[describe-global-clusters](https://docs.aws.amazon.com/cli/latest/reference/neptune/describe-global-clusters.html)` CLI 命令（用于封装 [DescribeGlobalClusters](api-global-dbs.md#DescribeGlobalClusters) API）检查全球数据库是否可用：

   ```
   aws neptune describe-global-clusters \
     --region (primary region) \
     --global-cluster-identifier (global database ID)
   ```

1. 在 Neptune 全球数据库变为可用后，您可以创建一个新的 Neptune 数据库集群作为其主集群：

   ```
   aws neptune create-db-cluster \
     --region (primary region) \
     --db-cluster-identifier (ID for the primary DB cluster) \
     --engine neptune \
     --engine-version (engine version; must be >= 1.2.0.0) \
     --global-cluster-identifier (global database ID)
   ```

1. 使用`[describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/neptune/describe-db-clusters.html)` AWS CLI 命令确认新的数据库集群已准备就绪，可以添加其主数据库实例：

   ```
   aws neptune describe-db-clusters \
     --region (primary region) \
     --db-cluster-identifier (primary DB cluster ID)
   ```

   当响应显示 `"Status": "available"` 时，继续执行下一步。

1. 使用`[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/neptune/create-db-instance.html)` AWS CLI 命令为主集群创建主数据库实例。您必须使用内存优化型 `r5` 或 `r6g` 实例类型之一，例如 `db.r5.large`。

   ```
   aws neptune create-db-instance \
     --region (primary region) \
     --db-cluster-identifier (primary cluster ID) \
     --db-instance-class (instance class) \
     --db-instance-identifier (ID for the DB instance) \
     --engine neptune \
     --engine-version (optional: engine version)
   ```

**注意**  
如果您计划使用 Neptune 批量加载程序向新的主数据库集群添加数据，请在添加辅助区域*之前*执行此操作。这比在全球数据库完全设置完毕后执行批量加载更快、更具成本效益。

现在，向新的全球数据库添加一个或多个辅助区域，如[使用添加次要区域 AWS CLI](#neptune-gdb-attach-cli)中所述。

## 将现有数据库集群转换为全球数据库
<a name="neptune-gdb-add-existing"></a>

要将现有数据库集群转换为全局数据库，请使用`[create-global-cluster](https://docs.aws.amazon.com/cli/latest/reference/neptune/create-global-cluster.html)` AWS CLI 命令创建一个与现有数据库集群所在位置 AWS 区域 相同的新全局数据库，并将其`--source-db-cluster-identifier`参数设置为位于此处的现有集群的 Amazon 资源名称 (ARN)：

```
aws neptune create-global-cluster \
  --region (region where the existing cluster is located) \
  --global-cluster-identifier (provide an ID for the new global database) \
  --source-db-cluster-identifier (the ARN of the existing DB cluster) \
  --engine neptune \
  --engine-version (engine version; this is optional)
```

现在，向新的全球数据库添加一个或多个辅助区域，如[使用添加次要区域 AWS CLI](#neptune-gdb-attach-cli)中所述。

### 使用从快照还原的数据库集群作为主集群
<a name="neptune-gdb-use-snapshot"></a>

您可以将从快照还原的数据库集群转换成 Neptune 全球数据库。完成还原后，将它创建的数据库集群转换为新的全球数据库的主集群，如上所述。

## 在 Amazon Neptune 中向主区域添加辅助全球数据库区域
<a name="neptune-gdb-attaching"></a>

Neptune 全局数据库需要至少一个辅助 Neptune 数据库集群位于与主数据库集群 AWS 区域 不同的集群中。您最多可以将五个辅助数据库集群附加到主数据库集群。

您添加的每个辅助数据库集群都会将主集群上可拥有的最大只读副本实例数减少一个。例如，如果有 4 个辅助集群，则主集群上可以拥有的最大只读副本实例数为 `15 - 4 = 11`。这意味着，如果主数据库集群和一个辅助集群中已经有 14 个读取器实例，则无法添加另一个辅助集群。

### 在 AWS CLI Neptune 中使用向全局数据库添加辅助区域
<a name="neptune-gdb-attach-cli"></a>

**要将辅助数据库添加 AWS 区域 到 Neptune 全局数据库，请使用 AWS CLI**

1. 使用`[create-db-cluster](https://docs.aws.amazon.com/cli/latest/reference/neptune/create-db-cluster.html)` AWS CLI 命令在与主集群不同的区域创建新的数据库集群，并设置其`--global-cluster-identifier`参数以指定全局数据库的 ID：

   ```
   aws neptune create-db-cluster \
     --region (the secondary region) \
     --db-cluster-identifier (ID for the new secondary DB cluster) \
     --global-cluster-identifier (global database ID)
     --engine neptune \
     --engine-version (optional: engine version)
   ```

1. 使用`[describe-db-clusters](https://docs.aws.amazon.com/cli/latest/reference/neptune/describe-db-clusters.html)` AWS CLI 命令确认新的数据库集群已准备就绪，可以添加其主数据库实例：

   ```
   aws neptune describe-db-clusters \
     --region (primary region) \
     --db-cluster-identifier (primary DB cluster ID)
   ```

   当响应显示 `"Status": "available"` 时，继续执行下一步。

1. 使用`[create-db-instance](https://docs.aws.amazon.com/cli/latest/reference/neptune/create-db-instance.html)` AWS CLI 命令为主集群创建主数据库实例，使用`r5`或实例类中的`r6g`实例类型：

   ```
   aws neptune create-db-instance \
     --region (secondary region) \
     --db-cluster-identifier (secondary cluster ID) \
     --db-instance-class (instance class) \
     --db-instance-identifier (ID for the DB instance) \
     --engine neptune \
     --engine-version (optional: engine version)
   ```

**注意**  
如果您不打算在辅助区域中处理大量读取请求，而主要关心的是将数据可靠地备份到辅助区域，则可以创建一个没有数据库实例的辅助数据库集群。这样可以节省资金，因为这样您只需为辅助集群的存储付费，而 Neptune 会将此存储与主数据库集群中的存储保持同步。

## 连接到 Neptune 全球数据库
<a name="neptune-gdb-connect"></a>

连接到 Neptune 全球数据库的方式取决于您是需要写入数据库还是从数据库读取：
+ 对于只读请求或查询，请连接到 AWS 区域中 Neptune 集群的读取器端点。
+ 要运行突变查询，请连接到主数据库集群的集群终端节点，该集群可能与您的应用程序 AWS 区域 不同。