本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用快速重置 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 数据库集群中删除所有数据
-
首先,您生成一个令牌,然后可以使用该令牌执行数据库重置。此步骤旨在帮助防止任何人意外重置数据库。
你可以通过发送一个
HTTP POST
请求/system
数据库集群的写入器实例上的终端节点以指定initiateDatabaseReset
action.这些区域有:
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
请求,生成的令牌将无效,您需要发送新请求才能获得新令牌。 -
接下来,您发送
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
使用 awscurl 通过 IAM-Auth 发送快速重置请求
设置
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
环境变量正确(还有AWS_SECURITY_TOKEN
如果你使用临时凭证)。-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的
initiateDatabaseReset
请求类似于以下内容:awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "initiateDatabaseReset" }'
-
一个
performDatabaseReset
请求类似于以下内容:awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "performDatabaseReset" }'
使用 Neptune 工作台%db_reset
line Magic 来重置数据库集群
Neptune 工作台支持%db_reset
LINE 魔术,可以让你在 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 状态 | 消息 | 示例 |
---|---|---|---|
|
400 |
系统命令参数 ' |
参数无效 |
|
400 |
为以下内容提供的值太多: |
一个快速重置请求,其中包含一个以标题 'Contenttype: 应用程序/x-wwW-FORM-urlen编码' |
|
400 |
重复字段 “操作” |
快速重置请求,其中包含多个动作,标题为 “ContentType:应用程序 /json” |
|
400 |
错误的路线:/ |
请求发送到错误的终端节点 |
|
400 |
缺少必需的参数:[操作] |
快速重置请求不包含所需的 “操作” 参数 |
|
400 |
只读实例上不允许写入 |
快速重置请求已发送到读者或状态终端节点 |
|
403 |
身份验证令牌缺失 |
在启用了 IAM-Auth 的情况下,向数据库终端节点发送了快速重置请求,但没有正确 |
|
500 |
正在重置数据库。请在集群可用后重试查询。 |
当快速重置开始时,现有和传入的 Gremlin/Sparql 查询将失败。 |