

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定 Neptune 到 Neptune 複寫
<a name="streams-disaster-recovery-setup"></a>

您的主要生產資料庫叢集位於給定來源區域的 VPC 中。基於災難復原的目的，有三個您需要在不同的復原區域中複寫或模擬的主要項目：
+ 儲存在叢集中的資料。
+ 主要叢集的組態。這將包括它是否使用 IAM 身分驗證、它是否加密、其資料庫叢集參數、其執行個體參數、執行個體大小等等。
+ 它使用的網路拓撲，包括目標 VPC、其安全群組等等。

您可以使用如下的 Neptune 管理 API 來收集該資訊：
+ [`DescribeDBClusters`](api-clusters.md#DescribeDBClusters)
+ [`DescribeDBInstances`](api-instances.md#DescribeDBInstances)
+ [`DescribeDBClusterParameters`](api-parameters.md#DescribeDBClusterParameters)
+ [`DescribeDBParameters`](api-parameters.md#DescribeDBParameters)
+ [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcs.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_DescribeVpcs.html)

搭配您收集的資訊，您可以使用下列程序，在不同的區域中設定備份叢集，在發生失敗時，生產叢集可容錯移轉至其中。

## 啟用 Neptune 串流
<a name="streams-disaster-recovery-setup-enable-streams"></a>

您可以使用 [ModifyDBClusterParameterGroup](api-parameters.md#ModifyDBClusterParameterGroup)，將 `neptune_streams` 參數設定為 1。然後，重新啟動資料庫叢集中的所有執行個體，以便變更生效。

在啟用了 Neptune 串流之後，最好在來源資料庫叢集上執行至少一個新增或更新操作。這會將資料點填入變更串流，這些資料點可在稍後重新同步生產叢集與備份叢集時參考。

## 在您要設定備份叢集的區域中建立新的 VPC
<a name="streams-disaster-recovery-setup-new-vpc"></a>

在與主要叢集不同的區域中建立新的 Neptune 資料庫叢集之前，您需要在目標區域中建立新的 VPC 來託管叢集。主要叢集與備份叢集之間的連線是透過 VPC 對等互連建立的，這會使用不同 VPC 中私有子網路的流量。不過，若要在兩個 VPC 之間建立 VPC 對等互連，它們不得具有重疊的 CIDR 區塊或 IP 地址空間。您不能只在這兩個區域中使用預設 VPC，因為預設 VPC 的 CIDR 區塊一律相同 (`172.31.0.0/16`)。

您可以在目標區域中使用現有 VPC，只要它符合下列條件即可：
+ 它沒有與您主要叢集所在 VPC 的 CIDR 區塊重疊的 CIDR 區塊。
+ 它尚未與另一個 VPC 對等互連，該 VPC 與主要叢集所在的 VPC 具有相同的 CIDR 區塊。

如果目標區域中沒有合適的 VPC 可用，請使用 Amazon EC2 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVpc.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_CreateVpc.html) API 建立一個 VPC。

## 建立主要叢集的快照，並將其還原至目標備份區域
<a name="streams-disaster-recovery-setup-snapshot-restore"></a>

現在，您可以在目標備份區域中的適當 VPC 中建立新的 Neptune 叢集，該區域是生產叢集的副本：

**在備份區域中製作生產叢集的副本**

1. 在目標備份區域中，重新建立生產資料庫叢集所使用的參數和參數群組。您可以使用 [`CreateDBClusterParameterGroup`](api-parameters.md#CreateDBClusterParameterGroup)、[`CreateDBParameterGroup`](api-parameters.md#CreateDBParameterGroup)、[`ModifyDBClusterParameterGroup`](api-parameters.md#ModifyDBClusterParameterGroup) 和 [`ModifyDBParameterGroup`](api-parameters.md#ModifyDBParameterGroup) 來執行此操作。

   請注意，[`CopyDBClusterParameterGroup`](api-parameters.md#CopyDBClusterParameterGroup) 和 [`CopyDBParameterGroup`](api-parameters.md#CopyDBParameterGroup) API 目前不支援跨區域複製。

1. 使用 [`CreateDBClusterSnapshot`](api-snapshots.md#CreateDBClusterSnapshot) 在生產區域的 VPC 中建立生產叢集的快照。

1. 使用 [`CopyDBClusterSnapshot`](api-snapshots.md#CopyDBClusterSnapshot) 將快照複製到目標備份區域中的 VPC。

1. 使用 [`RestoreDBClusterFromSnapshot`](api-snapshots.md#RestoreDBClusterFromSnapshot)，以使用複製的快照在目標備份區域的 VPC 中建立新的資料庫叢集。使用您已從主要生產叢集複製的組態設定和參數。

1. 新的 Neptune 叢集現已存在，但不包含任何執行個體。使用 [`CreateDBInstance`](api-instances.md#CreateDBInstance) 建立新的主要/寫入器執行個體，其與您的生產叢集的寫入器執行個體具有相同的執行個體類型。此時不需要建立額外的僅供讀取複本，除非您的備份執行個體在容錯移轉之前將用來服務目標區域中的讀取 I/O。

## 在主要叢集的 VPC 和新備份叢集的 VPC 之間建立 VPC 對等互連
<a name="streams-disaster-recovery-setup-vpc-peering"></a>

透過設定 VPC 對等互連，您可讓主要叢集的 VPC 與備份叢集的 VPC 進行通訊，就像它們是單一私有網路一樣。若要執行此作業，請採用下列步驟：

1. 從生產叢集的 VPC 中， 呼叫 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/CreateVpcPeeringConnection.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/CreateVpcPeeringConnection.html) API 以建立對等互連連線。

1. 從目標備份叢集的 VPC 中， 呼叫 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/AcceptVpcPeeringConnection.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/AcceptVpcPeeringConnection.html) API 以接受對等互連連線。

1. 從生產叢集的 VPC 中，使用 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/CreateRoute.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/CreateRoute.html) API 將路由新增至 VPC 的路由表，其會將所有流量重新導向至目標 VPC 的 CIDR 區塊，以便它可以使用 VPC 對等互連字首清單。

1. 同樣地，從目標備份叢集的 VPC 中，使用 [https://docs.aws.amazon.com/AWSEC2/latest/APIReference/CreateRoute.html](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/CreateRoute.html) API 將路由新增至 VPC 路由表，其會將流量路由至主要叢集的 VPC。

## 設定 Neptune 串流複寫基礎設施
<a name="streams-disaster-recovery-setup-streams-replication"></a>

現在兩個叢集都已部署，且兩個區域之間的網路通訊都已建立，請使用 [Neptune-to-Neptune CloudFormation 範本](streams-consumer-setup.md)，透過支援資料複寫的額外基礎設施來部署 Neptune 串流消費者 Lambda 函數。在主要生產叢集的 VPC 中執行此操作。

您需要為此 CloudFormation 堆疊提供的參數為：
+ **`NeptuneStreamEndpoint`** – 主要叢集的串流端點，採用 URL 格式。例如：`https://{{(cluster name)}}:8182/pg/stream`。
+ **`QueryEngine`** – 此必須為 `gremlin`、`sparql` 或 `openCypher`。
+ **`RouteTableIds`** – 可讓您同時為 DynamoDB VPC 端點和監控 VPC 端點新增路由。

  如果兩個額外的參數 (即 `CreateMonitoringEndpoint` 和 `CreateDynamoDBEndpoint`) 尚未存在於主要叢集的 VPC 上，也必須將這兩個參數設定為 true。如果它們已經存在，請確定它們設定為 false，否則 CloudFormation 建立會失敗。
+ **`SecurityGroupIds`** – 指定 Lambda 取用者用來與主要叢集的 Neptune 串流端點通訊的安全群組。

  在目標備份叢集中，附加一個安全性群組，允許源自此安全群組的流量。
+ **`SubnetIds`** – 主要叢集 VPC 中的子網路 ID 清單，Lambda 取用者可以使用這些子網路 ID 與主要叢集進行通訊。
+ **`TargetNeptuneClusterEndpoint`** – 目標備份叢集的叢集端點 (僅主機名稱)。
+ **`TargetAWSRegion`**   –   目標備份叢集 AWS 的區域，例如 `us-east-1`)。只有在目標備份叢集 AWS 的區域與 Neptune 來源叢集的區域不同時，才能提供此參數，如同跨區域複寫的情況。如果來源和目標區域相同，則此為選用參數。

  請注意，如果`TargetAWSRegion`值不是 [Neptune 支援的有效 AWS 區域](limits.md#limits-regions)，則程序會失敗。
+ **`VPC`** – 主要叢集 VPC 的 ID。

所有其他參數都可以保留其預設值。

部署 CloudFormation 範本後，Neptune 會開始將任何變更從主要叢集複寫到備份叢集。您可以在 Lambda 取用者函數產生的 CloudWatch 日誌中監控此複寫。