使用快速重置 API 清空 Amazon Neptune 数据库集群 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用快速重置 API 清空 Amazon Neptune 数据库集群

Neptune 快速重置 REST API 可以让你快速轻松地重置 Neptune 图,从而删除其所有数据。您也可以通过使用在 Neptune 笔记本中执行此操作%db_reset线条魔法。

注意

此功能可用于以下内容:Neptune 引擎发布 1.0.4.0.

  • 在大多数情况下,快速重置操作会在几分钟内完成。持续时间可能会有所不同,具体取决于启动操作时群集上的负载。

  • 快速复位操作不会导致额外的 I/O。

  • 快速重置后,存储卷大小不会缩小。相反,在插入新数据时,存储将重复使用。这意味着快速重置操作之前和之后拍摄的快照的卷大小将是相同的。使用快速重置操作之前和之后创建的快照恢复的群集的卷大小也将相同

  • 作为重置操作的一部分,数据库集群中的所有实例都将重新启动。

    注意

    在极少数情况下,这些服务器重启也可能导致群集故障转移。

重要

使用快速重置可能会破坏 Neptune 数据库集群与其他服务的集成。例如:

  • 快速重置删除数据库中的所有流数据并完全重置流。这意味着,如果没有新的配置,直播消费者可能无法再工作。

  • 快速重置会删除有关 Neptune ML 使用的 SageMaker 资源的所有元数据,包括作业和终端节点。它们继续存在于 SageMaker 中,您可以继续使用现有的 SageMaker 终端节点进行 Neptune ML 推理查询,但 Neptune ML 管理 API 不再适用于它们。

  • 集成(例如与 ElasticSearch 的全文搜索集成)也会被快速重置消失,必须手动重新建立,然后才能再次使用。

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

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

    您可以通过发送HTTP POST请求/system数据库集群的写入器实例上的终端节点以指定initiateDatabaseResetaction.

    这些区域有:curl使用 JSON 内容类型的命令将是:

    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请求,生成的令牌将无效,您需要发送新请求才能获得新令牌。

  2. 接下来,您发送performDatabaseReset请求你从中回来的令牌initiateDatabaseReset/system数据库集群的写入器实例上的终端节点。此操作会删除数据库集群中的所有数据。

    这些区域有:curl使用 JSON 内容类型的命令是:

    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" }

    如果请求被接受并开始重置,服务器将重新启动并删除数据。在数据库集群重置时,您无法向其发送任何其他请求。

将快速重置 API 与 IAM-Auth 结合使用

如果您在数据库集群上启用了 IAM-Auth,则可以使用awscurl要发送使用 IAM-Auth 进行身份验证的快速重置命令:

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

  1. 设置AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY环境变量正确(还有AWS_SECURITY_TOKEN如果你使用临时凭证)。

  2. 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的initiateDatabaseReset请求类似于以下内容:

    awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "initiateDatabaseReset" }'
  3. 一个performDatabaseReset请求类似于以下内容:

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

使用 Neptune Workbench%db_resetline Magic 来重置数据库集群

Neptune 工作台支持%db_resetLINE 魔术,可以让你在 Neptune 笔记本中快速执行数据库重置。

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

更危险的选择是调用%db_reset使用--yes要么-y选项,这会导致在没有进一步提示的情况下执行删除操作。

你也可以通过两个步骤执行重置,就像使用 REST API 一样:

%db_reset --generate-token

响应如下:

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

请执行此操作:

%db_reset --token "new_token_guid"

响应如下:

{ "status" : "200 OK" }

快速复位操作的常见错误代码

Neptune 错误代码 HTTP 状态 消息 示例

InvalidParameterException

400

系统命令参数 '行动'有不受支持的价值'XXX'

参数无效

InvalidParameterException

400

为以下内容提供的值太多:行动

一个快速重置请求,其中包含一个以标题 “ContentType: 应用程序/x-wwW-FORM-urlen编码”

InvalidParameterException

400

重复字段 “操作”

快速重置请求,其中包含多个动作,标题为 “ContentType:应用程序 /json”

MethodNotAllowedException

400

错误的路线:/bad_终端点

请求发送到错误的终端节点

MissingParameterException

400

缺少必需的参数:[操作]

快速重置请求不包含所需的 “操作” 参数

ReadOnlyViolationException

400

只读实例上不允许写入操作

快速重置请求已发送到读者或状态终端节点

AccessDeniedException

403

身份验证令牌缺失

在启用了 IAM-Auth 的情况下,向数据库终端节点发送了快速重置请求,但没有正确

ServerShutdownException

500

数据库重置正在进行中。请在集群可用后重试查询。

当快速重置开始时,现有和传入的 Gremlin/Sparql 查询将失败。