OpenSearch Backups de Cluster Usando a API de Snapshot

O OpenSearch permite que você use a API de Snapshot OpenSearch para criar um backup do cluster.

Esse método é diferente dos backups gerenciados que o OpenSearch gera automaticamente para o seu cluster. Para obter mais informações sobre os backups de clusters gerenciados pelo OpenSearch, consulte OpenSearch Automated Cluster Backups.

O uso da API de Snapshot OpenSearch oferece mais flexibilidade ao criar ou restaurar backups no cluster OpenSearch, para que você possa personalizar o comportamento. Alguns exemplos de personalização que você pode fazer:

  • Renomeie índices no cenário em que há uma colisão de nomes de índices entre o snapshot e o cluster de destino para o qual você está restaurando o snapshot.
  • Especificar determinados índices a serem incluídos ou excluídos.
  • Especificar aliases de índice para incluir ou excluir.

Os snapshots são armazenados em um bucket do Object Storage que você especifica em sua tenancy. Sua fatura inclui custos de armazenamento para os snapshots do cluster. Consulte Preço do Cloud Storage para obter detalhes.

Este tópico descreve os pré-requisitos e o processo para usar a API de Snapshot OpenSearch com seus clusters e inclui as seguintes tarefas:

  1. Crie o bucket do Object Storage que é usado como repositório para o snapshot do cluster.
  2. Configure uma política dinâmica com as permissões necessárias.
  3. Registre os snapshots do repositório.
  4. Criar Snapshot.
  5. Restaurar Snapshot.

Criando um Bucket do Serviço Object Storage para Armazenar Arquivos de Snapshot

O repositório de snapshots é um bucket do Object Storage em sua tenancy. Se você não tiver um bucket para registrar como repositório, precisará criar um bucket. Para obter um tutorial que o orienta sobre como criar um bucket, consulte Colocando Dados no Serviço Object Storage.

Anote as informações a seguir para o bucket que você registrará como repositório. Você pode encontrar essas informações nos Detalhes do Período.

  • Namespace
  • Nome do bucket
  • OCID do Compartimento

Para obter o OCID do compartimento:

  1. Na página Detalhes do Bucket, selecione o link para Compartimento.
  2. Selecione Copiar para OCID em Informações do Compartimento.
Observação

Você pode ignorar esta etapa e fazer com que OpenSearch crie o bucket quando o repositório for registrado, especificando verdadeiro para o atributo forceBucketCreation, da seguinte forma:
forceBucketCreation: true

Se você usar essa abordagem, precisará garantir que conceda acesso suficiente na política do serviço IAM para OpenSearch a fim de criar um bucket.

Política do Serviço IAM

Você precisa configurar permissões para fornecer ao cluster OpenSearch acesso ao bucket em sua tenancy para armazenar arquivos de snapshot.

O exemplo de política a seguir inclui as permissões necessárias:

DEFINE tenancy opensearch-tenancy as <OpenSearch_Tenancy_ID>
ADMIT resource opensearch opensearchsnapshots of tenancy opensearch-tenancy to manage object-family in compartment <snapshot_bucket_compartment> where ALL {request.principal.clusterid='<cluster_OCID>', request.principal.ownertenant='<customer_tenancy_OCID>', request.principal.ownercompartment='<customer_compartment_OCID>', target.bucket.name='<snapshot_bucket_name>'}

A política anterior só permite registrar o bucket especificado como repositório de snapshots.

<OpenSearch_Tenancy_ID> é o OCID da Pesquisa do OCI com a tenancy OpenSearch. Você pode encontrar esse valor na página Detalhes do cluster do seu cluster no campo OCID da Tenancy dopensearch na seção Informações Adicionais.

<customer_tenancy_OCID> é o OCID da sua tenancy em que você criou o cluster OpenSearch.

<customer_compartment_OCID> é o OCID do compartimento no qual o cluster OpenSearch está localizado.

Se você especificar forceBucketCreation : true na operação de registro, deverá garantir que a política especificada inclua acesso de criação de bucket em sua tenancy; caso contrário, a operação de registro do repositório falhará.

Registrar o Repositório

Para obter o snapshot, você precisa registrar o repositório, conforme mostrado no seguinte exemplo:

PUT _snapshot/<repository_name>
{
  "type": "oci",
  "settings": {
    "client": "default",
    "endpoint": "<objectstorage_endpoint>",
    "bucket": "<bucket_name>",
    "namespace": "<namespace>",
    "authType": "RESOURCE_PRINCIPAL",
    "bucket_compartment_id": "<bucket_compartment_OCID>",
    "forceBucketCreation": true
  }
}

A tabela a seguir descreve os parâmetros a serem especificados quando você registra o repositório.

Parâmetro Descrição
nome do repositório O nome que você atribui ao repositório para o snapshot.
ponto final O ponto final do bucket do Object Storage.

Por exemplo, o ponto final do Object Storage da região Leste dos EUA (Ashburn) é https://objectstorage.us-ashburn-1.oraclecloud.com.

espaço de nome O namespace do serviço Object Storage para o bucket.
authType Especifique para usar o controlador de recursos que permite que a Pesquisa com OpenSearch funcione em seu nome.
bucket_compartment_id O OCID do compartimento no qual o bucket está localizado.
forceBucketCreation Especifica a criação do bucket do Object Storage se ele ainda não existir. O padrão é falso.

Criar Snapshot

Depois de registrar o repositório, você poderá obter um snapshot, como mostrado no seguinte exemplo:

POST _snapshot/<repository_name>/<snapshot_name>?wait_for_completion=true

O exemplo anterior inclui todos os índices e o estado do cluster. O próximo exemplo mostra como incluir índices específicos e outras configurações:

POST _snapshot/<repository_name>/<snapshot_name>?wait_for_completion=true
{
"indices": "<index_name>,-<index_name>",
  "ignore_unavailable": true,
  "include_global_state": false
}

Você pode especificar um ou mais índices para incluir, <index_name_to_include> e um ou mais índices para excluir, -<index_name_to_exclude>.

Para obter mais informações sobre essa operação de API, consulte Fazer snapshots.

Restaurar Snapshot

Antes de restaurar um snapshot, você pode recuperar todos os snapshots existentes de um cluster. Primeiro, recupere todos os repositórios registrados no cluster, conforme mostrado no seguinte exemplo:

GET _snapshot/_all?pretty

Em seguida, recupere todos os instantâneos no repositório, conforme mostrado no exemplo a seguir:

GET _snapshot/<repository_name>?pretty

Agora, restaure o instantâneo, conforme mostrado no seguinte exemplo:

POST _snapshot/<repository_name>/<snapshot_name>/_restore
{
     "indices": "<index_name_to_include>,-<index_name_to_exclude>",
     "ignore_unavailable": true,
     "include_global_state": false,
     "rename_pattern": "(.+)",
     "rename_replacement": "restored_$1",
     "include_aliases": true
}

Você pode especificar um ou mais índices para incluir, <index_name_to_include> e um ou mais índices para excluir, -<index_name_to_exclude>.

Para obter mais informações sobre essa operação de API, consulte Restaurar snapshots.