OpenSearch Copias de seguridad de clúster mediante la API de instantánea

OpenSearch permite utilizar la API de instantánea OpenSearch para crear una copia de seguridad del cluster.

Este método es diferente de las copias de seguridad gestionadas que OpenSearch genera automáticamente para el cluster. Para obtener más información sobre las copias de seguridad de cluster gestionadas por OpenSearch, consulte OpenSearch Copias de seguridad de cluster automatizadas.

El uso de la API de instantánea OpenSearch le proporciona más flexibilidad al crear o restaurar copias de seguridad en el cluster OpenSearch, para que pueda personalizar el comportamiento. Algunas personalizaciones de ejemplo que podría realizar:

  • Cambie el nombre de los índices en el escenario en el que haya una colisión de nombre de índice entre la instantánea y el cluster de destino en el que está restaurando la instantánea.
  • Especificación de determinados índices que se deben incluir o excluir.
  • Especifique los alias de índice que se van a incluir o excluir.

Las instantáneas se almacenan en un cubo de Object Storage que especifique en su arrendamiento. La factura incluye los costos de almacenamiento de las instantáneas de cluster. Para obtener más información, consulte Precios de almacenamiento en la nube.

En este tema se describen los requisitos y el proceso para utilizar la API de instantánea OpenSearch con los clusters, e incluye las siguientes tareas:

  1. Cree el cubo de Object Storage que se utiliza como repositorio para la instantánea de cluster.
  2. Configurar una política dinámica con los permisos necesarios.
  3. Registre las instantáneas para el repositorio.
  4. Realizar Instantánea.
  5. Restaurar Instantánea.

Creación de un cubo de Object Storage para almacenar archivos de instantánea

El repositorio de instantáneas es un cubo de Object Storage de su arrendamiento. Si no tiene un cubo que registrar como repositorio, debe crear un cubo. Para ver un tutorial que le guíe por cómo crear un cubo, consulte Colocación de datos en Object Storage.

Tome nota de la siguiente información para el cubo que se registrará como repositorio. Esta información se puede encontrar en Detalles de cubo.

  • Espacio de nombres
  • Nombre del cubo
  • OCID de compartimento

Para obtener el OCID del compartimento:

  1. En la página Detalles de cubo, seleccione el enlace para Compartimento.
  2. Seleccione Copiar para OCID en Información de compartimento.
Nota

Puede omitir este paso y hacer que OpenSearch cree el cubo cuando se registre el repositorio especificando true para el atributo forceBucketCreation, de la siguiente manera:
forceBucketCreation: true

Si utiliza este enfoque, debe asegurarse de que otorga suficiente acceso en la política de IAM para que OpenSearch cree un cubo.

Politica de IAM

Debe configurar permisos para proporcionar el acceso de cluster OpenSearch al cubo de su arrendamiento para almacenar archivos de instantánea.

El siguiente ejemplo de política incluye los permisos necesarios:

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

La política anterior solo permite registrar el cubo especificado como repositorio de instantáneas.

<OpenSearch_Tenancy_ID> es el OCID de la búsqueda de OCI con arrendamiento OpenSearch. Puede encontrar este valor en la página Detalles de cluster del cluster en el campo OCID de arrendamiento de Opensearch en la sección Información adicional.

<customer_tenancy_OCID> es el OCID de su arrendamiento donde ha creado el cluster OpenSearch.

<customer_compartment_OCID> es el OCID del compartimento en el que se encuentra el cluster OpenSearch.

Si especifica forceBucketCreation : true en la operación de registro, debe asegurarse de que la política especificada incluye el acceso de creación de cubo en su arrendamiento; de lo contrario, la operación para registrar el repositorio falla.

Registrar el repositorio

Antes de tomar la instantánea, debe registrar el repositorio, como se muestra en el siguiente ejemplo:

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

En la siguiente tabla, se describen los parámetros que se deben especificar al registrar el repositorio.

Parámetro Descripción
nombre de repositorio Nombre que asigna al repositorio para la instantánea.
punto final Punto final del cubo de Object Storage.

Por ejemplo, el punto final del almacenamiento de objetos de la región este de EE. UU. (Ashburn) es https://objectstorage.us-ashburn-1.oraclecloud.com.

espacio de nombre Espacio de nombres de Object Storage para el cubo.
authType Especifique que se utilice la entidad de recurso que permite que Search con OpenSearch funcione en su nombre.
bucket_compartment_id OCID del compartimento donde está ubicado el cubo.
forceBucketCreation Especifica que se cree el cubo de Object Storage si aún no existe. El valor por defecto es falso.

Realizar Instantánea

Después de registrar el repositorio, puede tomar una instantánea, como se muestra en el siguiente ejemplo:

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

El ejemplo anterior incluye todos los índices y el estado del cluster. En el siguiente ejemplo se muestra cómo incluir índices específicos y otros valores:

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

Puede especificar uno o más índices para incluir, <index_name_to_include> y uno o más índices para excluir, -<index_name_to_exclude>.

Para obtener más información sobre esta operación de API, consulte Realización de instantáneas.

Restaurar Instantánea

Antes de restaurar una instantánea, puede recuperar todas las instantáneas existentes para un cluster. En primer lugar, recupere todos los repositorios registrados con el cluster, como se muestra en el siguiente ejemplo:

GET _snapshot/_all?pretty

A continuación, recupere todas las instantáneas del repositorio, como se muestra en el siguiente ejemplo:

GET _snapshot/<repository_name>?pretty

Ahora, restaure la instantánea, como se muestra en el siguiente ejemplo:

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
}

Puede especificar uno o más índices para incluir, <index_name_to_include> y uno o más índices para excluir, -<index_name_to_exclude>.

Para obtener más información sobre esta operación de API, consulte Restaurar instantáneas.