OpenSearch Sauvegardes de grappe à l'aide de l'API d'instantané

OpenSearch vous permet d'utiliser l'API d'instantané OpenSearch pour créer une sauvegarde de votre grappe.

Cette méthode est différente des sauvegardes gérées que OpenSearch génère automatiquement pour votre grappe. Pour plus d'informations sur les sauvegardes de grappe gérées par OpenSearch, voir Sauvegardes de grappe automatisées OpenSearch.

L'utilisation de l'API d'instantané OpenSearch vous offre plus de flexibilité lors de la création ou de la restauration de sauvegardes sur la grappe OpenSearch, afin que vous puissiez personnaliser le comportement. Voici quelques exemples de personnalisation :

  • Renommez les index dans le scénario où il y a une collision de noms d'index entre l'instantané et la grappe cible vers laquelle vous restaurez l'instantané.
  • Indiquez certains index à inclure ou à exclure.
  • Indiquez les alias d'index à inclure ou à exclure.

Les instantanés sont stockés dans un seau de stockage d'objets que vous spécifiez dans votre location. Votre facture comprend les coûts de stockage pour les instantanés de grappe. Pour plus de détails, voir Tarifs pour le service de stockage en nuage.

Cette rubrique décrit les préalables et le processus d'utilisation de l'API d'instantané OpenSearch avec vos grappes, et inclut les tâches suivantes :

  1. Créez le seau de stockage d'objets utilisé comme référentiel pour l'instantané de grappe.
  2. Configurez une politique dynamique avec les autorisations requises.
  3. Enregistrez les instantanés pour le référentiel.
  4. Prendre un instantané.
  5. Restaurer l'instantané.

Création d'un seau de stockage d'objets pour stocker des fichiers d'instantané

Le référentiel des instantanés est un seau de stockage d'objets dans votre location. Si vous n'avez pas de seau à enregistrer en tant que référentiel, vous devez créer un seau. Pour un tutoriel qui vous explique comment créer un seau, voir Ajout de données dans le stockage d'objets.

Notez les informations suivantes pour le seau que vous allez enregistrer en tant que référentiel. Vous pouvez trouver ces informations dans les détails du seau.

  • Espace de noms
  • Nom du seau
  • OCID du compartiment.

Pour obtenir l'OCID du compartiment :

  1. Dans la page Détails du seau, sélectionnez le lien Compartiment.
  2. Sélectionnez Copier pour l'OCID dans Informations sur le compartiment.
Note

Vous pouvez ignorer cette étape et demander à OpenSearch de créer le seau lorsque le référentiel est enregistré en spécifiant Vrai pour l'attribut forceBucketCreation, comme suit :
forceBucketCreation: true

Si vous utilisez cette approche, vous devez vous assurer d'accorder un accès suffisant dans la politique IAM pour que OpenSearch puisse créer un seau.

Politique du service IAM

Vous devez configurer des autorisations pour fournir à la grappe OpenSearch l'accès au seau de votre location pour le stockage des fichiers d'instantanés.

L'exemple de politique suivant inclut les autorisations requises :

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 politique précédente vous permet uniquement d'enregistrer le seau spécifié en tant que référentiel d'instantanés.

<OpenSearch_Tenancy_ID> est l'OCID de la recherche OCI avec la location OpenSearch. Vous pouvez trouver cette valeur dans la page Détails de la grappe de votre grappe dans le champ OCID de la location Opensearch sous la section Informations supplémentaires.

<customer_tenancy_OCID> est l'OCID de votre location où vous avez créé la grappe OpenSearch.

<customer_compartment_OCID> est l'OCID du compartiment où se trouve la grappe OpenSearch.

Si vous spécifiez forceBucketCreation : true dans l'opération d'enregistrement, vous devez vous assurer que la politique spécifiée inclut l'accès de création de seau dans votre location, sinon l'opération d'enregistrement du référentiel échoue.

Enregistrer le référentiel

Avant de pouvoir prendre le cliché, vous devez enregistrer le référentiel, comme illustré dans l'exemple suivant :

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

Le tableau suivant décrit les paramètres à spécifier lors de l'enregistrement du référentiel.

Paramètre Description
nom du référentiel Nom que vous affectez au référentiel pour l'instantané.
Point d'extrémité Point d'extrémité pour le seau de stockage d'objets.

Par exemple, le point d'extrémité du service de stockage d'objets pour la région Est des États-Unis (Ashburn) est https://objectstorage.us-ashburn-1.oraclecloud.com.

espace de noms Espace de noms du stockage d'objets pour le seau.
authType Spécifiez d'utiliser le principal de ressource qui permet à Search with OpenSearch de travailler en votre nom.
bucket_compartment_id OCID du compartiment dans lequel se trouve le seau.
forceBucketCreation Indique de créer le seau de stockage d'objets s'il n'existe pas déjà. La valeur par défaut est Faux.

Prendre un instantané

Après avoir enregistré le référentiel, vous pouvez prendre un instantané, comme illustré dans l'exemple suivant :

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

L'exemple précédent inclut tous les index et l'état du cluster. L'exemple suivant montre comment inclure des index spécifiques et d'autres paramètres :

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

Vous pouvez spécifier un ou plusieurs index à inclure, <index_name_to_include> et un ou plusieurs index à exclure, -<index_name_to_exclude>.

Pour plus d'informations sur cette opération d'API, voir Prendre des instantanés.

Restaurer un instantané

Avant de restaurer un instantané, vous pouvez extraire tous les instantanés existants d'une grappe. Tout d'abord, extrayez tous les référentiels enregistrés dans le cluster, comme illustré dans l'exemple suivant :

GET _snapshot/_all?pretty

Extrayez ensuite tous les instantanés du référentiel, comme illustré dans l'exemple suivant :

GET _snapshot/<repository_name>?pretty

Restaurez l'instantané, comme illustré dans l'exemple suivant :

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
}

Vous pouvez spécifier un ou plusieurs index à inclure, <index_name_to_include> et un ou plusieurs index à exclure, -<index_name_to_exclude>.

Pour plus d'informations sur cette opération d'API, voir Restaurer les instantanés.