Esvaziar um cluster de banco de dados do Amazon Neptune usando a API de redefinição rápida - Amazon Neptune

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Esvaziar um cluster de banco de dados do Amazon Neptune usando a API de redefinição rápida

A API REST de redefinição rápida do Neptune permite redefinir um grafo do Neptune com rapidez e facilidade, removendo todos seus dados.

É possível fazê-lo em um bloco de anotações Neptune usando a magia de linha %db_reset.

nota

Esse atributo está disponível a partir da versão 1.0.4.0 do mecanismo do Neptune.

  • Na maioria dos casos, uma operação de redefinição rápida é concluída em alguns minutos. A duração pode variar um pouco dependendo da carga no cluster quando a operação é iniciada.

  • Uma operação de redefinição rápida não gera E/S adicionais.

  • O tamanho do volume de armazenamento não diminui após uma redefinição rápida. Em vez disso, o armazenamento é reutilizado à medida que novos dados são inseridos. Isso significa que os tamanhos dos volumes dos snapshots criados antes e depois de uma operação de redefinição rápida serão os mesmos. Os tamanhos dos volumes dos clusters restaurados usando os snapshots criados antes e depois de uma operação de redefinição rápida também serão os mesmos

  • Como parte da operação de redefinição, todas as instâncias no cluster de banco de dados são reiniciadas.

    nota

    Em raras condições, essas redefinições do servidor também podem ocasionar failover do cluster.

Importante

Usar a redefinição rápida pode interromper a integração do cluster de banco de dados do Neptune com outros serviços. Por exemplo:

  • A redefinição rápida exclui todos os dados de fluxo do banco de dados e redefine completamente os fluxos. Isso significa que os consumidores de fluxos podem não funcionar mais sem uma nova configuração.

  • A reinicialização rápida remove todos os metadados sobre os recursos de SageMaker IA usados pelo Neptune ML, incluindo trabalhos e endpoints. Eles continuam existindo na SageMaker IA, e você pode continuar usando os endpoints de SageMaker IA existentes para consultas de inferência do Neptune ML, mas o gerenciamento do Neptune ML não funciona mais com eles. APIs

  • Integrações como a full-text-search integração com também ElasticSearch são eliminadas pela reinicialização rápida e devem ser restabelecidas manualmente antes de poderem ser usadas novamente.

Como excluir todos os dados de um cluster de banco de dados do Neptune usando a API
  1. Primeiro, você gera um token que pode ser usado para realizar a redefinição do banco de dados. Essa etapa tem como objetivo ajudar a impedir que redefinam acidentalmente um banco de dados.

    Você faz isso enviando uma solicitação HTTP POST ao endpoint /system na instância de gravador do cluster de banco de dados para especificar a ação initiateDatabaseReset.

    O comando curl usando o tipo de conteúdo JSON seria:

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

    Ou, usando o tipo de conteúdo 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 '

    A solicitação initiateDatabaseReset exibe o token de redefinição na resposta JSON, da seguinte forma:

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

    O token permanece válido por uma hora (sessenta minutos) após a emissão.

    Se você enviar a solicitação a uma instância de leitor ou ao endpoint de status, o Neptune lançará um ReadOnlyViolationException.

    Se você enviar várias solicitações initiateDatabaseReset, somente o token mais recente gerado será válido para a segunda etapa, na qual você realmente executará a redefinição.

    Se o servidor for reiniciado logo após a solicitação initiateDatabaseReset, o token gerado se tornará inválido e você precisará enviar uma nova solicitação para obter um novo token.

  2. Depois, você envia uma solicitação performDatabaseReset com o token recebido de volta de initiateDatabaseReset ao endpoint /system na instância de gravador do cluster de banco de dados. Isso exclui todos os dados do cluster de banco de dados.

    O comando curl usando o tipo de conteúdo JSON é:

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

    Ou, usando o tipo de conteúdo 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'

    A solicitação gera uma resposta JSON. Se a solicitação for aceita, a resposta será:

    { "status" : "200 OK" }

    Se o token que você enviou não corresponder ao que foi emitido, a resposta será a seguinte:

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

    Se a solicitação for aceita e a redefinição começar, o servidor será reiniciado e excluirá os dados. Você não pode enviar nenhuma outra solicitação ao cluster de banco de dados enquanto ele está sendo redefinido.

Usar a API de redefinição rápida com IAM-Auth

Se você tiver a IAM-Auth habilitada no cluster de banco de dados, poderá usar o awscurl para enviar comandos de redefinição rápida que são autenticados usando a IAM-Auth:

Usar o awscurl para enviar solicitações de redefinição rápida com IAM-Auth
  1. Defina as variáveis de ambiente AWS_ACCESS_KEY_ID e AWS_SECRET_ACCESS_KEY corretamente (e também AWS_SECURITY_TOKEN se você estiver usando uma credencial temporária).

  2. Uma solicitação initiateDatabaseReset tem a seguinte aparência:

    awscurl -X POST --service neptune-db "$SYSTEM_ENDPOINT" \ -H 'Content-Type: application/json' --region us-west-2 \ -d '{ "action" : "initiateDatabaseReset" }'
  3. Uma solicitação performDatabaseReset tem a seguinte aparência:

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

Usar a magia de linha %db_reset da bancada de trabalho do Neptune para redefinir um cluster de banco de dados

A bancada de trabalho do Neptune é compatível com uma magia de linha %db_reset que permite realizar uma redefinição rápida do banco de dados em um bloco de anotações Neptune.

Se você invocar a magia sem nenhum parâmetro, verá uma tela perguntando se deseja excluir todos os dados do cluster, com uma caixa de seleção solicitando que você reconheça que os dados do cluster não estarão mais disponíveis após a exclusão. Nesse ponto, é possível optar por excluir os dados ou cancelar a operação.

Uma opção mais perigosa é invocar %db_reset com a opção --yes ou -y, o que faz com que a exclusão seja executada sem nenhuma solicitação adicional.

Você também pode realizar a redefinição em duas etapas, assim como com a API REST:

%db_reset --generate-token

A resposta é:

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

Então faça:

%db_reset --token new_token_guid

A resposta é:

{ "status" : "200 OK" }

Códigos de erro comuns para operações de redefinição rápida

Código de erro do Neptune Status HTTP Mensagem Exemplo

InvalidParameterException

400

O parâmetro de comando do sistema action '' tem valor não suportado '' XXX

Parâmetro inválido

InvalidParameterException

400

Muitos valores fornecidos para: action

Uma solicitação de reinicialização rápida com mais de uma ação enviada com o cabeçalho x-www-form-urlencoded 'Content-Type:Application/ '

InvalidParameterException

400

Campo duplicado “ação”

Uma solicitação de redefinição rápida com mais de uma ação enviada com o cabeçalho “Content-Type: application/json”.

MethodNotAllowedException

400

Rota ruim:/bad_endpoint

Solicitação enviada a um endpoint incorreto

MissingParameterException

400

Parâmetros obrigatórios ausentes: [ação]

Uma solicitação de redefinição rápida não contém o parâmetro “ação” necessário.

ReadOnlyViolationException

400

Não são permitidas gravações em uma instância de réplica de leitura.

Uma solicitação de redefinição rápida foi enviada a um endpoint de status ou de leitor

AccessDeniedException

403

Token de autenticação ausente

Uma solicitação de redefinição foi enviada sem assinaturas corretas a um endpoint de banco de dados com a IAM-Auth habilitada

ServerShutdownException

500

A redefinição do banco de dados está em andamento. Tente fazer a consulta novamente depois que o cluster estiver disponível.

Quando a redefinição rápida começa, ocorre uma falha nas consultas existentes e recebidas do Gremlin/Sparql.