

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

# 管理您的 Amazon Neptune 数据库
<a name="manage-console"></a>

 本节介绍如何使用和管理和维护 Neptune 数据库集群 AWS 管理控制台 。 AWS CLI

Neptune 在以复制拓扑形式连接的数据库服务器的集群上运行。因此，管理 Neptune 通常涉及将更改部署到多个服务器，以及确保所有 Neptune 副本与主服务器保持同步。

由于 Neptune 会随着数据增加透明地扩展底层存储，因此管理 Neptune 需要相对较少的磁盘存储管理。同样，由于 Neptune 自动执行持续备份，因此 Neptune 集群无需广泛的规划或用于执行备份的停机时间。

**Topics**
+ [使用 Neptune Blue/Green 解决方案执行蓝绿色更新](neptune-BG-deployments.md)
+ [创建具有 Neptune 权限的 IAM 用户](manage-console-iam-user.md)
+ [Amazon Neptune 参数组](parameter-groups.md)
+ [Amazon Neptune 参数](parameters.md)
+ [使用启动 Neptune 数据库集群 AWS 管理控制台](manage-console-launch-console.md)
+ [停止和启动 Amazon Neptune 数据库集群](manage-console-stop-start.md)
+ [使用快速重置 API 清空 Amazon Neptune 数据库集群](manage-console-fast-reset.md)
+ [将 Neptune 读取器实例添加到数据库集群](manage-console-add-replicas.md)
+ [使用控制台创建 Neptune 读取器实例](manage-console-create-replica.md)
+ [使用控制台修改 Neptune 数据库集群](manage-console-modify.md)
+ [Amazon Neptune 中的性能和扩展](manage-console-performance-scaling.md)
+ [自动扩缩 Amazon Neptune 数据库集群中的副本数量](manage-console-autoscaling.md)
+ [维护 Amazon Neptune 数据库集群](cluster-maintenance.md)
+ [使用 CloudFormation 模板更新 Neptune 数据库集群的引擎版本](cfn-engine-update.md)
+ [Neptune 中的数据库克隆](manage-console-cloning.md)
+ [管理 Amazon Neptune 实例](manage-console-instances.md)

# 使用 Neptune Blue/Green 解决方案执行蓝绿色更新
<a name="neptune-BG-deployments"></a>

Amazon Neptune 引擎升级可能需要应用程序停机时间，因为在安装和验证更新时数据库不可用。无论它们是手动启动还是自动启动，都是如此。

Neptune 提供了一种 Blue/Green 部署解决方案，您可以使用 CloudFormation 堆栈运行该解决方案，并且可以大大减少此类停机时间。它创建一个与您的蓝色生产环境同步的绿色暂存环境。然后，您可以更新该暂存环境以执行次要或主要引擎版本升级、图形数据模型更改或操作系统更新，并测试结果。最后，您可以快速将其切换为生产环境，停机时间非常少。

Neptune Blue/Green 解分为两个阶段，如下图所示：

![\[蓝绿部署策略的高级流程图\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/images/BG-flow.png)


**第 1 阶段创建一个与生产集群相同的绿色数据库集群**

该解决方案创建一个具有唯一 blue/green 部署标识符的数据库集群，其集群拓扑结构与您的生产集群相同。也就是说，它具有与生产（蓝色）数据库集群相同的数据库实例数量和大小、相同的参数组和所有配置，不同之处在于它已升级到您指定的目标引擎版本，该版本必须高于您的当前（蓝色）引擎版本。您可以为目标指定次要和主要引擎版本。如有必要，该解决方案将执行达到指定的目标引擎版本所需的任何中间升级。这个新集群变成了绿色暂存环境。

**第 2 阶段设置连续数据同步**

在完全准备好绿色环境后，该解决方案使 Neptune 流在源（蓝色）集群和目标（绿色）集群之间建立连续复制。当它们之间的复制差异达到零时，暂存环境就准备好进行测试了。此时，您必须暂停写入蓝色集群，以避免任何进一步的复制滞后。

您的目标引擎版本可能具有影响应用程序的新特征或依赖关系。检查[引擎版本](engine-releases.md)下的目标引擎版本页面和中间引擎版本页面，查看自当前引擎版本以来发生了什么变化。在将绿色集群提升到生产环境之前，最好在绿色集群上运行集成测试或手动验证应用程序。

在测试并验证了绿色集群中的更改后，只需将应用程序中的数据库端点从蓝色集群切换到绿色集群即可。

切换后，Neptune Blue/Green 解决方案不会删除旧的蓝色生产环境。如果需要，您仍然可以访问它以进行其它验证和测试。标准账单费用适用于其实例，直到您将其删除。该 Blue/Green 解决方案还使用其他 AWS 服务，其费用按正常价格计费。[清理部分](neptune-BG-cleanup.md)介绍了有关在完成解决方案后将其删除的详细信息。

## 运行 N Blue/Green eptune 堆栈的先决条件
<a name="neptune-BG-prereqs"></a>

在启动 Neptune Blue/Green 堆栈之前：
+ 请务必在生产（蓝色）集群上[启用 Neptune 流](streams-using.md)。
+ 蓝色集群中的所有实例都必须处于**可用**状态。您可以在 Nep [tune 控制台](https://console.aws.amazon.com/neptune)中或使用 API 查看实例状态。[describe-db-instances](https://docs.aws.amazon.com/cli/latest/reference/neptune/describe-db-instances.html)
+ 所有实例还必须与[数据库集群参数组](parameter-groups.md)同步。
+ Neptune Blue/Green 解决方案要求您的蓝色集群所在的 VPC 中有一个 DynamoDB VPC 终端节点。请参阅[使用 Amazon VPC 端点访问 DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/network-isolation.html#vpc-endpoints-dynamodb)。
+ 选择在蓝色生产数据库集群上的写入工作负载尽可能轻的时候运行解决方案。例如，避免在将要进行批量加载或出于任何其它原因可能存在大量写入操作时运行解决方案。

# 使用 CloudFormation 模板运行 Neptune 解决方案 Blue/Green
<a name="neptune-BG-console-cfn"></a>

您可以使用 AWS CloudFormation 来部署 Neptune 解决方案 Blue/Green 。该 CloudFormation模板在蓝源 Neptune 数据库所在的 VPC 中创建一个 Amazon EC2 实例，在那里安装解决方案并运行该实例。您可以在 CloudWatch 日志中监控其进度，如[监控进度](neptune-BG-monitoring.md)中所述。

您可以使用以下链接查看解决方案模板，也可以选择 La **unch Stack** 按钮在 CloudFormation 控制台中启动该模板：


|  |  |  | 
| --- |--- |--- |
| [视图](https://aws-neptune-customer-samples-us-east-1.s3.amazonaws.com/neptune-bg/bg.yaml) | [在 Designer 中查看](https://console.aws.amazon.com/cloudformation/designer/home?templateURL=https://aws-neptune-customer-samples-us-east-1.s3.amazonaws.com/neptune-bg/bg.yaml) | [https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=NeptuneBG&templateURL=https://aws-neptune-customer-samples-us-east-1.s3.amazonaws.com/neptune-bg/bg.yaml](https://console.aws.amazon.com/cloudformation/home?region=us-east-1#/stacks/new?stackName=NeptuneBG&templateURL=https://aws-neptune-customer-samples-us-east-1.s3.amazonaws.com/neptune-bg/bg.yaml)  | 

在控制台中，从窗口右上角的下拉列表中选择要运行解决方案的 AWS 区域。

按如下方式设置堆栈参数：
+ **`DeploymentID`**— 每个 Neptune Blue/Green 部署的唯一标识符。

  它用作绿色数据库集群标识符，也用作为在部署期间创建的新资源命名的前缀。
+ **`NeptuneSourceClusterId`** – 要升级的蓝色数据库集群的标识符。
+ **`NeptuneTargetClusterVersion:`** – 您要将蓝色数据库集群升级到的 [Neptune 引擎版本](engine-releases.md)。

  此值必须高于当前蓝色数据库集群的引擎版本。
+ **`DeploymentMode`** – 表示这是新部署，还是尝试恢复先前的部署。当您使用与先前部署相同的 `DeploymentID` 时，请将 `DeploymentMode` 设置为 `resume`。

  有效值为：`new`（默认值）和 `resume`。
+ **`GraphQueryType`** - 数据库的图形数据类型。

  有效值为：`propertygraph`（默认值）和 `rdf`。
+ **`SubnetId`** – 来自您的蓝色数据库集群所在的同一 VPC 的子网 ID。（请参阅[从同一 VPC 中的 Amazon EC2 实例连接到 Neptune 数据库集群](get-started-connect-ec2-same-vpc.md)）。

  如果您想通过 [EC2 连接](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/Connect-using-EC2-Instance-Connect.html)以 SSH 方式连接到该实例，请提供公有子网的 ID。
+ **`InstanceSecurityGroup`** – Amazon EC2 实例的安全组。

  安全组必须有权访问您的蓝色数据库集群，并且您必须能够以 SSH 方式连接到该实例。请参阅[使用 VPC 控制台创建安全组](get-started-vpc.md#security-vpc-security-group)。

等到堆栈完成。一旦完成，就启动此解决方案。然后，您可以使用 CloudWatch 日志监控部署过程，如下一节所述。

# 监控 Neptun Blue/Green e 部署的进度
<a name="neptune-BG-monitoring"></a>

您可以通过进入[CloudWatch 控制台](https://console.aws.amazon.com/cloudwatch/)并查看日志组中的日志来监控 Neptune Blue/Green 解决方案的`/aws/neptune/(Neptune Blue/Green deployment ID)` CloudWatch 进度。你可以在解决方案 CloudFormation 堆栈的输出中找到指向 CloudWatch 日志的链接：

![\[蓝/绿 CloudFormation 堆栈输出的屏幕截图\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/images/BG-stack-output.png)


如果您提供公有子网作为堆栈参数，则还可以通过 SSH 方式连接到作为堆栈一部分创建的 Amazon EC2 实例，并参考 `/var/log/cloud-init-output.log` 中的日志。

日志显示了 Neptune Blue/Green 解决方案采取的操作，如以下屏幕截图所示：

![\[Neptune Blue/Green 日志屏幕截图\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/images/BG-log-screenshot.png)


日志消息显示蓝色和绿色集群之间的同步状态：

![\[Neptune Blue/Green 解决方案日志消息的屏幕截图\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/images/BG-log-messages.png)


同步过程通过计算蓝色集群`eventID`上的最新数据流与复制堆栈创建的 DynamoDB 检查点表中存在的复制检查点之间的差异来 Neptune-to-Neptune检查复制延迟。使用这些消息，您可以监控当前的复制差异。

# 从生产蓝色集群切换到更新后的绿色集群
<a name="neptune-BG-cutover"></a>

在将绿色集群提升到生产环境之前，请确保蓝色和绿色集群之间的提交差异为零，然后禁用蓝色集群的所有写入流量。在将数据库端点切换到绿色集群的同时继续写入蓝色集群，可能会因向两个集群写入部分数据而导致数据损坏。您可能还不需要禁用读取流量。

如果您已在源（蓝色）集群上启用了 IAM 身份验证，请务必更新应用程序中使用的所有 IAM policy 以指向绿色集群（有关此类策略的示例，请参阅此[无限制访问策略](iam-data-access-examples.md#iam-auth-data-policy-example-general)）。

禁用写入流量后，等待复制完成，然后在绿色集群上（但不在蓝色集群上）启用写入流量。同时将读取流量从蓝色集群切换到绿色集群。

# 在 Neptune Blue/Green 解决方案完成后进行清理
<a name="neptune-BG-cleanup"></a>

将暂存（绿色）集群提升到生产环境后，清理 Blue/Green Neptune 解决方案创建的资源：
+ 删除为运行该解决方案而创建的 Amazon EC2 实例。
+ 删除[基于 Neptune 流的复制 CloudFormation](streams-consumer-setup.md)模板，这些模板使绿色集群与蓝色集群保持同步。主模板具有您之前提供的堆栈名称，一个模板名称由部署 ID 后跟“-replication”组成：即 `(DeploymentID)-replication`。

删除 CloudFormation 模板并不会删除集群本身。确认绿色集群按预期运行后，您可以选择在手动删除蓝色集群之前拍摄快照。

# Neptune Blue/Green 解决方案最佳实践
<a name="neptune-BG-best-practices"></a>
+ 在将绿色集群切换到生产环境之前，值得彻底验证其是否运行正常。检查数据的一致性和数据库的配置。某些新的引擎版本可能还需要客户端升级。请在升级之前查看引擎版本说明。在生产环境中开始 blue/green 升级之前，值得在开发、测试和预生产环境中对所有这些进行测试。
+ 最好在维护时段内执行从蓝色服务器到绿色服务器的切换。
+ 为了确保升级和同步后一切正常运行，在删除原始集群之前，值得将其保留一段时间。如果出现不可预见的问题，它可能会很有用。
+ 运行 Neptune Blue/Green 解决方案时，请避免繁重的写入操作，例如批量加载，因为它们可能会导致复制延迟，从而导致严重的停机时间。理想情况下，从关闭对蓝色集群的写入到为绿色集群开启写入只有很短的时间。

# 对 Neptune 解决方案 Blue/Green 进行故障排除
<a name="neptune-BG-troubleshooting"></a>

 以下信息重点介绍了 Blue/Green 解决方案部署过程中可能出现的问题，例如与现有集群的冲突、启用 Neptune 流的必要性、正在进行的批量加载操作以及版本兼容性要求。通过解决这些潜在问题，您可以确保 Neptune Blue/Green 解决方案的顺利成功部署。

**Neptun Blue/Green e 解决方案引发的错误**
+ **`Cluster with id = (blue_green_deployment_id) already exists`**— 存在一个带有标识符的现有集群*(blue\$1green\$1deployment\$1id)*。

  `resume`如果集群是在之前的 Neptune Blue/Green 运行中创建的，请提供新的部署 ID 或将部署模式设置为。
+ **`Streams should be enabled on the source Cluster for Blue Green Deployment`** – 在蓝色（源）集群上启用 [Neptune 流](streams-using-enabling.md)。
+ **`No Bulkload should be in progress on source cluster: (cluster_id)`**— 如果 Neptune Blue/Green 解决方案识别出持续的批量负载，它就会终止。

  这是为了确保同步过程能够赶上正在进行的写入操作。在启动 Neptune Blue/Green 解决方案之前，请避免或取消任何正在进行的批量加载作业。
+ **`Blue Green deployment requires instances to be in sync with db cluster parameter group`** – 对集群参数组的任何更改都应在整个数据库集群中同步。请参阅[Amazon Neptune 参数组](parameter-groups.md)。
+ **`Invalid target engine version for Blue Green Deployment`** – 目标引擎版本必须在[Amazon Neptune 的引擎版本](engine-releases.md)中列为活动的版本，并且必须高于源（蓝色）集群的当前引擎版本。

# 创建具有 Neptune 权限的 IAM 用户
<a name="manage-console-iam-user"></a>

要访问 Neptune 控制台来创建和管理 Neptune 数据库集群，您需要创建一个具有所有必要权限的 IAM 用户。

第一步是为 Neptune 创建服务相关角色策略：

## 为 Amazon Neptune 创建服务相关角色策略
<a name="manage-console-iam-user-service-linked"></a>

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧的导航窗格中，选择**策略**。

1. 在**策略**页面上，选择**创建策略**。

1. 在**创建策略**页面上，选择 **JSON** 选项卡并复制以下服务相关角色策略：

------
#### [ JSON ]

****  

   ```
   {
     "Version":"2012-10-17",		 	 	 
     "Statement": [
       {
         "Action": "iam:CreateServiceLinkedRole",
         "Effect": "Allow",
         "Resource": "arn:aws:iam::*:role/aws-service-role/rds.amazonaws.com/AWSServiceRoleForRDS",
         "Condition": {
           "StringLike": {
               "iam:AWSServiceName":"rds.amazonaws.com"
           }
         }
       }
     ]
   }
   ```

------

1. 选择**下一步：标签**，然后在**添加标签**页面上选择**下一步：审核**。

1. 在 “**查看策略**” 页面上，将新策略命名为 “NeptuneServiceLinked”。

有关服务关联角色的更多信息，请参阅[使用 Amazon Neptune 的服务相关角色](security-iam-service-linked-roles.md)。

## 创建具有所有必要权限的新 IAM 用户
<a name="manage-console-iam-user-create"></a>

接下来，创建附有相应托管式策略的新 IAM 用户，该策略将授予您需要的权限，以及您创建的服务相关角色策略（此处命名为 `NeptuneServiceLinked`）：

1. 登录 AWS 管理控制台 并打开 IAM 控制台，网址为[https://console.aws.amazon.com/iam/](https://console.aws.amazon.com/iam/)。

1. 在左侧的导航窗格中，选择**用户**，然后在**用户**页面上选择**添加用户**。

1. 在**添加用户**页面上，输入新 IAM 用户的名称，为 AWS 凭证类型选择**访问密钥-编程访问权限**，然后选择**下一步：**权限。

1. 在**设置权限**页面上的**筛选策略**框中，键入“Neptune”。现在，从列出的策略中选择以下内容：
   + **NeptuneFullAccess**
   + **NeptuneConsoleFullAccess**
   + **NeptuneServiceLinked**（假设你之前创建的服务相关角色策略就是这样命名的）。

1. 接下来，在**筛选策略**框中键入“VPC”以代替“Neptune”。从列出的策略中选择 **Amazon A VPCFull cces** s。

1. 选择**下一步：标签**，然后在**添加标签**页面中选择**下一步：审核**。

1. 在**审核**页面中，检查以下所有策略现在是否已附加到您的新用户：
   + **NeptuneFullAccess**
   + **NeptuneConsoleFullAccess**
   + **NeptuneServiceLinked**
   + **亚马逊VPCFull访问权限**

   然后，选择**创建用户**。

1. 最后，下载并保存新用户的访问密钥 ID 和秘密访问密钥。

要在 Amazon Simple Storage Service (Amazon S3) 之类的其它服务上进行互操作，您需要添加更多权限和信任关系。

# Amazon Neptune 参数组
<a name="parameter-groups"></a>

通过使用数据库参数组中的[参数](parameters.md)，在 Amazon Neptune 中管理数据库配置。参数组就像是引擎配置值的*容器*，这些值可应用于一个或多个数据库实例。

有两种类型的参数组，即数据库集群参数组和数据库参数组：
+ *数据库参数组*在实例级应用，通常与 Neptune 图形引擎的设置（如 `neptune_query_timeout` 参数）关联。
+ *数据库集群参数组* 应用到集群中的每个实例，通常具有更广泛的设置。每个 Neptune 集群与一个数据库集群参数组关联。该集群中的每个数据库实例继承数据库集群参数组中包含的引擎配置值。

您在数据库集群参数组中修改的任意配置值将覆盖数据库参数组中的默认值。如果您在数据库参数组中编辑对应的值，则这些值将覆盖数据库集群参数组中的设置。

如果在创建数据库实例时未指定自定义数据库参数组，则将使用默认数据库参数组。无法修改默认数据库参数组的参数设置。相反，要更改默认参数设置，则必须创建新的数据库参数组。并非所有数据库引擎参数都可在您创建的数据库参数组中进行更改。

参数组是在与特定的 Neptune 引擎版本兼容的系列中创建的。升级到新的主要或次要引擎版本时，可能需要使用该版本的相应参数组系列重新创建自定义参数组。

参数组系列命名遵循模式`neptuneX.Y`，其中`X.Y`与引擎版本相匹配。例如：
+ `neptune1`— 适用于 1.2.0.0 之前的引擎版本
+ `neptune1.2`— 适用于引擎版本 1.2.x
+ `neptune1.3`— 适用于引擎版本 1.3.x
+ `neptune1.4`— 适用于引擎版本 1.4.x

升级 Neptune 集群时，请查看目标引擎版本的[发行说明](engine-releases.md)，以确定是否需要新的参数组系列。如果是，则在升级之前，必须重新创建新系列中的所有自定义参数组。

一些 Neptune 参数是静态的，而另一些则是动态的。区别如下所示：

**静态参数**
+ 静态参数是指只有在数据库实例重启后才会生效的参数。换句话说，当您更改静态参数并保存实例数据库参数组时，必须手动重启数据库实例才能使参数更改生效。当前，所有 Neptune 实例级参数（在数据库参数组而不是数据库集群参数组中）都是静态的。
+ 更改集群级静态参数并保存数据库集群参数组时，参数更改将在手动重启集群中的每个数据库实例后生效。

**动态参数**
+ 动态参数是在参数组中更新参数后几乎立即生效的参数。换句话说，更新动态参数后，无需重启数据库实例即可使参数更改生效。
+ 在所有数据库实例上应用动态集群参数更改预计会有一些轻微的延迟。
+ 更新后的动态参数值不适用于当前正在运行的请求，而仅适用于更改发生后提交的请求。
+ 当您更改动态集群级参数时，默认情况下，参数更改将立即应用于数据库集群，而无需任何重启。要将参数更改推迟到集群中的数据库实例重新启动之后，您可以使用 AWS CLI 将参数`ApplyMethod`更改`pending-reboot`设置为。

目前，除以下新集群参数外，所有参数均为静态参数：
+ `neptune_enable_slow_query_log`（集群级）
+ `neptune_slow_query_log_threshold`（集群级）

以下是您在使用数据库参数组中的参数时应了解的几个要点：
+ 在数据库参数组内设置参数不恰当可能会产生意外的不利影响，包括性能降低和系统不稳定。修改数据库参数时应始终保持谨慎，且在修改数据库参数组前备份数据。先对测试数据库实例试用参数组设置更改，然后再将这些更改应用于生产数据库实例。
+ 当您更改与数据库实例关联的数据库参数组时，必须在数据库实例使用新的数据库参数组之前手动重启实例。
**注意**  
在[版本：1.2.0.0（2022 年 7 月 21 日）](engine-releases-1.2.0.0.md) 之前，每当主（写入器）实例重启时，数据库集群中的所有只读副本实例都会自动重启。  
从[版本：1.2.0.0（2022 年 7 月 21 日）](engine-releases-1.2.0.0.md) 开始，重启主实例不会导致任何副本实例重启。这意味着，如果您要更改集群级的参数，则必须分别重启每个实例才能获得参数更改。

## 编辑数据库集群参数组或数据库参数组
<a name="parameters-editgroup"></a>

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 选择导航窗格中的 **Parameter groups (参数组)**。

1. 选择要编辑的数据库参数组的 **Name (名称)** 链接。

   （可选）选择**创建参数组**以创建新的集群参数组并创建新的组。然后选择新参数组的**名称**。
**重要**  
如果只有默认数据库集群参数组，则此步骤为*必需*，因为默认数据库集群参数组无法修改。

1. 搜索参数，然后单击**名称**列旁边的**值**字段。

1. 输入允许的值，然后选择“值”字段旁边的复选框。

1. 选择**保存更改**。

1. 如果您要更改数据库集群参数，请重启 Neptune 集群中的每个数据库实例；如果您要更改数据库实例参数，则重启一个或多个特定实例。

## 创建数据库参数组或数据库集群参数组
<a name="parameters-creategroup"></a>

您可以轻松使用 Neptune 控制台创建一个新的参数组：

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 选择左侧导航窗格中的 **Parameter groups (参数组)**。

1. 选择 **Create DB parameter group (创建数据库参数组)**。

   **创建数据库参数组**页面将显示。

1. ****在**参数组系列**列表中，选择与您的目标 Neptune 引擎版本相匹配的系列（例如 neptune1.2、neptune1.3 或 nept **une1.** 4）。****

1. 在**类型**列表中，选择**数据库参数组**或**数据库集群参数组**。

1. 在**组名**框中，键入新数据库参数组的名称。

1. 在**描述**框中，键入新数据库参数组的描述。

1. 选择**创建**。

您也可以使用 AWS CLI创建新的参数组：

```
aws neptune create-db-parameter-group \
  --db-parameter-group-name (a name for the new DB parameter group) \
  --db-parameter-group-family (the family matching your engine version, such as neptune1.2, neptune1.3, or neptune1.4) \
  --description (a description for the new DB parameter group)
```

# Amazon Neptune 参数
<a name="parameters"></a>

您可以使用[参数组](parameter-groups.md)中的参数来管理 Amazon Neptune 中的数据库配置。以下参数可用于配置 Neptune 数据库：

**集群级别的参数**
+ [neptune\$1enable\$1audit\$1log](#parameters-db-cluster-parameters-neptune_enable_audit_log)
+ [neptune\$1enable\$1slow\$1query\$1log](#parameters-db-cluster-parameters-neptune_enable_slow_query_log)
+ [neptune\$1slow\$1query\$1log\$1threshold](#parameters-db-cluster-parameters-neptune_slow_query_log_threshold)
+ [neptune\$1lab\$1mode](#parameters-db-cluster-parameters-neptune_lab_mode)
+ [neptune\$1query\$1timeout](#parameters-db-cluster-parameters-neptune_query_timeout)
+ [neptune\$1streams](#parameters-db-cluster-parameters-neptune_streams)
+ [neptune\$1streams\$1expiry\$1days](#parameters-db-cluster-parameters-neptune_streams_expiry_days)
+ [neptune\$1lookup\$1cache](#parameters-db-cluster-parameters-neptune_lookup_cache)
+ [neptune\$1autoscaling\$1config](#parameters-db-cluster-parameters-neptune_autoscaling_config)
+ [neptune\$1ml\$1iam\$1role](#parameters-db-cluster-parameters-neptune_ml_iam_role)
+ [neptune\$1ml\$1endpoint](#parameters-db-cluster-parameters-neptune_ml_endpoint)
+ [neptune\$1enable\$1inline\$1server\$1generated\$1edge\$1id](#parameters-db-cluster-parameters-neptune_inline_edge_id)

   

**实例级参数**
+ [neptune\$1dfe\$1query\$1engine](#parameters-instance-parameters-neptune_dfe_query_engine)
+ [neptune\$1query\$1timeout](#parameters-instance-parameters-neptune_query_timeout)
+ [neptune\$1result\$1cache](#parameters-db-instance-parameters-neptune_result_cache)
+ [UndoLogPurgeConfig](#parameters-db-instance-parameters-undo_log_purge_config)

   

**弃用的参数**
+ [neptune\$1enforce\$1ssl](#parameters-db-cluster-parameters-neptune_enforce_ssl)

## `neptune_enable_audit_log`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_enable_audit_log"></a>

此参数切换 Neptune 的审计日志记录。

允许的值为 `0`（禁用）和 `1`（启用）。默认值为 `0`。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

您可以将审核日志发布到 Amazon CloudWatch，如中所述[使用 CLI 将 Neptune 审核日志发布到日志 CloudWatch](cloudwatch-logs.md#cloudwatch-logs-cli)。

## `neptune_enable_slow_query_log`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_enable_slow_query_log"></a>

使用此参数启用或禁用 Neptune 的[慢速查询日志记录](slow-query-logs.md)特征。

这是一个动态参数，意味着更改其值不需要或导致数据库集群重启。

允许的值包括：
+ **`info`** – 启用慢速查询日志记录并记录可能导致性能下降的选定属性。
+ **`debug`** – 启用慢速查询日志记录并记录查询运行的所有可用属性。
+ **`disabled`** – 禁用慢速查询日志记录。

默认值为 `disabled`。

您可以将慢速查询日志发布到 Amazon CloudWatch，如中所述。[使用 CLI 将 Neptune 慢速查询日志发布到日志 CloudWatch](cloudwatch-logs.md#cloudwatch-slow-query-logs-cli)

## `neptune_slow_query_log_threshold`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_slow_query_log_threshold"></a>

此参数以毫秒为单位指定执行时间阈值，超过该阈值后，查询被视为慢速查询。如果启用[慢速查询日志记录](slow-query-logs.md)，则运行时间超过此阈值的查询将与其某些属性一起记录。

默认值为 5000 毫秒（5 秒）。

这是一个动态参数，意味着更改其值不需要或导致数据库集群重启。

## `neptune_lab_mode`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_lab_mode"></a>

设置此项后，该参数将启用 Neptune 的特定实验性特征。有关当前可用的实验性功能，请参阅[Neptune 实验室模式](features-lab-mode.md)。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

要启用或禁用实验功能，请在此参数*(feature name)*`=disabled`中包含*(feature name)*`=enabled`或。可以通过用逗号分隔多个功能来启用或禁用它们，如下所示：

*(feature \$11 name)*`=enabled,` *(feature \$12 name)*`=enabled`

默认情况下，通常禁用实验室模式特征。一个例外是 `DFEQueryEngine` 特征，从 [Neptune 引擎版本 1.0.5.0](engine-releases-1.0.5.0.md) 开始，该特征默认处于启用状态，可以与查询提示 (`DFEQueryEngine=viaQueryHint`) 一起使用。从 [Neptune 引擎版本 1.1.1.0](engine-releases-1.1.1.0.md) 开始，DFE 引擎不再处于实验室模式，现在使用实例的数据库参数组中的 [neptune\$1dfe\$1query\$1engine](#parameters-instance-parameters-neptune_dfe_query_engine) 实例参数进行控制。

## `neptune_query_timeout`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_query_timeout"></a>

指定图形查询的特定超时持续时间（以毫秒为单位）。

允许值的范围为 `10` 到 `2,147,483,647` (231 - 1)。默认值为 `120,000`（2 分钟）。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

配置多个超时设置（集群级别、实例级别和每个查询）时，下表显示了哪个超时值优先：


| 集群 PG | 实例 PG | 查询提示 | 结果 | 
| --- | --- | --- | --- | 
| 默认 | 默认 | none | Cluster | 
| 自定义 | 默认 | none | Cluster | 
| 自定义 | 自定义 | none | 实例 | 
| 默认 | 自定义 | none | 实例 | 
| 任何 | 任何 | 最低 | Query | 
| 默认 | 自定义 | 不是最低的 | 实例 | 
| 自定义 | 默认 | 不是最低的 | Cluster | 
| 自定义 | 自定义 | 不是最低的 | 实例 | 

**注意**  
如果您将查询超时值设置得过高，可能会产生意想不到的成本，尤其是在无服务器实例上。如果没有合理的超时设置，您可能会无意中发出一个持续运行时间比预期长得多的查询，从而产生您意想不到的成本。在运行查询时可以纵向扩展到昂贵的大型实例类型的无服务器实例上尤其如此。  
您可以使用查询超时值来避免此类意外开支，该值可以容纳您的大多数查询，并且只会导致长时间运行的查询意外超时。

## `neptune_streams`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_streams"></a>

启用或禁用 [Neptune Streams](streams.md)。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

允许的值为 `0`（默认禁用）和 `1`（启用）。

## `neptune_streams_expiry_days`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_streams_expiry_days"></a>

指定服务器删除流记录之前的天数。

允许的值为 `1` 到 `90`（含）。默认值为 `7`。

该参数是在[引擎版本 1.2.0.0](engine-releases-1.2.0.0.md) 中引入的。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

## `neptune_lookup_cache`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_lookup_cache"></a>

在 `R5d` 实例上禁用或重新启用 [Neptune 查找缓存](feature-overview-lookup-cache.md)。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

允许的值为 `1`（启用）和 `0`（禁用）。默认值为 `0`，但是每当在数据库集群中创建 `R5d` 实例时，`neptune_lookup_cache` 参数都会自动设置为 `1`，并在该实例上创建查找缓存。

## `neptune_autoscaling_config`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_autoscaling_config"></a>

为 [Neptune 自动扩缩](manage-console-autoscaling.md)创建和管理的只读副本实例设置配置参数。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

使用您设置为 `neptune_autoscaling_config` 参数值的 JSON 字符串，可以指定：
+ Neptune 自动扩缩为它所创建的所有新的只读副本实例使用的实例类型。
+ 分配给这些只读副本的维护时段。
+ 要与所有新的只读副本关联的标签。

JSON 字符串的结构如下所示：

```
"{
  \"tags\": [
    { \"key\" : \"reader tag-0 key\", \"value\" : \"reader tag-0 value\" },
    { \"key\" : \"reader tag-1 key\", \"value\" : \"reader tag-1 value\" },
  ],
  \"maintenanceWindow\" : \"wed:12:03-wed:12:33\",
  \"dbInstanceClass\" : \"db.r5.xlarge\"
}"
```

请注意，字符串中的引号必须全部使用反斜杠字符 (`\`) 进行转义。

`neptune_autoscaling_config` 参数中未指定的三个配置设置中的任何一个都是从数据库集群的主写入器实例的配置中复制的。

## `neptune_ml_iam_role`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_ml_iam_role"></a>

指定 Neptune ML 中使用的 IAM 角色 ARN。该值可以是任何有效的 IAM 角色 ARN。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

您可以在图形上为机器学习指定默认 IAM 角色 ARN。

## `neptune_ml_endpoint`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_ml_endpoint"></a>

指定用于 Neptune ML 的端点。该值可以是任何有效的 [SageMaker AI 终端节点名称](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateEndpoint.html#sagemaker-CreateEndpoint-request-EndpointName)。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

您可以在图表上为机器学习指定默认 SageMaker AI 端点。

## `neptune_enable_inline_server_generated_edge_id`（集群级参数）
<a name="parameters-db-cluster-parameters-neptune_inline_edge_id"></a>

 启用或禁用 Neptune 内联服务器生成的 Edge ID 功能。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

允许的值为 `1`（启用）和 `0`（禁用）。默认值为 `0`。

## `neptune_dfe_query_engine`（实例级参数）
<a name="parameters-instance-parameters-neptune_dfe_query_engine"></a>

从 [Neptune 引擎版本 1.1.1.0](engine-releases-1.1.1.0.md) 开始，此数据库实例参数用于控制 [DFE 查询引擎](neptune-dfe-engine.md)的使用方式。允许的值如下所示：

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。
+ **`enabled`** – 使得尽可能使用 DFE 引擎，但 `useDFE` 查询提示存在并设置为 `false` 除外。
+ **`viaQueryHint`**（默认）– 使得 DFE 引擎仅用于显式包含设置为 `true` 的 `useDFE` 查询提示的查询。

如果未显式设置此参数，则实例启动时将使用默认值 `viaQueryHint`。

**注意**  
无论如何设置此参数，所有 openCypher 查询都由 DFE 引擎执行。

在版本 1.1.1.0 之前，这是一个实验室模式参数，而不是数据库实例参数。

## `neptune_query_timeout`（实例级参数）
<a name="parameters-instance-parameters-neptune_query_timeout"></a>

此数据库实例参数为一个实例指定图形查询的超时时间，以毫秒为单位。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

允许值的范围为 `10` 到 `2,147,483,647` (231 - 1)。默认值为 `120,000`（2 分钟）。

**注意**  
如果您将查询超时值设置得过高，可能会产生意想不到的成本，尤其是在无服务器实例上。如果没有合理的超时设置，您可能会无意中发出一个持续运行时间比预期长得多的查询，从而产生您意想不到的成本。在运行查询时可以纵向扩展到昂贵的大型实例类型的无服务器实例上尤其如此。  
您可以使用查询超时值来避免此类意外开支，该值可以容纳您的大多数查询，并且只会导致长时间运行的查询意外超时。

## `neptune_result_cache`（实例级参数）
<a name="parameters-db-instance-parameters-neptune_result_cache"></a>

**`neptune_result_cache`** – 此数据库实例参数启用或禁用 [缓存查询结果](gremlin-results-cache.md)。

此参数是静态的，这意味着在任何实例重启之前，对其所做的更改不会在该实例上生效。

允许的值为 `0`（禁用，默认值）和 `1`（启用）。

## `UndoLogPurgeConfig`（实例级参数）
<a name="parameters-db-instance-parameters-undo_log_purge_config"></a>

**`UndoLogPurgeConfig`**— 使用此参数在 Neptune 中启用或禁用主动 UndoLog 清除。

允许的值是 `default` 和 `aggressive`，前者会使用标准的线程数进行撤消日志清除，而后者则会使用增加的线程数来加快撤消日志的清理。选择 `agressive` 选项后，您可能会看到更高的 `NumUndoPagesPurged` 指标值。

## `neptune_enforce_ssl`（弃用的集群级参数）
<a name="parameters-db-cluster-parameters-neptune_enforce_ssl"></a>

（**已弃用**）过去有些区域允许 HTTP 连接到 Neptune，当此参数设置为 1 时，用于强制所有连接使用 HTTPS。但是，此参数不再相关，因为 Neptune 现在在所有区域中仅接受 HTTPS 连接。

# 使用启动 Neptune 数据库集群 AWS 管理控制台
<a name="manage-console-launch-console"></a>

启动新 Neptune 数据库集群的最简单方法是使用可为您创建所有必需资源的 CloudFormation 模板，如中所述。[创建 Neptune 集群](get-started-create-cluster.md)

如果您愿意，也可以使用 Neptune 控制台手动启动新的数据库集群，如此处所述。

**注意**  
 您必须先拥有具有充足权限的用户，然后才能访问 Neptune 控制台并创建 Neptune 集群。如果您当前的用户没有这些权限，则可以创建一个具有执行此操作所需权限的 IAM 用户，如 [创建具有 Neptune 权限的 IAM 用户](manage-console-iam-user.md) 中所述。

确认您的用户具有正确的权限或创建了具有正确权限的用户后，请以该 IAM 用户的 AWS 管理控制台 身份登录并按照以下步骤创建新的数据库集群：

**使用控制台启动 Neptune 数据库集群**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 导航到**集群**页面，在**数据库**下，选择**创建数据库**，这将打开**创建数据库**页面。

1. 在**设置**下，输入新数据库集群的名称或接受此处提供的默认名称。此名称用于实例的端点地址，并且必须满足以下限制：
   + 它必须包含 1 到 63 个字母数字字符或连字符。
   + 它的第一个字符必须是字母。
   + 它不能以连字符结束或包含两个连续连字符。
   + 它在给定 AWS 区域中您 AWS 账户中的所有数据库实例中必须是唯一的。

1. 在**模板**下，选择**生产**或**开发和测试**。

1. 在**数据库实例大小**下，选择实例大小。这将决定新数据库集群的主写入实例的处理和内存容量。

   如果您选择了**生产**模板，则只能从列出的可用内存优化型类中进行选择，但如果您选择了**开发和测试**，则也可以从更经济的可突发类中进行选择（有关可突发类的讨论，请参阅[T3 可突增实例](manage-console-instances-t3.md)）。
**注意**  
Neptune 不再支持`R4`实例类型。

1. 在 “**可用性和持久性**” 下，您可以选择是否启用 multi-availability-zone（多可用区）部署。默认情况下，生产模板启用多可用区部署，而开发和测试模板则不启用多可用区部署。如果启用了多可用区部署，Neptune 会定位您在不同可用区 AZs () 中创建的只读副本实例，以提高可用性。

1. 在**连接**下，从可用选项中选择要托管新数据库集群的虚拟私有云 (VPC)。如果您希望 Neptune 为您创建 VPC，则可以选择**创建新的 VPC**。您必须在同一 VPC 中创建 Amazon EC2 实例才能访问 Neptune 实例（有关更多信息，请参阅[使用 Amazon VPC 确保 Amazon Neptune 数据库的安全](security-vpc.md)）。请注意，创建数据库集群后，将无法更改 VPC。

   如果需要，可以在**其它连接配置**下为集群进一步配置连接：

   1. 在**子网组**下，您可以选择要用于新数据库集群的 Neptune 数据库子网组。如果您的 VPC 还没有任何子网组，Neptune 将为您创建一个数据库子网组（请参阅[使用 Amazon VPC 确保 Amazon Neptune 数据库的安全](security-vpc.md)）。

   1. 在 **VPC 安全组**下，选择一个或多个现有 VPC 安全组来保护对新数据库集群的网络访问，或者，如果您希望 Neptune 为您创建一个安全组，请选择**新建**，然后为新 VPC 安全组提供名称（请参阅[使用 VPC 控制台创建安全组](get-started-vpc.md#security-vpc-security-group)）。

   1. 在**数据库端口**下，输入数据库将用于应用程序连接的 TCP/IP 端口。Neptune 使用端口号 `8182` 作为默认值。

1. 如果希望 Neptune 在 Neptune Workbench 中为您创建 Jupyter 笔记本，请在**笔记本配置**下选择**创建笔记本**（请参阅[将 Amazon Neptune 与图形笔记本结合使用](graph-notebooks.md)和[使用 Neptune Workbench 托管 Neptune 笔记本](graph-notebooks.md#graph-notebooks-workbench)）。然后，您可以选择应如何配置新的笔记本：

   1. 在**笔记本实例类型**下，从笔记本的可用实例类中进行选择。

   1. 在**笔记本名称**下，输入笔记本的名称。

   1. 如果需要，还可以在**描述 - 可选**下输入笔记本的描述。

   1. 在 **IAM 角色名称**下，选择让 Neptune 为笔记本创建 IAM 角色，然后输入新角色的名称，或者进行选择，以从可用角色中选择现有 IAM 角色。

   1. 最后，选择您的笔记本电脑是直接连接还是通过 Amazon A SageMaker I 连接到互联网，还是通过带有 NAT 网关的 VPC 连接到互联网。有关更多信息，请参阅[将笔记本实例连接到 VPC 中的资源](https://docs.aws.amazon.com/sagemaker/latest/dg/appendix-notebook-and-internet-access.html)。

1. 在**标签**下，您最多可以将 50 个标签与新数据库集群关联。

1. 在**其它配置**下，您可以为新数据库集群进行更多设置（在许多情况下，您可以跳过这些设置并暂时接受默认值）：    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/manage-console-launch-console.html)

1. 选择**创建数据库**以启动您的新 Neptune 数据库集群及其主实例。

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

   要查看新创建的集群，请选择 Neptune 控制台中的**数据库**视图。
**注意**  
如果您使用删除数据库集群中的所有 Neptune 数据库实例 AWS 管理控制台，则控制台会自动删除数据库集群本身。如果您使用的是 AWS CLI 或 SDK，则必须在删除数据库集群的最后一个实例后手动将其删除。

   记下**集群端点**值。连接到 Neptune 数据库集群需要此值。

# 停止和启动 Amazon Neptune 数据库集群
<a name="manage-console-stop-start"></a>

 停止和启动 Amazon Neptune 集群可以帮助您控制开发和测试环境的成本。您可以暂时停止集群中的所有数据库实例，而不是每次使用集群时设置和停用所有数据库实例。

**Topics**
+ [停止和启动 Neptune 数据库集群概述](#manage-console-start-stop-overview)
+ [停止 Neptune 数据库集群](#manage-console-stopping)
+ [启动已停止的 Neptune 数据库集群](#manage-console-start)

## 停止和启动 Neptune 数据库集群概述
<a name="manage-console-start-stop-overview"></a>

在不需要使用 Neptune 集群的期间，您可以同时停止该集群中的所有实例。您可以在需要使用时再次启动集群。启动和停止简化了用于开发、测试或不需要持续可用性的类似活动的集群的设置和停用过程。无论集群中有多少实例，您都可以在中 AWS 管理控制台 通过一个操作完成此操作。

 在停止数据库集群后，您只需在指定的保留时段内为集群存储、手动快照和自动备份存储付费。您无需为任何数据库实例小时数付费。

七天后，Neptune 自动重新启动数据库集群，以确保其赶得上任何所需的维护更新。

为了最大限度减少具有较少负载的 Neptune 集群的费用，您可以停止集群，而不是删除它的所有只读副本。对于拥有一个或两个以上实例的集群，只有使用 AWS CLI 或 Neptune API 才能经常删除和重新创建数据库实例，而且删除操作也可能难以按正确的顺序执行。例如，您必须在删除主实例之前删除所有只读副本，以避免激活故障转移机制。

如果您需要将数据库集群保持运行状态，但想要减少容量，请不要使用启动和停止。如果您的集群成本太高或不太繁忙，您可以删除一个或多个数据库实例，或者将数据库实例更改为使用较小的实例类，但您不能停止单个数据库实例。

## 停止 Neptune 数据库集群
<a name="manage-console-stopping"></a>

当您一段时间不使用它时，您可以停止正在运行的 Neptune 数据库集群，然后在需要时重新启动它。在停止集群后，您需要在指定的保留时段内为集群存储、手动快照和自动备份存储付费，但不需要为数据库实例小时数付费。

停止操作会先停止所有集群的只读副本实例，然后停止主实例，以避免激活故障转移机制。

### 使用停止数据库集群 AWS 管理控制台
<a name="manage-console-stopping-console"></a>

**使用停止 Neptune 集群 AWS 管理控制台**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 在导航窗格中，选择 **Databases (数据库)**，然后选择集群。您可以从该页面中执行停止操作，或者导航到要停止的数据库集群的详细信息页面。

1. 在 **Actions (操作)** 中，选择 **Stop (停止)**。

### 使用停止数据库集群 AWS CLI
<a name="manage-console-stopping-cli"></a>

要使用停止数据库实例 AWS CLI，请调用[stop-db-cluster](api-clusters.md#StopDBCluster)命令，使用`--db-cluster-identifier`参数标识要停止的数据库集群。

**Example**  

```
aws neptune stop-db-cluster --db-cluster-identifier mydbcluster
```

### 使用 Neptune 管理 API 停止数据库集群
<a name="manage-console-stopping-api"></a>

要使用 Neptune 管理 API [停止数据库实例，请调用 Stop DBCluster](api-clusters.md#StopDBCluster) API 并使用`DBClusterIdentifier`参数标识要停止的数据库集群。

### 数据库集群停止后会发生什么
<a name="manage-console-stopped"></a>
+ 您**可以**从快照还原它（请参阅[从数据库集群快照还原](backup-restore-restore-snapshot.md)）。
+ 您**无法**修改该数据库集群或其任何数据库实例的配置。
+ 您**无法**从集群中添加或删除数据库实例。
+ 如果集群仍有任何关联的数据库实例，则您**无法**删除此集群。
+ 通常，您必须重新启动已停止的数据库集群才能执行大多数管理操作。
+ 一旦再次启动停止的集群，Neptune 会将任何计划的维护应用于此集群。请记住，七天后，Neptune 自动重新启动停止的集群，以使其维护状态不会落后太多。
+ Neptune 不会对已停止的数据库集群执行任何自动备份，因为在集群停止时无法更改基础数据。
+ Neptune 不会延长数据库集群停止时的备份保留期。

## 启动已停止的 Neptune 数据库集群
<a name="manage-console-start"></a>

您只能启动处于停止状态的 Neptune 数据库集群。在启动集群时，它的所有数据库实例将再次变得可用。集群保留其配置设置，例如，终端节点、参数组和 VPC 安全组。

### 使用启动已停止的数据库集群 AWS 管理控制台
<a name="manage-console-start-console"></a>

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 在导航窗格中，选择 **Databases (数据库)**，然后选择集群。您可以从该页面中执行启动操作，或者导航到该数据库集群的详细信息页面并从那里启动。

1. 在 **Actions (操作)** 中，选择 **Start (启动)**。

### 使用启动已停止的数据库集群 AWS CLI
<a name="manage-console-start-cli"></a>

要使用启动已停止的数据库集群 AWS CLI，请使用`--db-cluster-identifier`参数调用[start-db-cluster](api-clusters.md#StartDBCluster)命令以指定要启动的已停止数据库集群。提供您在创建数据库集群时选择的集群名称，或使用您选择的在其末尾附加 `-cluster` 的数据库实例名称。

**Example**  

```
aws neptune start-db-cluster --db-cluster-identifier mydbcluster
```

### 使用 Neptune 管理 API 启动已停止的数据库集群
<a name="manage-console-start-api"></a>

要使用 Neptune 管理 API 启动 Neptune 数据库集群，请使用`DBCluster`参数调用 Start DBCluster API 以指定要[启动](api-clusters.md#StartDBCluster)的已停止数据库集群。提供您在创建数据库集群时选择的集群名称，或使用您选择的在其末尾附加 `-cluster` 的数据库实例名称。

# 使用快速重置 API 清空 Amazon Neptune 数据库集群
<a name="manage-console-fast-reset"></a>

Neptune 快速重置 REST API 允许您快速轻松地重置 Neptune 图形，同时删除其所有数据。

您可以使用 [%db\$1reset](#manage-console-fast-reset-db-reset-magic) 行魔术命令在 Neptune 笔记本中执行此操作。
+ 在大多数情况下，快速重置操作会在几分钟内完成。持续时间可能会有所不同，具体取决于启动操作时集群上的负载。
+ 快速重置操作不会导致额外的 I/O。
+ 快速重置后，存储卷大小不会缩小。取而代之的是，当插入新数据时，存储空间会被重复使用。这意味着在快速重置操作之前和之后拍摄的快照的卷大小将相同。使用在快速重置操作之前和之后创建的快照的已还原集群的卷大小也将相同。
+ 作为重置操作的一部分，数据库集群中的所有实例都将重启。
**注意**  
在极少数情况下，这些服务器重启也可能导致集群的失效转移。

**重要**  
使用快速重置可能会破坏您的 Neptune 数据库集群与其它服务的集成。例如：  
快速重置会从您的数据库中删除所有流数据并完全重置流。这意味着，如果没有新的配置，流使用者可能无法再工作。
快速重置会移除 Neptune ML 正在使用的 SageMaker AI 资源的所有元数据，包括作业和端点。它们继续存在于 SageMaker AI 中，你可以继续使用现有的 A SageMaker I 端点进行 Neptune ML 推理查询，但是 Neptune ML 管理 APIs 不再使用它们。
诸如与的集成之类的 full-text-search集成也会 ElasticSearch 被快速重置所清除，并且必须手动重新建立这些集成，然后才能再次使用。

**使用 API 从 Neptune 数据库集群中删除所有数据**

1. 首先，生成一个令牌，然后可以使用该令牌来执行数据库重置。此步骤旨在帮助防止任何人意外重置数据库。

   为此，您可以向数据库集群的写入器实例上的 `/system` 端点发送 `HTTP POST` 请求以指定 `initiateDatabaseReset` 操作。

   使用 JSON 内容类型的 `curl` 命令将是：

   ```
   curl -X POST \
     -H 'Content-Type: application/json' \
         https://your_writer_instance_endpoint:8182/system \
     -d '{ "action" : "initiateDatabaseReset" }'
   ```

   或者，使用 `x-www-form-urlencoded` 内容类型：

   ```
   curl -X POST \
     -H 'Content-Type: application/x-www-form-urlencoded' \
         https://your_writer_instance_endpoint:8182/system \
     -d 'action=initiateDatabaseReset '
   ```

   `initiateDatabaseReset` 请求在其 JSON 响应中返回重置令牌，如下所示：

   ```
   {
     "status" : "200 OK",
     "payload" : {
       "token" : "new_token_guid"
     }
   }
   ```

   令牌在发出后一小时（60 分钟）内保持有效。

   如果您将请求发送到读取器实例或状态端点，Neptune 将引发 `ReadOnlyViolationException`。

   如果您发送多个 `initiateDatabaseReset` 请求，则只有最新生成的令牌将对第二步有效，即您实际执行重置操作。

   如果服务器在您的 `initiateDatabaseReset` 请求后立即重启，则生成的令牌将失效，您需要发送新请求才能获取新令牌。

1. 接下来，您将使用从 `initiateDatabaseReset` 中获得的令牌，将 `performDatabaseReset` 请求发送到数据库集群的写入器实例上的 `/system` 端点。这将从数据库集群中删除所有数据。

   使用 JSON 内容类型的 `curl` 命令是：

   ```
   curl -X POST \
     -H 'Content-Type: application/json' \
         https://your_writer_instance_endpoint:8182/system \
     -d '{
           "action" : "performDatabaseReset",
           "token" : "token_guid"
         }'
   ```

   或者，使用 `x-www-form-urlencoded` 内容类型：

   ```
   curl -X POST \
     -H 'Content-Type: application/x-www-form-urlencoded' \
         https://your_writer_instance_endpoint:8182/system \
     -d 'action=performDatabaseReset&token=token_guid'
   ```

   该请求会返回 JSON 响应。如果请求被接受，则响应为：

   ```
   {
     "status" : "200 OK"
   }
   ```

   如果您发送的令牌与发出的令牌不匹配，则响应如下所示：

   ```
   {
     "code" : "InvalidParameterException",
     "requestId":"token_guid",
     "detailedMessage" : "System command parameter 'token' : 'token_guid' does not match database reset token"
   }
   ```

   如果请求被接受并且重置开始，则服务器将重启并删除数据。在数据库集群重置期间，您无法向其发送任何其它请求。

## 使用带有 IAM-Auth 的快速重置 API
<a name="manage-console-fast-reset-iam-auth"></a>

如果您在数据库集群上启用了 IAM-Auth，则可以使用 [awscurl](https://github.com/okigan/awscurl) 发送使用 IAM-Auth 进行身份验证的快速重置命令：

**使用 awscurl 通过 IAM-Auth 发送快速重置请求**

1. 正确设置 `AWS_ACCESS_KEY_ID` 和 `AWS_SECRET_ACCESS_KEY` 环境变量（如果您使用的是临时凭证，也要正确设置 `AWS_SECURITY_TOKEN`）。

1. `initiateDatabaseReset` 请求类似于以下内容：

   ```
   awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \
     -H 'Content-Type: application/json' --region us-west-2 \
     -d '{ "action" : "initiateDatabaseReset" }'
   ```

1. `performDatabaseReset` 请求类似于以下内容：

   ```
   awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \
     -H 'Content-Type: application/json' --region us-west-2 \
     -d '{ "action" : "performDatabaseReset" }'
   ```

## 使用 Neptune Workbench `%db_reset` 行魔术命令重置数据库集群
<a name="manage-console-fast-reset-db-reset-magic"></a>

Neptune Workbench 支持 `%db_reset` 行魔术命令，可让您在 Neptune 笔记本中快速重置数据库。

如果您在没有任何参数的情况下调用魔术命令，则会看到一个屏幕，询问您是否要删除集群中的所有数据，并显示一个复选框，要求您确认在删除集群数据后，这些数据将不再可用。此时，您可以选择继续删除数据，也可以取消操作。

更危险的选项是使用 `--yes` 或 `-y` 选项调用 `%db_reset`，这会导致在没有进一步提示的情况下执行删除。

您也可以分两步执行重置，就像使用 REST API 一样：

```
%db_reset --generate-token
```

响应如下：

```
{
  "status" : "200 OK",
  "payload" : {
    "token" : "new_token_guid"
  }
}
```

然后执行以下操作：

```
%db_reset --token new_token_guid
```

响应如下：

```
{
  "status" : "200 OK"
}
```

## 快速重置操作的常见错误代码
<a name="manage-console-fast-reset-common-error-codes"></a>


| Neptune 错误代码 | HTTP 状态 | Message | 示例 | 
| --- | --- | --- | --- | 
| `InvalidParameterException` | 400 | 系统命令参数 “*action*” 的值不支持 “” *XXX* | 参数无效 | 
| `InvalidParameterException` | 400 | 为以下各项提供的值太多：*action* | 带有多个操作的快速重置请求，标题为 “内容类型:Application/” x-www-form-urlencoded | 
| `InvalidParameterException` | 400 | 重复字段“action” | 发送了一个包含多个操作的快速重置请求，其标头为“Content-Type: application/json” | 
| `MethodNotAllowedException` | 400 | 错误的路线：/*bad\$1endpoint* | 请求发送到错误的端点 | 
| `MissingParameterException` | 400 | 缺少必需参数：[action] | 快速重置请求不包含所需的“action”参数 | 
| `ReadOnlyViolationException` | 400 | 不允许对只读副本实例进行写入操作 | 快速重置请求已发送到读取器或状态端点 | 
| `AccessDeniedException` | 403 | 身份验证令牌缺失 | 向启用了 IAM-Auth 的数据库端点发送了没有正确签名的快速重置请求 | 
| `ServerShutdownException` | 500 | 数据库重置正在进行中。请在集群可用后重试查询。 | 当快速重置开始时，现有和传入的 Gremlin/Sparql 查询会失败。 | 

# 将 Neptune 读取器实例添加到数据库集群
<a name="manage-console-add-replicas"></a>

在 Neptune 数据库集群中，有一个主数据库实例和最多 15 个 Neptune 读取器实例。主数据库实例支持读取和写入操作，并执行针对集群卷的所有数据修改。Neptune 读取器实例连接到与主数据库实例相同的存储卷，并且仅支持读取操作。

使用读取器副本从主数据库实例中分载读取工作负载。

我们建议您将数据库集群中的主实例和 Neptune 读取器分配到多个可用区，以提高数据库集群的可用性。

[以下章节](manage-console-create-replica.md)介绍如何在数据库集群中创建读取器实例。

# 使用控制台创建 Neptune 读取器实例
<a name="manage-console-create-replica"></a>

为 Neptune 数据库集群创建主实例后，您可以使用 Neptune 控制台添加其它 Neptune 读取器实例。

**使用 AWS 管理控制台创建 Neptune 阅读器实例**

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

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

1. 选择要在其中创建读取器实例的数据库集群。

1. 选择**操作**，然后选择**添加读取器**。

1. 在**创建副本数据库实例**页面上，指定 Neptune 副本的选项。下表显示 Neptune 只读副本的设置。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/manage-console-create-replica.html)

1. 选择**创建只读副本**以创建 Neptune 副本实例。

要从数据库集群中移除 Neptune 读取器实例，请按照[在 Amazon Neptune 中删除数据库实例](manage-console-instances-delete.md)中的说明进行操作。

# 使用控制台修改 Neptune 数据库集群
<a name="manage-console-modify"></a>

使用修改数据库实例时 AWS 管理控制台，您可以通过选择立即应用来选择**立即应用**更改。如果您选择立即应用更改，将立即应用您的新更改以及等待修改队列中的所有更改。

如果您没有选择立即应用更改，更改将被放置在等待修改队列中。队列中的所有等待更改都将在下一维护时段应用。

**重要**  
如果任何等待修改需要停机，选择立即应用更改可导致相应的数据库实例意外停机。数据库集群中的其他数据库实例则无停机。

**注意**  
在 Neptune 中修改数据库集群时，**立即应用**设置仅影响对**数据库集群标识符**、**IAM 数据库身份验证**的更改。所有其他修改会立即应用，而不管**立即应用**设置的值如何。

**使用控制台修改数据库集群**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 在导航窗格中，选择**集群**，然后选择要修改的数据库集群。

1. 选择**操作**，然后选择**修改集群**。此时会显示**修改数据库集群**页面。

1. 根据需要更改任意设置。
**注意**  
 在控制台中，某些实例级别更改仅适用于当前数据库实例，而其他更改适用于整个数据库集群。要在控制台中更改设置，而该设置在实例级别修改整个数据库集群，请按照[修改数据库集群中的数据库实例](#manage-console-modify-instance)中的说明操作。

1. 当所有更改都达到您的要求时，选择 **Contiune (继续)** 并查看摘要。

1. 要立即应用更改，请选择**立即应用**。

1. 在确认页面上，检查您的更改。如果更改正确无误，请选择**修改集群**以保存更改。

   要编辑您的更改，请选择 **Back (返回)**，要取消更改，请选择 **Cancel (取消)**。

## 修改数据库集群中的数据库实例
<a name="manage-console-modify-instance"></a>

**使用控制台修改数据库集群中的数据库实例**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 在导航窗格中，选择**实例**，然后选择要修改的数据库实例。

1. 选择**实例操作**，然后选择**修改**。将显示 **Modify DB Instance (修改数据库实例)** 页面。

1. 根据需要更改任意设置。
**注意**  
某些设置应用于整个数据库集群，并且必须在集群级别进行更改。要更改这些设置，请按照[使用控制台修改 Neptune 数据库集群](#manage-console-modify)中的说明操作。  
 在中 AWS 管理控制台，一些实例级别的更改仅适用于当前数据库实例，而另一些则适用于整个数据库集群。

1. 当所有更改都达到您的要求时，选择 **Contiune (继续)** 并查看摘要。

1. 要立即应用更改，请选择**立即应用**。

1. 在确认页面上，检查您的更改。如果更改正确无误，请选择 **Modify DB Instance (修改数据库实例)** 保存更改。

   要编辑您的更改，请选择 **Back (返回)**，要取消更改，请选择 **Cancel (取消)**。

# Amazon Neptune 中的性能和扩展
<a name="manage-console-performance-scaling"></a>

Neptune 数据库集群和实例可以在三个不同级别上进行扩展：
+ [存储扩展](#manage-console-performance-scaling-storage)
+ [实例扩展；](#manage-console-performance-scaling-instances)
+ [读取扩展](#manage-console-performance-scaling-reads)

## Neptune 中的存储扩展
<a name="manage-console-performance-scaling-storage"></a>

Neptune 存储会自动根据集群卷中的数据进行扩展。随着数据的增长，您的集群卷存储也在增长，除中国和 GovCloud（存储容量仅限于 64TiB）外，所有受支持区域的存储容量都高达 128TiB。

每小时检查一次集群卷的大小，以确定您的存储成本。

Neptune 数据库消耗的存储空间按每 GB 月增量计费，消耗的 I/O 按每百万请求增量计费。您只需为您的 Neptune 数据库消耗的存储空间和 I/O 付费，无需提前预调配。

有关定价信息，请参阅 [Neptune 产品页](https://aws.amazon.com/neptune/pricing)。

## 在 Neptune 中扩展实例
<a name="manage-console-performance-scaling-instances"></a>

可通过修改数据库集群中每个数据库实例的数据库实例类来按需扩展 Neptune 数据库集群。Neptune 支持多种优化型数据库实例类。

## Neptune 中的读取扩展
<a name="manage-console-performance-scaling-reads"></a>

可通过在数据库集群中创建最多 15 个 Neptune 副本来实现针对 Neptune 数据库集群的读取扩展。每个 Neptune 副本均返回集群卷中的相同数据，且副本滞后时间最短（通常大大少于主实例写入更新后的 100 毫秒）。当读取流量增大时，可创建额外 Neptune 副本并直接连接到这些副本，为您的数据库集群分配读取负载。Neptune 副本不必具有与主实例相同的数据库实例类。

有关将 Neptune 副本添加到数据库集群的信息，请参阅[添加读取器实例](manage-console-create-replica.md)。

# 自动扩缩 Amazon Neptune 数据库集群中的副本数量
<a name="manage-console-autoscaling"></a>

您可以使用 Neptune 自动扩缩来自动调整数据库集群中 Neptune 副本的数量，以满足您的连接和工作负载要求。自动扩缩可让您的 Neptune 数据库集群处理工作负载的增加，然后，当工作负载减少时，自动扩缩会删除不必要的副本，这样您就无需为未使用的容量付费。

只能对已经有一个主写入器实例和至少一个只读副本实例的 Neptune 数据库集群使用自动扩缩（请参阅[Amazon Neptune 数据库集群和实例](feature-overview-db-clusters.md)）。此外，集群中的所有只读副本实例都必须处于可用状态。如果任何只读副本处于除可用状态以外的状态，则在集群中的每个只读副本都可用之前，Neptune 自动扩缩不会执行任何操作。

如果您需要创建新的集群，请参阅[创建 Neptune 集群](get-started-create-cluster.md)。

使用 AWS CLI，您可以定义[扩展策略](#manage-console-autoscaling-define-policy)并将其应用于数据库集群。也可以使用 AWS CLI 来编辑或删除您的自动扩缩策略。该策略指定以下自动扩缩参数：
+ 集群中要具有的最小和最大副本数。
+ 副本添加扩展活动之间的 `ScaleOutCooldown` 间隔和副本删除缩减活动之间的 `ScaleInCooldown` 间隔。
+ CloudWatch 指标和用于纵向扩展或缩减的指标触发值。

可以通过多种方式减小 Neptune 自动扩缩操作的频率：
+ 最初，为自动扩缩以添加或删除读取器，必须突破 `CPUUtilization` 高警报达至少 3 分钟，或者必须突破低警报达至少 15 分钟。
+ 在首次添加或删除之后，后续 Neptune 自动扩缩操作的频率受到自动扩缩策略中 `ScaleOutCooldown` 和 `ScaleInCooldown` 设置的限制。

如果您正在使用的 CloudWatch 指标达到您在策略中指定的高阈值，自上次自动扩缩操作以来经过了 `ScaleOutCooldown` 间隔，并且，如果数据库集群还没有您设置的最大副本数，则 Neptune 自动扩缩会使用与数据库集群的主实例相同的实例类型创建一个新的副本。

同样，如果指标达到您指定的低阈值，自上次自动扩缩操作以来经过了 `ScaleInCooldown` 间隔，并且，如果您的数据库集群的副本数量超过了您指定的最小副本数，Neptune 自动扩缩会删除其中一个副本。

**注意**  
Neptune 自动扩缩仅移除它创建的副本。它不会移除先前存在的副本。

使用 [neptune\$1autoscaling\$1config](parameters.md#parameters-db-cluster-parameters-neptune_autoscaling_config) 数据库集群参数，您还可以指定 Neptune 自动扩缩创建的新只读副本的实例类型、这些只读副本的维护时段以及要与每个新只读副本关联的标签。您可以在 JSON 字符串中提供这些配置设置作为 `neptune_autoscaling_config` 参数的值，如下所示：

```
"{
  \"tags\": [
    { \"key\" : \"reader tag-0 key\", \"value\" : \"reader tag-0 value\" },
    { \"key\" : \"reader tag-1 key\", \"value\" : \"reader tag-1 value\" },
  ],
  \"maintenanceWindow\" : \"wed:12:03-wed:12:33\",
  \"dbInstanceClass\" : \"db.r5.xlarge\"
}"
```

请注意，JSON 字符串中的引号必须全部使用反斜杠字符 (`\`) 进行转义。像往常一样，字符串中的所有空格都是可选的。

`neptune_autoscaling_config` 参数中未指定的三个配置设置中的任何一个都是从数据库集群的主写入器实例的配置中复制的。

当[自动扩缩](https://docs.aws.amazon.com/autoscaling/plans/userguide/)添加新的只读副本实例时，它会在数据库实例 ID 前加上`autoscaled-reader` 前缀（例如 `autoscaled-reader-7r7t7z3lbd-20210828`）。它还会为它创建的每个只读副本添加一个标签，其键为 `autoscaled-reader`，值为 `TRUE`。您可以在 AWS 管理控制台中的数据库实例详细信息页面的**标签**选项卡上看到此标签。

```
 "key" : "autoscaled-reader",  "value" : "TRUE"
```

通过自动扩缩创建的所有只读副本实例的提升层为最低优先级，默认情况下为 `15`。这意味着在失效转移期间，任何优先级更高的副本（如手动创建的副本）会先提升。请参阅[Neptune 数据库集群的容错能力](backup-restore-overview-fault-tolerance.md)。

Neptune 自动扩缩是使用 Application Auto Scaling 实现的，其[目标跟踪扩展策略](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-target-tracking.html)使用 Neptune [`CPUUtilization`](cw-metrics.md#cw-metrics-available) CloudWatch 指标作为预定义指标。

## 在 Neptune 无服务器数据库集群中使用自动扩缩
<a name="autoscaling-with-serverless"></a>

当需求超过实例的容量时，Neptune 无服务器的响应速度比 Neptune 自动扩缩的速度快得多，并可以纵向扩展实例而不是添加另一个实例。自动扩缩旨在适应相对稳定的工作负载增加或减少，而无服务器则擅长处理需求中的快速峰值和抖动。

了解它们的优势，您可以将自动扩缩和无服务器结合起来，以创建一个灵活的基础设施，该基础设施将高效地处理工作负载的变化并满足需求，同时最大限度地降低成本。

为了让自动扩缩与无服务器有效协作，务必将[无服务器集群的 `maxNCU`](neptune-serverless-capacity-scaling.md#neptune-serverless-capacity-range-max) 设置配置得足够高，以适应需求的峰值和短暂变化。否则，瞬态更改不会触发无服务器扩展，这可能会导致自动扩缩启动许多不必要的额外实例。如果 `maxNCU` 设置得足够高，则无服务器扩展可以更快、以更低的成本处理这些变化。

## 如何为 Amazon Neptune 启用自动扩缩
<a name="manage-console-autoscaling-enable"></a>

只能使用 AWS CLI 为 Neptune 数据库集群启用自动扩缩。您无法使用 AWS 管理控制台启用自动扩缩。

此外，以下 Amazon 区域不支持自动扩缩：
+ 非洲（开普敦）：`af-south-1`
+ 中东（阿联酋）：`me-central-1`
+ AWS GovCloud（美国东部）：`us-gov-east-1`
+ AWS GovCloud（美国西部）：`us-gov-west-1`

为 Neptune 数据库集群启用自动扩缩涉及三个步骤：

### 1. 向 Application Auto Scaling 注册数据库集群
<a name="manage-console-autoscaling-register"></a>

为 Neptune 数据库集群启用自动扩缩的第一步是使用 AWS CLI 或其中一个 Application Auto Scaling SDK 向 Application Auto Scaling 注册该集群。集群必须已经有一个主实例和至少一个只读副本实例：

例如，要注册一个集群以通过一个至八个其它副本进行自动扩缩，可以按如下方式使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/register-scalable-target.html) 命令：

```
aws application-autoscaling register-scalable-target \
  --service-namespace neptune \
  --resource-id cluster:(your DB cluster name) \
  --scalable-dimension neptune:cluster:ReadReplicaCount \
  --min-capacity 1 \
  --max-capacity 8
```

这等同于使用 [https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html](https://docs.aws.amazon.com/ApplicationAutoScaling/latest/APIReference/API_RegisterScalableTarget.html) Application Auto Scaling API 操作。

AWS CLI `register-scalable-target` 命令使用以下参数：
+ ** `service-namespace`** – 设置为 `neptune`。

  此参数与 Application Auto Scaling API 中的 `ServiceNamespace` 参数相同。
+ **`resource-id`** – 将其设置为 Neptune 数据库集群的资源标识符。资源类型为 `cluster`，后跟冒号 ('`:`')，然后是数据库集群的名称。

  此参数与 Application Auto Scaling API 中的 `ResourceID` 参数相同。
+ **`scalable-dimension`** – 在本例中，可扩展维度是数据库集群中副本实例的数量，因此您可以将此参数设置为 `neptune:cluster:ReadReplicaCount`。

  此参数与 Application Auto Scaling API 中的 `ScalableDimension` 参数相同。
+ **`min-capacity`** – 由 Application Auto Scaling 管理的最小读取器数据库副本实例数。该值应设置在 0 到 15 的范围内，并且必须等于或小于在 `max-capacity` 中为最大 Neptune 副本数量指定的值。数据库集群中必须至少有一个读取器才能进行自动扩缩。

  此参数与 Application Auto Scaling API 中的 `MinCapacity` 参数相同。
+ **`max-capacity`** – 数据库集群中读取器数据库副本实例的最大数量，包括预先存在的实例和由 Application Auto Scaling 管理的新实例。此值必须设置在 0 到 15 的范围内，并且必须等于或大于在 `min-capacity` 中为最小 Neptune 副本数量指定的值。

  `max-capacity` AWS CLI 参数与 Application Auto Scaling API 中的 `MaxCapacity` 参数相同。

注册数据库集群时，Application Auto Scaling 会创建一个 `AWSServiceRoleForApplicationAutoScaling_NeptuneCluster` 服务相关角色。有关更多信息，请参阅《Application Auto Scaling 用户指南》**中的 [Application Auto Scaling 服务相关角色](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html)。

### 2. 定义用于数据库集群的自动扩缩策略
<a name="manage-console-autoscaling-define-policy"></a>

目标跟踪扩展策略定义为一个 JSON 文本对象，也可以将其保存在文本文件中。对于 Neptune，此策略目前只能使用 Neptune [`CPUUtilization`](cw-metrics.md#cw-metrics-available) CloudWatch 指标作为名为 `NeptuneReaderAverageCPUUtilization` 的预定义指标。

以下是 Neptune 的目标跟踪扩展配置策略示例：

```
{
  "PredefinedMetricSpecification": { "PredefinedMetricType": "NeptuneReaderAverageCPUUtilization" },
  "TargetValue": 60.0,
  "ScaleOutCooldown" : 600,
  "ScaleInCooldown" : 600
}
```

此处的 **`TargetValue`** 元素包含 CPU 利用率的百分比，高于该百分比的自动扩缩会*横向扩展*（即添加更多副本），低于该百分比则会*横向缩减*（即删除副本）。在这种情况下，触发扩展的目标百分比为 `60.0`%。

**`ScaleInCooldown`** 元素指定在一个横向缩减活动完成后，另一个横向缩减可以开始前的时长（秒）。默认值为 300 秒。这里，值为 600 指定一个副本删除完成与开始另一个副本删除之间必须经过至少十分钟。

**`ScaleOutCooldown`** 元素指定在一个横向扩展活动完成后，另一个横向扩展可以开始前的时长（秒）。默认值为 300 秒。这里，值为 600 指定一个副本添加完成与开始另一个副本添加之间必须经过至少十分钟。

**`DisableScaleIn`** 元素是一个布尔值，如果存在并设置为 `true`，则完全禁用横向缩减，这意味着自动扩缩可能会添加副本，但从不会删除任何副本。默认情况下，横向缩减处于启用状态，并且 `DisableScaleIn` 为 `false`。

### 
<a name="manage-console-autoscaling-apply-policy"></a>

向 Application Auto Scaling 注册 Neptune 数据库集群并在文本文件中定义 JSON 扩展策略后，接下来将扩展策略应用于已注册的数据库集群。您可以使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令执行此操作，参数如下：

```
aws application-autoscaling put-scaling-policy \
  --policy-name (name of the scaling policy) \
  --policy-type TargetTrackingScaling \
  --resource-id cluster:(name of your Neptune DB cluster) \
  --service-namespace neptune \
  --scalable-dimension neptune:cluster:ReadReplicaCount \
  --target-tracking-scaling-policy-configuration file://(path to the JSON configuration file)
```

应用自动扩缩策略后，将在数据库集群上启用自动扩缩。

您也可以使用 AWS CLI[https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/put-scaling-policy.html) 命令更新现有的自动扩缩策略。

另请参阅《Application Auto Scaling API 参考》**中的 [PutScalingPolicy](https://docs.aws.amazon.com/autoscaling/application/APIReference/API_PutScalingPolicy.html)。

## 从 Neptune 数据库集群中移除自动扩缩
<a name="manage-console-autoscaling-delete"></a>

要从 Neptune 数据库集群中移除自动扩缩，请使用 AWS CLI [delete-scaling-policy](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/delete-scaling-policy.html) 和 [deregister-scalable-target](https://docs.aws.amazon.com/cli/latest/reference/application-autoscaling/deregister-scalable-target.html) 命令。

# 维护 Amazon Neptune 数据库集群
<a name="cluster-maintenance"></a>

Neptune 会定期对其使用的所有资源执行维护，包括：
+ **必要时更换底层硬件。**这种情况发生在后台，您无需采取任何行动，而且通常不会影响您的操作。
+ **更新底层操作系统。**数据库集群中实例的操作系统升级是为了提高性能和安全性，因此，通常应尽快完成升级。通常而言，更新大约需要花费 10 分钟。操作系统更新不会更改数据库实例的数据库引擎版本或数据库实例类。

  通常最好先更新数据库集群中的读取器实例，然后更新写入器实例。在发生失效转移时，同时更新读取器和写入器可能会导致停机。注意，在操作系统更新之前，数据库实例不会自动备份，因此，请务必在应用操作系统更新之前进行手动备份。
+ **更新 Neptune 数据库引擎。**Neptune 定期发布各种引擎更新，以引入新特征和改进并修复错误。

## 引擎版本号
<a name="engine-version-numbers"></a>

### 引擎版本 1.3.0.0 之前的版本编号
<a name="older-engine-numbers"></a>

在 2019 年 11 月之前，Neptune 一次仅支持一个引擎版本，引擎版本号均采用 `1.0.1.0.200<xxx>` 形式，其中 `xxx` 为补丁号。所有新引擎版本均作为早期版本的补丁发布。

自 2019 年 11 月起，Neptune 开始支持多个版本，使客户能够更好地控制他们的升级路径。因此，引擎版本编号发生了变化。

从 2019 年 11 月到[引擎版本 1.3.0.0](engine-releases-1.3.0.0.md)，引擎版本号分为 5 个部分。以版本号 `1.0.2.0.R2` 为例：
+ 第一部分始终是 1。
+ 第二部分 `0`（在 `1.0.2.0.R2` 中）是数据库的主要版本号。
+ 第三部分和第四部分 `2.0`（在 `1.0.2.0.R2` 中）都是次要版本号。
+ 第五部分 `R2`（在 `1.0.2.0.R2` 中）是补丁号。

大多数更新都是补丁更新，补丁和次要版本更新之间的区别并不总是很清楚。

### 自引擎版本 1.3.0.0 起的版本编号
<a name="current-engine-numbers"></a>

从[引擎版本 1.3.0.0](engine-releases-1.3.0.0.md) 开始，Neptune 改变了引擎更新的编号和管理方式。

引擎版本号现在有四个部分，每个部分对应于一种版本类型，如下所示：

    *product-version***.***major-version***.***minor-version***.***patch-version*

以前作为补丁发布的那种不间断的更改现在作为次要版本发布，您可以使用 [`AutoMinorVersionUpgrade`](engine-maintenance-management.md#using-amvu) 实例设置对其进行管理。

这意味着，如果您愿意，则每次发布新的次要版本时，都可以通过订阅 [`RDS-EVENT-0156`](event-lists.md#RDS-EVENT-0156) 事件来接收通知（请参阅[订阅 Neptune 事件通知](events-subscribing.md)）。

补丁版本现在保留用于紧急的定向修复，并使用版本号的最后一部分（`*.*.*.1`、`*.*.*.2` 等）进行编号。

# Amazon Neptune 中不同类型的引擎版本
<a name="release-types"></a>

与引擎版本号的四个部分相对应的四种引擎版本如下所示：
+ **产品版本** - 只有当产品在功能或界面上发生彻底的根本性变化时，才会更改此版本。当前 Neptune 产品版本为 1。
+ [**主要版本**](#major-versions) - 主要版本引入了重要的新特征和重大更改，其使用寿命通常至少为两年。
+ [**次要版本**](#minor-versions) - 次要版本可以包含新特征、改进和错误修复，但不包含任何重大更改。您可以选择是否在下一个维护时段内自动应用它们，也可以选择在发布时接收通知。
+ [**补丁版本**](#patch-version-updates) - 发布补丁版本仅用于解决紧急错误修复或关键安全更新。它们很少包含重大更改，并且会在发布后的下一个维护时段内自动应用。

## Amazon Neptune 主要版本更新
<a name="major-versions"></a>

主要版本更新通常会引入一个或多个重要的新特征，且通常包含重大更改。它的支持寿命通常约为两年。[引擎版本](engine-releases.md)中列出了 Neptune 的主要版本，及其发布日期和预计的使用寿命。

在您使用的主要版本到期之前，主要版本更新完全是可选的。如果您选择升级到新的主要版本，则必须使用 AWS CLI 或 Neptune 控制台自行安装新版本，如中所述。[主要版本升级](engine-updates-manually.md)

但是，如果您使用的主要版本已过期，则系统会通知您需要升级到最新的主要版本。然后，如果您没有在通知后的宽限期内进行升级，则系统会自动安排在下一个维护时段内升级到最新的主要版本。请参阅[引擎版本的使用寿命](engine-updates-eol-planning.md)了解更多信息。

## Amazon Neptune 次要版本更新
<a name="minor-versions"></a>

大多数 Neptune 引擎更新都是次要版本更新。它们经常发生，并且不包含重大更改。

如果您在数据库集群的写入器（主）实例中将 [`AutoMinorVersionUpgrade`](engine-maintenance-management.md#using-amvu) 字段设置为 `true`，则次要版本更新将在数据库集群中的所有实例发布后的下一个维护时段内自动应用于这些实例。

如果您在数据库集群的写入器实例中将 [`AutoMinorVersionUpgrade`](engine-maintenance-management.md#using-amvu) 字段设置为 `false`，则只有在您[明确安装](engine-updates-manually.md)时才会应用这些更新。

**注意**  
次要版本更新是独立的（它们不依赖于以前对同一主要版本的次要版本更新）累积更新（它们包含先前次要版本更新中引入的所有特征和修复）。这意味着，无论您是否安装了以前的次要版本更新，您都可以安装任何给定的次要版本更新。

通过订阅 [`RDS-EVENT-0156`](event-lists.md#RDS-EVENT-0156) 事件，可以轻松跟踪次要版本的发布（参见[订阅 Neptune 事件通知](events-subscribing.md)）。然后，每次发布新的次要版本时，您都会收到通知。

此外，无论您是否订阅通知，您都可以随时[查看哪些更新有待处理](engine-maintenance-management.md#check-pending-updates)。

## Amazon Neptune 补丁版本更新
<a name="patch-version-updates"></a>

如果出现影响实例可靠性的安全问题或其他严重缺陷，则 Neptune 会部署强制补丁。它们将在下一个维护时段应用于数据库集群中的所有实例，而无需您进行任何干预。

只有在不部署补丁版本的风险超过与部署补丁版本相关的风险和停机时间时，才会部署补丁版本。补丁版本很少发生（通常几个月一次），并且几乎不会需要过长的维护时段。

# 规划 Amazon Neptune 主要引擎版本的使用寿命
<a name="engine-updates-eol-planning"></a>

Neptune 引擎版本几乎总是在日历季度末达到使用寿命的尽头。只有在出现重大的安全或可用性问题时，才会出现例外。

当引擎版本达到其使用寿命结束时，您需要将 Neptune 数据库升级到较新的版本。

通常，Neptune 引擎版本将继续可用，如下所示：
+ **次要引擎版本：**次要引擎版本在发布后的至少 6 个月内保持可用。
+ **主要引擎版本：**主要引擎版本在发布后的至少 12 个月内保持可用。

在引擎版本终止使用前至少 3 个月，系统 AWS 会自动向与您的 AWS 账户关联的电子邮件地址发送电子邮件通知，并将相同的消息发布到您的 Healt [AWS h Das](https://docs.aws.amazon.com/health/latest/ug/aws-health-dashboard-status.html) hboard。这将使您有时间计划和准备升级。

当引擎版本达到其使用寿命结束时，您将无法再使用该版本创建新的集群或实例，自动缩放功能也无法使用该版本创建实例。

实际达到使用寿命结束的引擎版本将在维护时段期间自动升级。在引擎版本使用寿命结束前 3 个月发送给您的邮件将包含有关此自动更新将涉及的内容的详细信息，包括您将自动升级到的版本、对数据库集群的影响以及我们建议的操作。

**重要**  
您有责任使数据库引擎版本保持最新。 AWS 敦促所有客户将其数据库升级到最新的引擎版本，以便从最新的安全、隐私和可用性保护措施中受益。如果您在弃用日期之后在不受支持的引擎或软件（“旧版引擎”）上运行数据库，则更有可能面临安全、隐私和运营风险，包括停机事件。  
在任何引擎上操作您的数据库均受管理您使用 AWS 服务的协议的约束。传统引擎并非普遍可用。 AWS 不再为传统引擎提供支持，如果 AWS 确定旧版引擎对服务、其关联公司或任何第三方构成安全或责任风险或损害风险，则 AWS 可以随时限制对任何传统引擎的访问或使用。 AWS您决定继续在旧版引擎中运行您的内容可能会导致您的内容不可用、损坏或无法恢复。在旧版引擎上运行的数据库受服务水平协议 (SLA) 例外情况的约束。  
在旧版引擎上运行的数据库和相关软件包含错误、错误、缺陷和 AND/OR 有害组件。因此，无论协议或服务条款中有任何相反之处，都 AWS 是 “按原样” 提供传统引擎。

# 管理 Neptune 数据库集群的引擎更新
<a name="engine-maintenance-management"></a>

**注意**  
更新将同时应用于数据库集群中的所有实例。更新操作需要在这些实例上重启数据库，因此，会出现从 20 或 30 秒到几分钟的停机，之后您可以继续使用数据库集群。在极少数情况下，可能需要多可用区失效转移才能完成实例的维护更新。  
对于可能需要更长时间才能应用的主要版本升级，您可以使用[蓝绿部署策略](neptune-BG-deployments.md)，最大限度地减少停机时间。

## 确定您当前使用的引擎版本
<a name="check-current-engine-version"></a>

您可以使用 AWS CLI [`get-engine-status`](access-graph-status.md)命令来检查您的数据库集群当前使用的引擎发行版本：

```
aws neptunedata get-engine-status
```

[JSON 输出](access-graph-status.md#access-graph-status-sample-output)包含 `"dbEngineVersion"` 字段，如下所示：

```
  "dbEngineVersion": "1.3.0.0",
```

## 查看哪些更新有待处理且可用
<a name="check-pending-updates"></a>

您可以使用 Neptune 控制台检查数据库集群的待处理更新。在左列中选择**数据库**，然后在数据库窗格中选择您的数据库集群。待处理的更新列在**维护**列中。如果您依次选择**操作**和**维护**，则有三种操作选择：
+ 立即升级。
+ 在下一个时段升级。
+ 推迟升级。

您可以使用以下方式列出待处理的 AWS CLI 引擎更新：

```
aws neptune describe-pending-maintenance-actions \
  --resource-identifier (ARN of your DB cluster)
  --region (your region) \
  --engine neptune
```

您也可以按 AWS CLI 如下方式列出可用的引擎更新：

```
aws neptune describe-db-engine-versions \
  --region (your region) \
  --engine neptune
```

可用的引擎版本列表仅包括版本号高于当前版本且已定义升级路径的那些版本。

## 升级前始终先测试
<a name="always-test-before-upgrading"></a>

发布新的主要或次要 Neptune 引擎版本时，请务必先在该版本上测试您的 Neptune 应用程序，然后再升级到该版本。次要版本升级可能引入会影响代码的新特征或行为，即使没有任何重大更改也如此。

首先，将当前版本的发行说明页面与目标版本的发行说明页面进行比较，以查看查询语言版本是否会发生变化或是否会发生其它重大更改。

在升级生产数据库集群之前测试新版本的最佳方法是使用 [Neptune 蓝绿部署解决方案](neptune-BG-deployments.md)。这样，您就可以在新版本上运行应用程序和查询，而不会影响您的生产数据库集群。

## 请在升级之前始终创建手动快照
<a name="engine-version-snapshot-before-upgrading"></a>

在执行升级之前，我们强烈建议您始终创建数据库集群的手动快照。拥有自动快照只能提供短期保护，而手动快照在您显式删除它之前仍然可用。

在某些情况下，作为升级过程的一部分，Neptune 会为您创建手动快照，但您不应依赖此快照，无论如何都应创建自己的手动快照。

当您确定不需要将数据库集群恢复到其升级前的状态时，可以显式删除自己创建的手动快照以及 Neptune 可能已创建的手动快照。如果 Neptune 创建手动快照，则其名称将以 `preupgrade` 开头，后跟数据库集群的名称、源引擎版本、目标引擎版本和日期。

## Neptune 维护时段
<a name="manage-console-maintaining-window"></a>

每周维护时段为 30 分钟，在此期间将应用定期引擎更新和其他系统更改。大部分维护事件将在 30 分钟的维护时段内完成，但较大的维护事件有时可能需要更长时间才能完成。

每个数据库集群都有每周 30 分钟的维护时段。如果在创建数据库集群时未为其指定首选时段，则 Neptune 随机选择一周中的某一天，然后从这一天 8 小时的时间块中随机分配 30 分钟的时段（随区域的不同而变化）。

例如，以下是多个 AWS 区域使用的维护时段的 8 小时时间块：


****  
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/engine-maintenance-management.html)

维护时段决定待处理操作何时开始，大多数维护操作都是在该时段内完成的，但是较大的维护任务可以在该时段结束之后继续进行。

### 移动数据库集群维护时段
<a name="manage-console-maintaining-adjusting-window"></a>

理想情况下，您的维护时段应在集群使用率最低的时候。如果您的当前时段不在这时候，则您可以将其移到更好的时间，如下所示：

**更改数据库集群维护时段**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

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

1. 选择要更改维护时段的数据库集群。

1. 选择**修改**。

1. 在**修改集群**页面底部选择**显示更多**。

1. 在**首选维护时段**部分，根据需要设置维护时段的日期、时间和持续时间。

1. 选择**下一步**。

   在确认页面上，检查您的更改。

1. 要立即应用对维护时段的更改，请选择**立即应用**。

1.  选择**提交**以应用更改。

   要编辑您的更改，请选择**以前**，要取消更改，请选择**取消**。

## AutoMinorVersionUpgrade 用于控制次要版本的自动更新
<a name="using-amvu"></a>

**重要**  
`AutoMinorVersionUpgrade` 仅对[引擎版本 1.3.0.0](engine-releases-1.3.0.0.md) 以上的次要版本升级有效。

如果您在数据库集群的写入器（主）实例中将 `AutoMinorVersionUpgrade` 字段设置为 `true`，则次要版本更新将在数据库集群中的所有实例发布后的下一个维护时段内自动应用于这些实例。

如果您在数据库集群的写入器实例中将 `AutoMinorVersionUpgrade` 字段设置为 `false`，则只有在您[明确安装](engine-updates-manually.md#engine-minor-updates-using-console)时才会应用这些更新。

**注意**  
无论 `AutoMinorVersionUpgrade` 参数的设置方式如何，补丁版本（`*.*.*.1`、`*.*.*.2` 等）总是在下一个维护时段内自动安装。

您可以按 AWS 管理控制台 如下方式`AutoMinorVersionUpgrade`进行设置：

**使用 Neptune 控制台设置 `AutoMinorVersionUpgrade`**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

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

1. 选择要为其设置 `AutoMinorVersionUpgrade` 的数据库集群的主（写入器）实例。

1. 选择 **Modify**(修改)。

1. 在**修改集群**页面底部选择**显示更多**。

1. 在展开页面的底部，选择**开启自动次要版本升级**或**关闭自动次要版本升级**。

1. 选择**下一步**。

   在确认页面上，检查您的更改。

1. 要应用对自动次要版本升级的更改，请选择**立即应用**。

1.  选择**提交**以应用更改。

   要编辑您的更改，请选择**以前**，要取消更改，请选择**取消**。

您也可以使用 AWS CLI 来设置字`AutoMinorVersionUpgrade`段。例如，要将其设置为 `true`，您可以使用如下命令：

```
1. aws neptune modify-db-instance \
2.   --db-instance-identifier (the ID of your cluster's writer instance) \
3.   --auto-minor-version-upgrade \
4.   --apply-immediately
```

同样，要将其设置为 `false`，可使用如下命令：

```
1. aws neptune modify-db-instance \
2.   --db-instance-identifier (the ID of your cluster's writer instance) \
3.   --no-auto-minor-version-upgrade \
4.   --apply-immediately
```

# 手动安装 Neptune 引擎的更新
<a name="engine-updates-manually"></a>

## 安装主要版本引擎升级
<a name="engine-major-updates-manually"></a>

必须始终手动安装主要引擎版本。为了最大限度地减少停机时间并留出充足的时间进行测试和验证，安装新的主要版本的最佳方法通常是使用 [Neptune 蓝绿部署解决方案](neptune-BG-deployments.md)。

在某些情况下，您还可以使用创建数据库集群时使用的 CloudFormation 模板来安装主要版本升级（请参阅[使用 CloudFormation 模板更新 Neptune 数据库集群的引擎版本](cfn-engine-update.md)）。

如果要立即安装主要版本更新，则可以使用如下所示的 CLI 命令：

```
aws neptune modify-db-cluster \
  --db-cluster-identifier (identifier for your neptune cluster) \
  --engine neptune \
  --engine-version (the new engine version) \
  --apply-immediately
```

确保指定要升级的引擎版本。如果不这样做，您的引擎可能会升级到非最新版本或不是您期望的版本。

您可以指定 `--no-apply-immediately`，而不是 `--apply-immediately`。

如果集群使用自定义集群参数组，请确保指定使用此参数：

```
  --db-cluster-parameter-group-name (name of the custom DB cluster parameter group)
```

同样，如果集群中的任何实例使用自定义数据库参数组，请确保指定它使用此参数：

```
  ---db-instance-parameter-group-name (name of the custom instance parameter group)
```

## 使用安装次要版本引擎升级 AWS 管理控制台
<a name="engine-minor-updates-using-console"></a>

**使用 Neptune 控制台执行次要版本升级**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

1. 在导航窗格中，选择**数据库**，然后选择您希望修改的数据库集群。

1. 选择 **Modify**(修改)。

1. 在**实例规格**下，选择要升级的新版本。

1. 选择**下一步**。

1. 如果要立即应用更改，请选择**立即应用**。

1. 选择**提交**以更新您的数据库集群。

## 使用安装次要版本引擎升级 AWS CLI
<a name="engine-updates-using-cli"></a>

您可以使用如下命令来执行次要版本升级，而无需等待下一个维护时段：

```
aws neptune modify-db-cluster \
  --db-cluster-identifier (your-neptune-cluster) \
  --engine-version (new-engine-version) \
  --apply-immediately
```

如果您使用手动升级 AWS CLI，请务必包括要升级到的引擎版本。如果不这样做，您的引擎可能会升级到非最新版本或不是您期望的版本。

# 从 1.2.0.0 之前的版本升级到引擎版本 1.2.0.0 或更高版本
<a name="engine-updates-1200-changes"></a>

[引擎版本 1.2.0.0](engine-releases-1.2.0.0.md) 引入了几项重大更改，这些更改可能会使从早期版本升级变得更加复杂：
+ [引擎版本 1.2.0.0](engine-releases-1.2.0.0.md) 为自定义参数组和自定义集群参数组引入了一种新格式。因此，如果您要从 1.2.0.0 之前的引擎版本升级到引擎版本 1.2.0.0 或更高版本，则必须使用参数组系列 `neptune1.2` 重新创建所有现有的自定义参数组和自定义集群参数组。早期版本使用参数组系列 `neptune1`，而这些参数组不适用于版本 1.2.0.0 及更高版本。请参阅[Amazon Neptune 参数组](parameter-groups.md)了解更多信息。
+ 引擎版本 1.2.0.0 引入了一种新的撤消日志格式。因此，如果您要从 1.2.0.0 之前的版本升级到 1.2.0.0 或更高版本，则该[`UndoLogListSize`](cw-metrics.md#cw-metrics-UndoLogListSize)指标必须低于某个阈值。否则，补丁将回滚并失败。阈值基于实例类型：4xlarge 或更大的实例的默认限制为 40k，小于 4xlarge 的实例的默认限制为 10k。如果您尝试升级时`UndoLogListSize`超过限制，则补丁过程将回滚，升级将被取消，并且集群事件页面上将显示一个包含原因的事件。这些限制可能会因操作原因而发生变化，恕不另行警告。

  您可以通过升级集群的写入器实例（清除发生的地方）来加快清除速率。在尝试升级之前这样做可以帮助降低适用的阈值以`UndoLogListSize`下。将写入器的大小增加到 24XL 实例类型，可以将清除率提高到每小时超过一百万条记录。

  如果`UndoLogListSize` CloudWatch 指标非常大，则提出支持案例可以帮助您探索其他策略，将其降至所需限制以下。
+ 最后，1.2.0.0 版本中有一项重大变化，会影响之前使用 Bolt 协议和 IAM 身份验证的代码。从版本 1.2.0.0 开始，Bolt 需要一个用于 IAM 签名的资源路径。在 Java 中，设置资源路径可能如下所示：`request.setResourcePath("/openCypher"));`。在其它语言中，可以将 `/openCypher` 附加到端点 URI 之后。有关示例，请参阅 [使用 Bolt 协议](access-graph-opencypher-bolt.md)。

# 使用 CloudFormation 模板更新 Neptune 数据库集群的引擎版本
<a name="cfn-engine-update"></a>

您可以重复使用用于创建 Nept CloudFormation une 数据库集群的 Neptune 模板来更新其引擎版本。

Neptune 引擎版本升级可以是次要版本升级，也可以是主要版本升级。使用 CloudFormation 模板可以帮助进行主要版本升级，其中通常包含重大更改。由于主要版本升级可能包含不与现有应用程序向后兼容的数据库更改，因此在升级时您可能还需要对应用程序进行更改。请务必[在升级之前进行测试](engine-maintenance-management.md#always-test-before-upgrading)，我们强烈建议您在升级之前，始终创建数据库集群的手动快照。

请注意，您必须为每个主要版本单独进行引擎升级。您不能跳过某个主要版本并直接升级到以下主要版本。

在 2023 年 5 月 17 日之前，如果您使用 Neptune CloudFormation 堆栈升级引擎版本，它只会创建一个新的空数据库集群来代替当前的数据库集群。但是，从2023年5月17日起，Neptune CloudFormation 堆栈现在支持就地升级引擎，以保留您的现有数据。

**注意**  
 如果您使用的是 AWS Cloud Development Kit (AWS CDK)，请确保使用的 AWS CDK 版本是 2.82.0 或更高版本。2.82.0 之前的版本不支持就地升级 Neptune 引擎。

对于主要版本升级，您的模板应在 `DBCluster` 中设置以下属性：
+ `DBClusterParameterGroup`（自定义或默认）
+ `DBInstanceParameterGroupName`
+ `EngineVersion`

同样，要 DBInstances 附加到， DBCluster 则应设置：
+ `DBParameterGroup`（自定义/默认）

确保在模板中定义了所有参数组，无论它们是默认参数组还是自定义参数组。

对于自定义参数组，请确保现有自定义参数组系列与新的引擎版本兼容。[1.2.0.0](engine-releases-1.2.0.0.md) 之前的引擎版本使用参数组系列 `neptune1`，而 1.2.0.0 以后的引擎版本需要参数组系列 `neptune1.2`。请参阅[Amazon Neptune 参数组](parameter-groups.md)了解更多信息。

对于主要引擎版本升级，请在 `DBCluster` `DBInstanceParameterGroupName` 字段中指定具有相应系列的参数组。

应将默认参数组升级为与新引擎版本兼容的参数组。

请注意，Neptune 会在引擎升级后自动重启数据库实例。

**Topics**
+ [示例：从 1.2.0.1 到 1.2.0.2 的次要版本引擎升级](cfn-engine-update-1201-1202.md)
+ [示例：使用默认参数组将主要版本从 1.1.1.0 升级到 1.2.0.2](cfn-engine-update-1110-1202-default.md)
+ [示例：使用自定义参数组将主要版本从 1.1.1.0 升级到 1.2.0.2](cfn-engine-update-1110-1202-custom.md)
+ [示例：混合使用默认参数组和自定义参数组，将主要版本从 1.1.1.0 升级到 1.2.0.2](cfn-engine-update-1110-1202-mixed.md)

# 示例：从 1.2.0.1 到 1.2.0.2 的次要版本引擎升级
<a name="cfn-engine-update-1201-1202"></a>

找到要升级的数据库集群，以及用于创建数据库集群的模板。例如：

```
Description: Base Template to create Neptune Stack with Engine Version 1.2.0.1 using custom Parameter Groups
Parameters:
  DbInstanceType:
    Description: Neptune DB instance type
    Type: String
    Default: db.r5.large
Resources:
  NeptuneDBClusterParameterGroup:
    Type: 'AWS::Neptune::DBClusterParameterGroup'
    Properties:
      Family: neptune1.2
      Description: test-cfn-neptune-db-cluster-parameter-group-description
      Parameters:
        neptune_enable_audit_log: 0
  NeptuneDBParameterGroup:
    Type: 'AWS::Neptune::DBParameterGroup'
    Properties:
      Family: neptune1.2
      Description: test-cfn-neptune-db-parameter-group-description
      Parameters:
        neptune_query_timeout: 20000
  NeptuneDBCluster:
    Type: 'AWS::Neptune::DBCluster'
    Properties:
      EngineVersion: 1.2.0.1
      DBClusterParameterGroupName:
        Ref: NeptuneDBClusterParameterGroup
    DependsOn:
      - NeptuneDBClusterParameterGroup
  NeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
      DBParameterGroupName:
        Ref: NeptuneDBParameterGroup
    DependsOn:
      - NeptuneDBCluster
      - NeptuneDBParameterGroup
Outputs:
  DBClusterId:
    Description: Neptune Cluster Identifier
    Value:
      Ref: NeptuneDBCluster
```

将 `EngineVersion` 属性从 `1.2.0.1` 更新为 `1.2.0.2`：

```
Description: Template to upgrade minor engine version to 1.2.0.2
Parameters:
  DbInstanceType:
    Description: Neptune DB instance type
    Type: String
    Default: db.r5.large
Resources:
  NeptuneDBClusterParameterGroup:
    Type: 'AWS::Neptune::DBClusterParameterGroup'
    Properties:
      Family: neptune1.2
      Description: test-cfn-neptune-db-cluster-parameter-group-description
      Parameters:
        neptune_enable_audit_log: 0
  NeptuneDBParameterGroup:
    Type: 'AWS::Neptune::DBParameterGroup'
    Properties:
      Family: neptune1.2
      Description: test-cfn-neptune-db-parameter-group-description
      Parameters:
        neptune_query_timeout: 20000
  NeptuneDBCluster:
    Type: 'AWS::Neptune::DBCluster'
    Properties:
      EngineVersion: 1.2.0.2
      DBClusterParameterGroupName:
        Ref: NeptuneDBClusterParameterGroup
    DependsOn:
      - NeptuneDBClusterParameterGroup
  NeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
      DBParameterGroupName:
        Ref: NeptuneDBParameterGroup
    DependsOn:
      - NeptuneDBCluster
      - NeptuneDBParameterGroup
Outputs:
  DBClusterId:
    Description: Neptune Cluster Identifier
    Value:
      Ref: NeptuneDBCluster
```

现在使用 CloudFormation 来运行修改后的模板。

# 示例：使用默认参数组将主要版本从 1.1.1.0 升级到 1.2.0.2
<a name="cfn-engine-update-1110-1202-default"></a>

找到要升级的 `DBCluster`，以及用于创建数据库集群的模板。例如：

```
Description: Base Template to create Neptune Stack with Engine Version 1.1.1.0 using default Parameter Groups
Parameters:
  DbInstanceType:
    Description: Neptune DB instance type
    Type: String
    Default: db.r5.large
Resources:
  NeptuneDBCluster:
    Type: 'AWS::Neptune::DBCluster'
    Properties:
      EngineVersion: 1.1.1.0
  NeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
    DependsOn:
      - NeptuneDBCluster
Outputs:
  DBClusterId:
    Description: Neptune Cluster Identifier
    Value:
      Ref: NeptuneDBCluster
```
+ 将默认 `DBClusterParameterGroup` 更新为新引擎版本（此处为 `default.neptune1.2`）使用的参数组系列中的参数组。
+ 对于附加到 `DBCluster` 的每个 `DBInstance`，请将默认 `DBParameterGroup` 更新为新引擎版本（此处为 `default.neptune1.2`）使用的系列中的参数组。
+ 将 `DBInstanceParameterGroupName` 属性设置为该系列中的默认参数组（此处为 `default.neptune1.2`）。
+ 将 `EngineVersion` 属性从 `1.1.0.0` 更新为 `1.2.0.2`：

模板应该如下所示：

```
Description: Template to upgrade major engine version to 1.2.0.2 by using upgraded default parameter groups
Parameters:
  DbInstanceType:
    Description: Neptune DB instance type
    Type: String
    Default: db.r5.large
Resources:
  NeptuneDBCluster:
    Type: 'AWS::Neptune::DBCluster'
    Properties:
      EngineVersion: 1.2.0.2
      DBClusterParameterGroupName: default.neptune1.2
      DBInstanceParameterGroupName: default.neptune1.2
  NeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
      DBParameterGroupName: default.neptune1.2
    DependsOn:
      - NeptuneDBCluster
Outputs:
  DBClusterId:
    Description: Neptune Cluster Identifier
    Value:
```

现在使用 CloudFormation 来运行修改后的模板。

# 示例：使用自定义参数组将主要版本从 1.1.1.0 升级到 1.2.0.2
<a name="cfn-engine-update-1110-1202-custom"></a>

找到要升级的 `DBCluster`，以及用于创建数据库集群的模板。例如：

```
Description: Base Template to create Neptune Stack with Engine Version 1.1.1.0 using custom Parameter Groups 
Parameters:
  DbInstanceType:
    Description: Neptune DB instance type
    Type: String
    Default: db.r5.large
Resources:
  NeptuneDBClusterParameterGroup:
    Type: 'AWS::Neptune::DBClusterParameterGroup'
    Properties:
      Name: engineupgradetestcpg
      Family: neptune1
      Description: 'NeptuneDBClusterParameterGroup with family neptune1'
      Parameters:
        neptune_enable_audit_log: 0
  NeptuneDBParameterGroup:
    Type: 'AWS::Neptune::DBParameterGroup'
    Properties:
      Name: engineupgradetestpg
      Family: neptune1
      Description: 'NeptuneDBParameterGroup1 with family neptune1'
      Parameters:
        neptune_query_timeout: 20000
  NeptuneDBCluster:
    Type: 'AWS::Neptune::DBCluster'
    Properties:
      EngineVersion: 1.1.1.0
      DBClusterParameterGroupName:
        Ref: NeptuneDBClusterParameterGroup
    DependsOn:
      - NeptuneDBClusterParameterGroup
  NeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
      DBParameterGroupName:
        Ref: NeptuneDBParameterGroup
    DependsOn:
      - NeptuneDBCluster
      - NeptuneDBParameterGroup
Outputs:
  DBClusterId:
    Description: Neptune Cluster Identifier
    Value:
      Ref: NeptuneDBCluster
```
+ 将自定义 `DBClusterParameterGroup` 系列更新为新引擎版本（此处为 `default.neptune1.2`）使用的系列。
+ 对于附加到 `DBCluster` 的每个 `DBInstance`，请将自定义 `DBParameterGroup` 系列更新为新引擎版本（此处为 `default.neptune1.2`）所使用的系列。
+ 将 `DBInstanceParameterGroupName` 属性设置为该系列中的参数组（此处为 `default.neptune1.2`）。
+ 将 `EngineVersion` 属性从 `1.1.0.0` 更新为 `1.2.0.2`：

模板应该如下所示：

```
Description: Template to upgrade major engine version to 1.2.0.2 by modifying existing custom parameter groups
Parameters:
  DbInstanceType:
    Description: Neptune DB instance type
    Type: String
    Default: db.r5.large
Resources:
  NeptuneDBClusterParameterGroup:
    Type: 'AWS::Neptune::DBClusterParameterGroup'
    Properties:
      Name: engineupgradetestcpgnew
      Family: neptune1.2
      Description: 'NeptuneDBClusterParameterGroup with family neptune1.2'
      Parameters:
        neptune_enable_audit_log: 0
  NeptuneDBParameterGroup:
    Type: 'AWS::Neptune::DBParameterGroup'
    Properties:
      Name: engineupgradetestpgnew
      Family: neptune1.2
      Description: 'NeptuneDBParameterGroup1 with family neptune1.2'
      Parameters:
        neptune_query_timeout: 20000
  NeptuneDBCluster:
    Type: 'AWS::Neptune::DBCluster'
    Properties:
      EngineVersion: 1.2.0.2
      DBClusterParameterGroupName:
        Ref: NeptuneDBClusterParameterGroup
      DBInstanceParameterGroupName:
        Ref: NeptuneDBParameterGroup
    DependsOn:
      - NeptuneDBClusterParameterGroup
  NeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
      DBParameterGroupName:
        Ref: NeptuneDBParameterGroup
    DependsOn:
      - NeptuneDBCluster
      - NeptuneDBParameterGroup
Outputs:
  DBClusterId:
    Description: Neptune Cluster Identifier
    Value:
      Ref: NeptuneDBCluster
```

现在使用 CloudFormation 来运行修改后的模板。

# 示例：混合使用默认参数组和自定义参数组，将主要版本从 1.1.1.0 升级到 1.2.0.2
<a name="cfn-engine-update-1110-1202-mixed"></a>

找到要升级的 `DBCluster`，以及用于创建数据库集群的模板。例如：

```
Description: Base Template to create Neptune Stack with Engine Version 1.1.1.0 using custom Parameter Groups 
Parameters:
  DbInstanceType:
    Description: Neptune DB instance type
    Type: String
    Default: db.r5.large
Resources:
  NeptuneDBClusterParameterGroup:
    Type: 'AWS::Neptune::DBClusterParameterGroup'
    Properties:
      Family: neptune1
      Description: 'NeptuneDBClusterParameterGroup with family neptune1'
      Parameters:
        neptune_enable_audit_log: 0
  NeptuneDBParameterGroup:
    Type: 'AWS::Neptune::DBParameterGroup'
    Properties:
      Family: neptune1
      Description: 'NeptuneDBParameterGroup with family neptune1'
      Parameters:
        neptune_query_timeout: 20000
  NeptuneDBCluster:
    Type: 'AWS::Neptune::DBCluster'
    Properties:
      EngineVersion: 1.1.1.0
      DBClusterParameterGroupName:
        Ref: NeptuneDBClusterParameterGroup
    DependsOn:
      - NeptuneDBClusterParameterGroup
  CustomNeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
      DBParameterGroupName:
        Ref: NeptuneDBParameterGroup
    DependsOn:
      - NeptuneDBCluster
      - NeptuneDBParameterGroup
  DefaultNeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
    DependsOn:
      - NeptuneDBCluster
Outputs:
  DBClusterId:
    Description: Neptune Cluster Identifier
    Value:
      Ref: NeptuneDBCluster
```
+ 对于自定义集群参数组，请将 `DBClusterParameterGroup` 系列更新为对应于新引擎版本（即 `neptune1.2`）的系列。
+ 对于默认集群参数组，请将 `DBClusterParameterGroup` 更新为与新引擎版本（即 `default.neptune1.2`）相对应的默认参数组。
+ 对于附加到 `DBCluster` 的每个 `DBInstance`，将默认 `DBParameterGroup` 更新为新引擎版本（此处为 `default.neptune1.2`）所使用的系列中的参数组，并将自定义参数组更新为使用由新引擎版本（此处为 `neptune1.2`）支持的系列的参数组。
+ 将 `DBInstanceParameterGroupName` 属性设置为新引擎版本支持的系列中的参数组。

模板应该如下所示：

```
Description: Template to update Neptune Stack to Engine Version 1.2.0.1 using custom and default Parameter Groups 
Parameters:
  DbInstanceType:
    Description: Neptune DB instance type
    Type: String
    Default: db.r5.large
Resources:
  NeptuneDBClusterParameterGroup:
    Type: 'AWS::Neptune::DBClusterParameterGroup'
    Properties:
      Family: neptune1.2
      Description: 'NeptuneDBClusterParameterGroup with family neptune1.2'
      Parameters:
        neptune_enable_audit_log: 0
  NeptuneDBParameterGroup:
    Type: 'AWS::Neptune::DBParameterGroup'
    Properties:
      Family: neptune1.2
      Description: 'NeptuneDBParameterGroup1 with family neptune1.2'
      Parameters:
        neptune_query_timeout: 20000
  NeptuneDBCluster:
    Type: 'AWS::Neptune::DBCluster'
    Properties:
      EngineVersion: 1.2.0.2
      DBClusterParameterGroupName:
        Ref: NeptuneDBClusterParameterGroup
      DBInstanceParameterGroupName: default.neptune1.2
    DependsOn:
      - NeptuneDBClusterParameterGroup
  CustomNeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
      DBParameterGroupName:
        Ref: NeptuneDBParameterGroup
    DependsOn:
      - NeptuneDBCluster
      - NeptuneDBParameterGroup
  DefaultNeptuneDBInstance:
    Type: 'AWS::Neptune::DBInstance'
    Properties:
      DBClusterIdentifier:
        Ref: NeptuneDBCluster
      DBInstanceClass:
        Ref: DbInstanceType
      DBParameterGroupName: default.neptune1.2
    DependsOn:
      - NeptuneDBCluster
Outputs:
  DBClusterId:
    Description: Neptune Cluster Identifier
    Value:
      Ref: NeptuneDBCluster
```

现在使用 CloudFormation 来运行修改后的模板。

# Neptune 中的数据库克隆
<a name="manage-console-cloning"></a>

使用数据库克隆，可以快速而经济高效地在 Amazon Neptune 中创建您的所有数据库的克隆。克隆数据库在首次创建时只需要很少的额外空间。数据库克隆使用*写入时复制协议*。在源数据库或克隆数据库上的数据发生变化时会复制数据。您可以多次克隆同一数据库集群。还可以基于其他克隆来创建更多克隆。有关写入时复制协议在 Neptune 存储上下文中的工作原理的更多信息，请参阅[写入时复制](#manage-console-cloning-protocol)。

您可以在很多情况下使用数据库克隆，特别是在您不希望影响生产环境时，例如：
+ 测试并评估更改的影响，例如架构更改或参数组更改。
+ 执行工作负载密集型操作，例如导出数据或运行分析查询。
+ 在非生产环境中为进行开发或测试创建生产数据库集群的副本。

**使用 AWS 管理控制台创建数据库集群的克隆**

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

1. 在导航窗格中，选择 **Instances (实例)**。选择要创建克隆的数据库集群的主实例。

1. 选择 **Instance actions (实例操作)**，然后选择 **Create clone (创建克隆)**。

1. 在 **Create Clone (创建克隆)** 页面上，输入克隆数据库集群的主实例名称作为 **DB instance identifier (数据库实例标识符)**。

   如果需要，配置克隆数据库集群的任何其他设置。有关不同的数据库集群设置的信息，请参阅[使用控制台启动](manage-console-launch-console.md)。

1. 选择 **Create Clone** 启动克隆数据库集群。

**使用 AWS CLI创建数据库集群的克隆**
+ 调用 Neptune [restore-db-cluster-to-point-in-time](api-snapshots.md#RestoreDBClusterToPointInTime) AWS CLI 命令并提供以下值：
  + `--source-db-cluster-identifier` – 要创建克隆的源数据库集群的名称。
  + `--db-cluster-identifier` – 克隆数据库集群的名称。
  + `--restore-type copy-on-write` – `copy-on-write` 值指示应创建克隆数据库集群。
  + `--use-latest-restorable-time` – 它指定应使用最新的可恢复备份时间。
**注意**  
[restore-db-cluster-to-point-in-time](api-snapshots.md#RestoreDBClusterToPointInTime) AWS CLI 命令仅克隆数据库集群，而不克隆该数据库集群的数据库实例。

  以下 Linux/UNIX 示例从 `source-db-cluster-id` 数据库集群创建一个克隆并将该克隆命名为 `db-clone-cluster-id`。

  ```
  aws neptune restore-db-cluster-to-point-in-time \
    --region us-east-1 \
    --source-db-cluster-identifier source-db-cluster-id \
    --db-cluster-identifier db-clone-cluster-id \
    --restore-type copy-on-write \
    --use-latest-restorable-time
  ```

  如果将 `\` 行尾转义字符替换为 Windows 上的 `^` 等效字符，则该示例也适用于 Windows：

  ```
  aws neptune restore-db-cluster-to-point-in-time ^
    --region us-east-1 ^
    --source-db-cluster-identifier source-db-cluster-id ^
    --db-cluster-identifier db-clone-cluster-id ^
    --restore-type copy-on-write ^
    --use-latest-restorable-time
  ```

## 限制
<a name="manage-console-cloning-limitations"></a>

Neptune 中的数据库克隆具有以下限制：
+ 不能跨 AWS 区域创建克隆数据库。克隆数据库必须在与源数据库相同的区域中创建。
+ 克隆的数据库始终使用从中克隆的源数据库所用 Neptune 引擎版本的最新补丁。即使源数据库尚未升级到该补丁版本也是如此。不过，引擎版本本身不会改变。
+ 目前，Neptune 数据库集群的每个副本最多只能有 15 个克隆，包括基于其它克隆的克隆。达到该限制后，必须制作数据库的另一个副本，而不是克隆它。但是，如果您制作一个新副本，它也可以有多达 15 个克隆。
+ 目前不支持跨账户数据库克隆。
+ 您可以为克隆提供不同的 Virtual Private Cloud (VPC)。不过，在这些 VPC 中的子网必须映射到同一组可用区。

## 数据库克隆的写入时复制协议
<a name="manage-console-cloning-protocol"></a>

以下场景说明了写入时复制协议的工作原理。
+ [克隆之前的 Neptune 数据库](#manage-console-cloning-protocol-before)
+ [克隆之后的 Neptune 数据库](#manage-console-cloning-protocol-after)
+ [当对源数据库进行更改时](#manage-console-cloning-protocol-source-write)
+ [当对克隆数据库进行更改时](#manage-console-cloning-protocol-clone-write)

### 克隆之前的 Neptune 数据库
<a name="manage-console-cloning-protocol-before"></a>

源数据库中的数据以页的形式存储。在下图中，源数据库有四个页面。

![\[数据库克隆之前的 Neptune 源数据库（有 4 个页面）。\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/images/neptune-clone-1.png)


### 克隆之后的 Neptune 数据库
<a name="manage-console-cloning-protocol-after"></a>

如下图所示，在克隆数据库之后，源数据库中没有更改。源数据库和克隆数据库均指向相同的四个页面。没有物理复制任何页面，因此无需额外的存储。

![\[在数据库克隆之后指向相同页面的 Neptune 源数据库和克隆数据库。\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/images/neptune-clone-2.png)


### 当对源数据库进行更改时
<a name="manage-console-cloning-protocol-source-write"></a>

在下面的示例中，源数据库对 `Page 1` 中的数据进行了更改。它使用额外的存储创建名为 `Page 1` 的新页，而不是写入原始 `Page 1'`。源数据库现在指向新 `Page 1'`，也指向`Page 2`、`Page 3` 和 `Page 4`。克隆数据库继续指向 `Page 1` 到 `Page 4`。

![\[在源数据库发生更改后的 Neptune 源数据库和克隆数据库。\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/images/neptune-clone-3.png)


### 当对克隆数据库进行更改时
<a name="manage-console-cloning-protocol-clone-write"></a>

在下图中，克隆数据库还进行了一项更改，这次是在 `Page 4` 中。使用额外的存储创建名为 `Page 4` 的新页，而不是写入原始 `Page 4'`。源数据库继续指向 `Page 1'`，以及 `Page 2` 到 `Page 4`，但克隆数据库现在指向 `Page 1` 到 `Page 3`，以及 `Page 4'`。

![\[在克隆数据库发生更改后的 Neptune 源数据库和克隆数据库。\]](http://docs.aws.amazon.com/zh_cn/neptune/latest/userguide/images/neptune-clone-4.png)


如第二种情况中所示，在数据库克隆之后，创建克隆时无需额外的存储。不过，如第三和第四种情况所示，源数据库和克隆数据库中发生更改之后，将仅创建更改的页面。随着时间推移，当源数据库和克隆数据库上出现了更多更改时，逐渐需要更多存储来捕获和存储更改。

## 删除源数据库
<a name="manage-console-cloning-source-deleting"></a>

删除源数据库不会影响与其关联的克隆数据库。克隆数据库继续指向以前由源数据库拥有的页面。

# 管理 Amazon Neptune 实例
<a name="manage-console-instances"></a>

以下各部分介绍有关实例级别操作的信息。

**Topics**
+ [Neptune T3 可突增实例类](manage-console-instances-t3.md)
+ [修改 Neptune 数据库实例（并立即应用）](manage-console-instances-modify.md)
+ [重命名 Neptune 数据库实例](manage-console-instances-rename.md)
+ [在 Amazon Neptune 中重启数据库实例](manage-console-instances-reboot.md)
+ [在 Amazon Neptune 中删除数据库实例](manage-console-instances-delete.md)

# Neptune T3 可突增实例类
<a name="manage-console-instances-t3"></a>

除固定性能的实例类（例如 `R5` 和 `R6`）之外，Amazon Neptune 还向您提供了使用可突增性能 `T3` 实例的选项。在开发图形应用程序时，您希望数据库既快速又具有响应能力，但您不需要一直使用它。在这种情况下，Neptune 的 `db.t3.medium` 实例类正是您应该使用的，其成本要比最便宜的固定性能实例类低得多。

可突增实例在 CPU 性能的基准级别运行，直到工作负载有更多的需求，然后在工作负载需要的时间内突增到远超基准的水平。它的每小时价格涵盖了突增，前提是平均 CPU 利用率在 24 小时内不超过基准。对于大多数开发和测试情况，这意味着以低成本获得良好的性能。

如果您从 `T3` 实例类开始，则以后在要转入生产阶段时，可以使用 AWS 管理控制台、AWS CLI 或其中一个 AWS SDK 轻松切换到固定性能的实例类。

## T3 突增由 CPU 积分控制
<a name="manage-console-instances-t3-cpu-credits"></a>

一个 CPU 积分表示在一分钟内的完全利用了一个虚拟 CPU 核心 (vCPU)。这也可以转化为一个 vCPU 在两分钟内的 50% 使用率，或两个 vCPU 在两分钟内 25% 的使用率，依此类推。

`T3` 实例在空闲时可累积 CPU 积分，并在处于活动状态使用这些积分，两者的测量精度均为毫秒。`db.t3.medium` 实例类具有两个 vCPU，在空闲时每小时可获得 12 个 CPU 积分。这意味着每个 vCPU 的 20% 利用率可以实现零 CPU 积分余额。获得的 12 个 CPU 积分将按照 vCPU 的 20% 使用率支出（因为 20% 乘以 60 分钟也就是 12）。因此，这个 20% 的利用率是*基准* 利用率，可以得到正好为零的 CPU 积分余额。

空闲时间（CPU 使用率低于总共可用的 20%）可以生成在积分存储桶中存储的 CPU 积分，一个 `db.t3.medium` 实例类的上限为 576（24 小时内可累积的最大 CPU 积分数，即 2 x 12 x 24）。超过该限制后将直接丢弃 CPU 积分。

在必要时，只要工作负载需要，CPU 利用率可以突增至 100%，即使 CPU 积分余额降至零以下。如果实例的负余额持续 24 小时，则该时间段内产生的每 -60 个 CPU 积分会导致 0.05 美元的额外费用。但是，对于大多数开发和测试工作负载，突增前后通常都是空闲时间。

**注意**  
Neptune 的 `T3` 实例类配置方式类似于 Amazon EC2 [无限模式](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/burstable-performance-instances-unlimited-mode.html)。

## 使用 AWS 管理控制台 创建 T3 可突增实例
<a name="manage-console-instances-t3-console"></a>

在 AWS 管理控制台 中，您可以创建使用 `db.t3.medium` 实例类的主数据库集群实例或只读副本实例，也可以修改现有实例以使用 `db.t3.medium` 实例类。

例如，要在 Neptune 控制台中创建新的数据库集群主实例，请执行以下操作：
+ 选择 **Create Database**（创建数据库）。
+ 选择等于或高于 `1.0.2.2` 的**数据库引擎版本**。
+ 在 **Purpose (用途)** 下，选择 **Development and Testing (开发和测试)**。
+ 对于 **DB instance class (数据库实例类)**，接受默认值：`db.t3.medium — 2 vCPU, 4 GiB RAM`。

## 使用 AWS CLI 创建 T3 可突增实例
<a name="manage-console-instances-t3-CLI"></a>

您也可以使用 AWS CLI 执行相同的操作：

```
aws neptune create-db-cluster \
    --db-cluster-identifier (name for a new DB cluster) \
    --engine neptune \
    --engine-version "1.0.2.2"
    
aws neptune create-db-instance \
    --db-cluster-identifier (name of the new DB cluster) \
    --db-instance-identifier (name for the primary writer instance in the cluster) \
    --engine neptune \
    --db-instance-class db.t3.medium
```

# 修改 Neptune 数据库实例（并立即应用）
<a name="manage-console-instances-modify"></a>

您可将大多数更改立即应用到 Amazon Neptune 数据库实例，或者延后直至下一个维护时段。一些修改（例如，参数组更改）需要您手动重新启动数据库实例才能使更改生效。

**重要**  
如果 Neptune 必须重启您的数据库实例才能应用更改，则修改会导致中断。在修改数据库实例设置之前，请先审核对数据库和应用程序的影响。

## 常见设置和停机时间影响
<a name="manage-console-instances-modify-settings"></a>

下表包含有关哪些设置可更改、何时可应用更改、以及更改是否会导致数据库实例停机的详细信息。


****  

| 数据库实例设置 | 停机说明 | 
| --- | --- | 
|  **数据库实例类**   |  无论是立即应用还是在下一个维护时段内应用，此更改期间都会发生中断。  | 
|  **数据库实例标识符**   |  无论是立即应用还是在下一个维护时段内应用，数据库实例都将重启并在该更改期间发生中断。  | 
|  **子网组**   |  无论是立即应用还是在下一个维护时段内应用，数据库实例都将重启并在该更改期间发生中断。  | 
| **安全组** | 无论您指定何时进行更改，更改都会尽快异步应用，不会导致中断。 | – | 
| **证书颁发机构** | 默认情况下，当您分配新的证书颁发机构时，数据库实例会重启。 | 
| **Database Port** | 更改始终立即发生，从而导致数据库实例重启并发生中断。 | 
| **数据库参数组** |  更改此设置不会导致中断。参数组名称本身将立即发生更改，但在您重新启动实例而不进行故障转移之前，不会应用实际参数更改。在这种情况下，数据库实例不会自动重启，参数更改也不会在下一个维护时段中应用。但是，如果修改新关联的数据库参数组中的动态参数，这些更改将立即得到应用，而无需重新启动。 有关更多信息，请参阅 [在 Amazon Neptune 中重启数据库实例](manage-console-instances-reboot.md)。  | 
| **数据库集群参数组** |  数据库参数组名称将立即更改。  | 
| **备份保留期** |  如果您指定更改应立即发生，则此更改将立即发生。否则，如果您将该设置从一个非零值更改为另一个非零值，则将尽快地异步应用更改。任何其它更改都在下一维护时段内发生。如果从零改为非零值或从非零值改为零，则会发生服务中断。  | 
|  **审计日志**  | 如果要通过**日志使用审核**日志，请选择审核 CloudWatch 日志。您还必须将数据库集群参数组中的 `neptune_enable_audit_log` 参数设置为 `enable` (1)，才能启用审计日志记录。 | 
|  **自动次要版本升级**  |  如果要在次要引擎版本升级可用时让 Neptune 数据库集群自动接收这些升级，请选择**启用自动次要版本升级**。 *自动次要版本升级*选项仅适用于升级到 Amazon Neptune 数据库集群的次要引擎版本。它不适用于应用于维持系统稳定性的常规修补程序。  | 

# 重命名 Neptune 数据库实例
<a name="manage-console-instances-rename"></a>

 您可以使用 AWS 管理控制台重命名 Amazon Neptune 数据库实例。重命名数据库实例会产生深远的影响。下面是您在重命名数据库实例前应知道的事情的列表。
+  当您重命名数据库实例时，数据库实例的终端节点会发生更改，因为 URL 包含了您分配给数据库实例的名称。您应当始终将流量从旧的 URL 重定向到新的。
+  当您重命名数据库实例时，数据库实例使用的旧 DNS 名称会立刻被删除，但它可能会在缓存中保留几分钟。已重命名的数据库实例的新 DNS 名称大约在 10 分钟后生效。重命名的数据库实例在新名称生效前不可用。
+  重命名实例时，不能使用现有的数据库实例名称。
+  重命名后，所有与数据库实例关联的只读副本会保持与该实例的关联。例如，假设您有一个为生产数据库服务的数据库实例，而该实例有多个关联的只读副本。如果您重命名该数据库实例，然后在生产环境中将其替换为数据库快照，则您重命名的数据库实例仍会拥有与它关联的只读副本。
+  如果您重复使用数据库实例的名称，则与数据库实例的名称关联的指标和事件保持不变。例如，如果提升一个只读副本，然后将其重命名为以前主实例的名称，则与该主实例关联的事件和指标将与重命名的实例关联。
+  无论是否重命名，数据库实例标签会始终与数据库实例关联在一起。
+  对于重命名的数据库实例，数据库快照也会保留下来。

**使用 Neptune 控制台重命名数据库实例**

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

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

1. 选择要重命名的数据库实例旁边的单选按钮。

1. 在 **Instance actions (实例操作)** 菜单中，选择 **Modify (修改)**。

1.  在 **DB Instance Identifier (数据库实例标识符)** 文本框中，输入一个新名称。选择**立即应用**，然后选择**继续**。

1. 选择**修改数据库实例**以完成更改。

# 在 Amazon Neptune 中重启数据库实例
<a name="manage-console-instances-reboot"></a>

 在某些情况下，如果修改 Amazon Neptune 数据库实例，更改与该实例关联的数据库参数组，或更改实例使用的参数组中的静态数据库参数，则必须重启该实例以应用更改。

重启数据库实例会重新启动数据库引擎服务。此外，重启还会将相关数据库参数组的任何挂起的更改应用于数据库实例。重新启动数据库实例会导致实例短暂中断，在此期间此数据库实例的状态会设置为 *rebooting*。如果为多可用区配置了 Neptune 实例，则可能会通过失效转移进行重启。重启完成后，即会创建 Neptune 事件。

如果您的数据库实例为多可用区部署，则可在选择**重启**选项时强制从一个可用区故障转移到另一个可用区。当强制失效转移数据库实例时，Neptune 自动切换到另一个可用区中的备用副本。然后，它会更新数据库实例的 DNS 记录，使其指向备用数据库实例。因此，您必须清除并重新建立到您的数据库实例的任何现有连接。

如果需要模拟数据库实例故障转移以进行测试，或是在故障转移进行之后将操作还原到原始可用区，**通过故障转移重启**十分有用。有关更多信息，请参阅《Amazon RDS 用户指南》**中的[高可用性（多可用区）](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Concepts.MultiAZ.html)。当您重启数据库集群时，它将故障转移到备用副本。重启 Neptune 副本不会初始化失效转移。

重启所需的时间是崩溃恢复过程的函数。为优化重新启动的时间，建议您在重启过程中尽可能减少数据库活动，以减少中转事务的回滚活动。

在控制台上，如果数据库实例未处于**可用**状态，则**重启**选项可能处于禁用状态。这可能是多个原因导致的，例如，正在进行的备份、客户请求的修改或维护时段操作。

**注意**  
在[版本：1.2.0.0（2022 年 7 月 21 日）](engine-releases-1.2.0.0.md) 之前，每当主（写入器）实例重启时，数据库集群中的所有只读副本都会自动重启。  
从[版本：1.2.0.0（2022 年 7 月 21 日）](engine-releases-1.2.0.0.md) 开始，重启主实例不会导致任何副本重启。这意味着，如果您要更改集群参数，则必须单独重启每个实例才能获得参数更改（请参阅[参数组](parameter-groups.md)）。

**使用 Neptune 控制台重启数据库实例**

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

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

1. 选择要重启的数据库实例。

1.  选择**实例操作**，然后选择**重启**。

1. 要强制从一个可用区失效转移到另一个可用区，请在**重启数据库实例**对话框中选择**是否通过失效转移重启？**。

1. 选择**重启**。要取消重启，请改为选择**取消**。

# 在 Amazon Neptune 中删除数据库实例
<a name="manage-console-instances-delete"></a>

您可以随时删除处于任何状态的 Amazon Neptune 数据库实例，前提是实例已启动。

**警告**  
 如果您使用 **Web 控制台**删除集群中剩下的最后一个实例，它也会删除底层集群存储卷。

## 在删除数据库实例之前为其拍摄最终快照
<a name="manage-console-instances-final-snapshot"></a>

 要删除数据库实例，您必须指定该实例的名称以及是否要为该实例拍摄一个最终的数据库快照。如果要删除的数据库实例的状态为**正在创建**，则无法拍摄最终数据库快照。如果数据库实例处于状态为**失败**、**不兼容恢复**或**不兼容网络**的失败状态，则只能在 `SkipFinalSnapshot` 参数设置为 `true` 时删除该实例。

如果您使用删除数据库集群中的所有 Neptune 数据库实例 AWS 管理控制台，则会自动删除整个数据库集群。如果您使用的是 AWS CLI 或 SDK，则必须在删除最后一个实例后手动删除数据库集群。

**重要**  
如果您删除整个数据库集群，则会同时删除其所有自动备份，并且无法恢复。这意味着，除非您选择手动创建最终数据库快照，否则您以后无法将数据库实例还原到其最终状态。在删除集群时，不会删除实例的手动快照。

如果要删除的数据库实例有一个只读副本，应提升该只读副本或将其删除。

在以下示例中，介绍了如何删除一个数据库实例，包括有最终数据库快照和无最终数据库快照两种情况。

## 删除无最终快照的数据库实例
<a name="manage-console-instances-delete-no-snapshot"></a>

如果要快速删除数据库实例，则可以跳过创建最终数据库快照的步骤。删除数据库实例时，会删除所有的自动备份，且无法恢复。手动快照不会删除。

**使用 Neptune 控制台删除数据库实例且不制作最终数据库快照**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

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

1. 在**实例**列表中，选择要删除的数据库实例旁边的单选按钮。

1. 选择**实例操作**，然后选择**删除**。

1.  在**是否创建最终快照?** 框中选择**否**。

1.  选择**删除**。

## 删除有最终快照的数据库实例
<a name="manage-console-instances-delete-with-snapshot"></a>

如果希望以后能还原所删除的数据库实例，您可以创建最终数据库快照。所有自动备份也会被删除，且无法恢复。手动快照不会删除。

**使用 Neptune 控制台删除数据库实例但制作最终数据库快照**

1. [登录 AWS 管理控制台，然后在家中打开 Amazon Neptune https://console.aws.amazon.com/neptune/ 主机。](https://console.aws.amazon.com/neptune/home)

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

1. 在**实例**列表中，选择要删除的数据库实例旁边的单选按钮。

1. 选择**实例操作**，然后选择**删除**。

1.  在**是否创建最终快照?** 框中选择**是**。

1.  在 **Final snapshot name (最终快照名称)** 框中，键入最终数据库快照的名称。

1.  选择**删除**。

您可以检查实例的运行状况，确定实例的类型，查明当前安装的引擎版本，并使用[实例状态 API](access-graph-status.md) 获取有关实例的其他信息。