使用Amazon Neptune - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用Amazon Neptune

您可以将新的 Neptune 数据库集群创建为无服务器集群,或者在某些情况下,您可以将现有数据库集群转换为使用无服务器集群。您还可以将无服务器数据库集群中的数据库实例与无服务器实例进行转换。你只能在支持 Neptune Serverless Amazon Web Services 区域 的地方使用,但有一些其他限制(参见Amazon Neptune Ne)。

您也可以使用 Neptune Amazon CloudFormation 堆栈创建 Neptune 无服务器数据库集群。

创建使用无服务器的新数据库集群

要创建使用无服务器的 Neptune 数据库集群,您可以使用与创建预配置集群相同的方式来创建。Amazon Web Services Management Console不同之处在于,在数据库实例大小下,您需要将数据库实例类设置为无服务器。当你这样做时,你需要设置群集的无服务器容量范围

您也可以使用 with 命令创建无服务器数据库集群,如下所Amazon CLI示(在 Windows 上,将 '\' 替换为 '^'):

aws neptune create-db-cluster \ --region (an Amazon Web Services 区域 region that supports serverless) \ --db-cluster-identifier (ID for the new serverless DB cluster) \ --engine neptune \ --engine-version (optional: 1.2.0.1 or above) \ --serverless-v2-scaling-configuration "MinCapacity=1.0, MaxCapacity=128.0"

你也可以像这样指定serverless-v2-scaling-configuration参数:

--serverless-v2-scaling-configuration '{"MinCapacity":1.0, "MaxCapacity":128.0}'

然后,您可以运行该ServerlessV2ScalingConfiguration属性的describe-db-clusters命令,该命令应返回您指定的容量范围设置:

"ServerlessV2ScalingConfiguration": { "MinCapacity": (the specified minimum number of NCUs), "MaxCapacity": (the specified maximum number of NCUs) }

将现有数据库集群或实例转换为无服务器

如果您有一个使用引擎版本 1.2.0.1 或更高版本的 Neptune 数据库集群,则可以将其转换为无服务器。此过程确实会导致一些停机时间。

第一步是向现有集群添加容量范围。你可以使用或使用这样的Amazon CLI命令来执行此操作(在 Windows 上,将 '\' 替换为 '^'):Amazon Web Services Management Console

aws neptune modify-db-cluster \ --db-cluster-identifier (your DB cluster ID) \ --serverless-v2-scaling-configuration \ MinCapacity=(minimum number of NCUs, such as 2.0), \ MaxCapacity=(maximum number of NCUs, such as 24.0)

下一步是创建一个新的无服务器数据库实例,以替换集群中现有的主实例(写入器)。同样,您可以使用Amazon Web Services Management Console或来执行此操作和所有后续步骤Amazon CLI。在这两种情况下,将数据库实例类指定为无服务器。该Amazon CLI命令将如下所示(在 Windows 上,将 '\' 替换为 '^'):

aws neptune create-db-instance \ --db-instance-identifier (an instance ID for the new writer instance) \ --db-cluster-identifier (ID of the DB cluster) \ --db-instance-class db.serverless --engine neptune

当新的 writer 实例可用时,执行故障转移以使其成为群集的 writer 实例:

aws neptune failover-db-cluster \ --db-cluster-identifier (ID of the DB cluster) \ --target-db-instance-identifier (instance ID of the new serverless instance)

接下来,删除旧的 writer 实例:

aws neptune delete-db-instance \ --db-instance-identifier (instance ID of the old writer instance) \ --skip-final-snapshot

最后,执行同样的操作,创建一个新的无服务器实例,以取代您想要变为无服务器实例的每个现有预置读取器实例,然后删除现有的预配置实例(读取器实例无需故障转移)。

将单个预配置的数据库实例更改为无服务器

您还可以将单个预置数据库实例转换为Neptune Serverless。您可以使用如下modify-db-instance命令Amazon CLI在中执行此操作:

aws neptune modify-db-instance \ --db-instance-identifier (your DB instance ID) \ --serverless-v2-scaling-configuration \ MinCapacity=(minimum number of NCUs, such as 3.5), \ MaxCapacity=(maximum number of NCUs, such as 24.0)

请注意,您为该实例设置的容量范围将应用于集群中的所有 Serverless 实例(如果有多个)。

您也可以使用 Neptune 控制台将单个预置实例切换到无服务器:

使用控制台将预配置的数据库实例更改为 Serverless
  1. 登录Amazon管理控制台并通过以下网址打开 Amazon Neptune 控制台:https://console.aws.amazon.com/neptune/home

  2. 导航到要更改预置数据库实例。

  3. 选择修改按钮。

  4. 在 “引擎类型” 下,选择 “无服务器”。

  5. 您现在可以选择容量范围。请注意,如果您在此处设置新的容量范围,则该范围将应用于数据库集群中的每个 Serverless 实例。

  6. 根据需要进行任何其他更改,然后在页面底部选择 “继续”。

  7. 查看更改并选择是在下一个预定维护时段内进行还是立即进行更改。

  8. 选择修改数据库实例

修改现有无服务器数据库集群的容量范围

你可以使用Amazon CLI这样的方法更改 Neptune Serverless 数据库集群的容量范围(在 Windows 上,将 '\' 替换为 '^'):

aws neptune modify-db-cluster \ --region (an Amazon region that supports serverless) \ --db-cluster-identifier (ID of the serverless DB cluster) \ --apply-immediately \ --serverless-v2-scaling-configuration MinCapacity=4.0, MaxCapacity=32

更改容量范围会导致某些配置参数的默认值发生更改。Neptune 可以立即应用其中一些新的默认值,但某些动态参数更改只有在重新启动后才会生效。状态为pending-reboot表示需要重新启动才能应用一些参数更改。

将无服务器数据库实例更改为已配置

将 Neptune Serverless 实例转换为预配置实例所需要做的就是将其实例类更改为预配置的实例类之一。请参阅修改 Neptune 数据库实例(并立即应用)

Amazon 所含的监控服务器容量 CloudWatch

您可以使用CloudWatch来监控数据库集群中 Neptune 无服务器实例的容量和利用率。有两个CloudWatch指标可让您跟踪集群级别和实例级别的当前无服务器容量:

  • ServerlessDatabaseCapacity— 作为实例级指标,ServerlessDatabaseCapacity报告以 NCU 为单位的当前实例容量。作为集群级指标,它报告集群中所有数据库实例的所有ServerlessDatabaseCapacity值的平均值。

  • NCUUtilization— 该指标报告了可能使用的容量的百分比。它的计算方法是当前ServerlessDatabaseCapacity(实例级别或集群级别)除以数据库集群的最大容量设置。

    如果该指标在集群级别接近 100%,这意味着集群已尽可能扩大规模,请考虑增加最大容量设置。

    如果读取器实例的容量接近 100%,而 writer 实例未接近最大容量,请考虑添加更多读取器实例以分配读取工作负载。

请注意,无服务器实例的CPUUtilizationFreeableMemory指标的含义与预配置实例的含义略有不同。在无服务器环境中,是一个百分比,其计算方法CPUUtilization是当前使用的 CPU 量除以最大容量时提供的 CPU 量除以最大容量时提供的 CPU 量除以容量除以最大容量时提供的 CPU 量除以容量除以最大容量时提供的 同样,FreeableMemory报告在实例达到最大容量时可用的可用内存量。

以下示例显示了如何Amazon CLI在 Linux 上使用给定容量和平均容量值,在一小时内每 10 分钟测量一次。Linux date 命令指定相对于当前日期和时间的开始时间和结束时间。--query参数中的sort_by函数根据字段按时间顺序对结果进行排序:Timestamp

aws cloudwatch get-metric-statistics \ --metric-name "ServerlessDatabaseCapacity" \ --start-time "$(date -d '1 hour ago')" \ --end-time "$(date -d 'now')" \ --period 600 \ --namespace "AWS/Neptune" --statistics Minimum Maximum Average \ --dimensions Name=DBInstanceIdentifier,Value=(instance ID) \ --query 'sort_by(Datapoints[*].{min:Minimum,max:Maximum,avg:Average,ts:Timestamp},&ts)' \ --output table