Tous les produits
Search
Centre de documentation

Elasticsearch:Sauvegarde et restauration manuelles

Dernière mise à jour :Sep 12, 2026

Sauvegardez les données d'index dans OSS et restaurez-les à la demande grâce aux snapshots manuels d'Elasticsearch. Utilisez-les pour la migration de données, la récupération à un instant donné, la configuration d'environnements de développement ou de test, ou encore pour effectuer des sauvegardes avant une opération critique.

Les opérations de sauvegarde et de restauration nécessitent le plugin elasticsearch-repository-oss, préinstallé sur toutes les instances Alibaba Cloud Elasticsearch et impossible à désinstaller.

Les snapshots ne stockent que les données d'index, à l'exclusion des index de surveillance ( .monitoring , .security_audit ), des métadonnées, du translog, des configurations, des packages, des plugins et des journaux. Exécutez toutes les commandes dans Kibana Dev Tools. Connectez-vous à la console Kibana .

Créer un référentiel de snapshots

Un référentiel de snapshots stocke les snapshots dans un compartiment OSS. Préparez un compartiment OSS de classe Standard dans la même région que votre instance Elasticsearch (Créer un compartiment). L'utilisateur RAM doit disposer de la stratégie AliyunOSSFullAccess (Accorder des autorisations à un utilisateur RAM).

Exemple : créez un référentiel nommé my_backup.

Clusters Alibaba Cloud

PUT _snapshot/my_backup/
{
    "type": "oss",
    "settings": {
        "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
        "access_key_id": "xxxx",
        "secret_access_key": "xxxxxx",
        "bucket": "xxxxxx",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "snapshot/"
    }
}

Clusters auto-gérés 8.x

Les clusters auto-gérés nécessitent l'installation manuelle du plugin elasticsearch-repository-oss. Préfixez tous les noms de paramètres par oss.client..

PUT /_snapshot/my_backup
{
    "type": "oss",
    "settings": {
        "oss.client.endpoint": "oss-cn-shanghai.aliyuncs.com",
        "oss.client.access_key_id": "xxx",
        "oss.client.secret_access_key": "xxx",
        "oss.client.bucket": "xxxxxx",
        "oss.client.base_path":"snapshot/",
        "oss.client.compress": true
    }
}

Paramètres

Paramètre

Description

endpoint

Le point de terminaison interne du compartiment OSS. Régions et points de terminaison.

access_key_id

L'ID AccessKey de l'utilisateur RAM. Obtenir une paire de clés AccessKey.

secret_access_key

La clé secrète AccessKey de l'utilisateur RAM. Obtenir une paire de clés AccessKey.

bucket

Le nom d'un compartiment OSS existant.

compress

Compresse les métadonnées du snapshot (mappings et paramètres d'index). N'affecte pas les fichiers de données. Valeur par défaut : false.

chunk_size

Taille maximale des blocs pour les téléchargements vers OSS. Les fichiers dépassant cette limite sont divisés en plusieurs blocs.

base_path

Le chemin de stockage au sein du compartiment. La valeur par défaut est la racine. Utilisez des sous-répertoires pour isoler les snapshots par cluster ou environnement, tels que snapshot/prod/ ou snapshot/dev/.

Vérifier la connectivité du référentiel

POST _snapshot/my_backup/_verify

Une réponse réussie répertorie tous les nœuds connectés au référentiel. En cas d'échec, vérifiez le point de terminaison, le nom du compartiment et les autorisations de l'utilisateur RAM.

Obtenir des informations sur le référentiel

# Get information about all repositories
GET _snapshot
# Get information about a specific repository
GET _snapshot/my_backup

Créer un snapshot

Snapshot de tous les index

PUT _snapshot/my_backup/snapshot_1

Cette commande crée un snapshot nommé snapshot_1 pour tous les index ouverts. Le snapshot s'exécute de manière asynchrone. Pour attendre la fin de l'opération, ajoutez wait_for_completion=true :

PUT _snapshot/my_backup/snapshot_1?wait_for_completion=true

Si vous n'utilisez pas ce paramètre, exécutez GET _snapshot/my_backup/snapshot_1/_status pour vérifier l'état du snapshot. Un état state défini sur SUCCESS indique que le snapshot est terminé.

Avertissement

Avant de libérer l'instance Elasticsearch, assurez-vous que le snapshot est terminé. Sinon, une perte de données peut survenir.

Un référentiel peut contenir plusieurs snapshots. Le premier constitue une sauvegarde complète ; les suivants sont incrémentiels et ne stockent que les données modifiées.

Snapshot d'index spécifiques

PUT _snapshot/my_backup/snapshot_2
{
  "indices": "index_1,index_2",
  "ignore_unavailable": true,
  "include_global_state": false
}

Paramètre

Description

indices

Liste séparée par des virgules des index à sauvegarder. Les caractères génériques sont pris en charge, tels que logs-*.

ignore_unavailable

Si la valeur est true, ignore les index inexistants au lieu d'échouer.

include_global_state

Si la valeur est false, exclut l'état global du cluster. Recommandé pour les sauvegardes contenant uniquement des données.

Informations sur les snapshots

# View all snapshots
GET _snapshot/my_backup/_all

# View a specific snapshot
GET _snapshot/my_backup/snapshot_1

# View the detailed status of a snapshot, including statistics for each index and shard
GET _snapshot/my_backup/snapshot_1/_status

Supprimer un snapshot

DELETE _snapshot/my_backup/snapshot_1

Si un snapshot est en cours, cette commande arrête le processus et supprime toutes les données partielles créées.

Lorsque vous supprimez un snapshot via Kibana Dev Tools ou l'API DELETE _snapshot, les fichiers de snapshot correspondants dans le compartiment OSS sont automatiquement nettoyés par le plugin. Vous n'avez pas besoin de les supprimer manuellement depuis la console OSS.

Important

Supprimez toujours les snapshots avec la commande DELETE _snapshot. Ne supprimez pas directement les fichiers de snapshot depuis la console OSS ou d'autres outils. Cela romprait la chaîne de sauvegarde incrémentielle et pourrait corrompre tous les snapshots suivants, les rendant irrécupérables.

Restaurer à partir d'un snapshot

Avant de restaurer les données :

  • Évitez de restaurer les index système (préfixés par .), car cela pourrait perturber l'accès à Kibana.

  • Fermez ou supprimez tout index existant portant le même nom dans le cluster cible avant la restauration. Sinon, la restauration échouera.

  • Pour une restauration interrégionale, migrez d'abord les données du snapshot dans OSS vers la région cible, puis restaurez-les dans le cluster cible. Si la liste déroulante des instances est vide lors de la création d'un snapshot manuel dans la console, le service de sauvegarde n'est peut-être pas activé pour votre compte ou est mal configuré. Pour la migration de données interrégionale, utilisez la sauvegarde manuelle avec la réplication interrégionale OSS :

    1. Dans la région source, par exemple Hangzhou, créez un compartiment OSS et configurez les snapshots manuels Elasticsearch pour sauvegarder les données dans ce compartiment.

    2. Configurez une règle de réplication interrégionale OSS pour synchroniser les données vers un compartiment OSS dans la région cible, par exemple Shanghai. Pour la migration de données OSS, consultez Implémentation de la migration.

    3. Créez une nouvelle instance Elasticsearch dans la région cible.

    4. Dans l'instance Elasticsearch cible, enregistrez un référentiel de snapshots pointant vers le compartiment OSS de la région cible, puis restaurez le snapshot.

Créer un référentiel dans le cluster cible

Créez un référentiel dans le cluster cible pointant vers l'emplacement de sauvegarde OSS. Utilisez les mêmes paramètres que dans Créer un référentiel de snapshots.

PUT _snapshot/my_backup_restore/
{
    "type": "oss",
    "settings": {
        "endpoint": "http://oss-cn-hangzhou-internal.aliyuncs.com",
        "access_key_id": "xxxx",
        "secret_access_key": "xxxxxx",
        "bucket": "xxxxxx",
        "compress": true,
        "chunk_size": "500mb",
        "base_path": "snapshot/"
    }
}

Restaurer un index spécifique

Restaurez et renommez un index pour éviter les conflits de noms :

POST /_snapshot/my_backup_restore/snapshot_1/_restore
{
 "indices": "index_1",
 "rename_pattern": "index_(.+)",
 "rename_replacement": "restored_index_$1"
}

Paramètre

Description

indices

L'index à restaurer à partir du snapshot. Tous les autres index sont ignorés.

rename_pattern

Modèle d'expression régulière correspondant aux noms d'index à restaurer.

rename_replacement

Modèle de remplacement pour les index renommés. Prend en charge les références aux groupes de capture.

Restaurer les index non système

POST _snapshot/my_backup_restore/snapshot_1/_restore
{"indices": "*,-.monitoring*,-.security*,-.kibana*,-.internal.alerts*,-.alerts*","ignore_unavailable": true}
Ce modèle d'exclusion couvre les index système courants. D'autres versions peuvent inclure des index supplémentaires, tels que .ds-ilm-history-* et .slo-* . Adaptez-le selon votre cluster. Pour la version 8.x, excluez également les index de support des flux de données en ajoutant -.ds* .

Restaurer tous les index

POST _snapshot/my_backup_restore/snapshot_1/_restore

L'API _restore s'exécute de manière asynchrone. Pour attendre la fin de l'opération, ajoutez wait_for_completion=true :

POST _snapshot/my_backup_restore/snapshot_1/_restore?wait_for_completion=true

Restaurer vers Indexing Service

Lors de la restauration vers une instance Indexing Service, utilisez ignore_index_settings pour ignorer les paramètres incompatibles :

POST /_snapshot/my_backup_restore/snapshot_1/_restore
{
  "indices": "index_1",
  "ignore_index_settings": [
    "index.apack.cube.following_index"
  ]
}

État de la restauration du snapshot

Surveillez la progression de la restauration avec l'API _recovery.

# Check the restoration status of a specific index
GET restored_index_1/_recovery

# Check restoration status for all indexes (may include unrelated shards)
GET /_recovery/

Champs de sortie principaux :

Champ

Description

type

Type de récupération. snapshot indique une récupération à partir d'un snapshot.

source

Référentiel source et snapshot.

percent

Pourcentage de progression de la restauration.

Annuler la restauration

Annulez une restauration en supprimant l'index cible :

DELETE /restored_index_3
Important

Cela arrête la restauration et supprime toutes les données déjà restaurées pour cet index.

FAQ

Combien de temps faut-il pour sauvegarder une grande quantité de données dans OSS, et quel est le coût ?

  • Estimation du temps : À titre de référence, la sauvegarde d'environ 80 Go de données prend environ 30 minutes. Le temps réel dépend du volume de vos données et de la bande passante de votre instance. Pour accélérer le processus de sauvegarde, vous pouvez augmenter le paramètre chunk_size lors de la création du référentiel de snapshots ou augmenter la bande passante de votre instance.

  • Estimation des coûts : Le stockage des données de sauvegarde dans OSS entraîne des frais de stockage OSS et des frais de trafic. Le coût réel dépend du volume de vos données et du type de stockage.

Que faire en cas d'échec d'un snapshot ou si un index ne peut pas être supprimé ?

  • Dépannage des échecs de snapshot :

    • Si le snapshot échoue avec l'erreur QpsLimitExceeded, la limitation QPS d'OSS a été déclenchée. Le redémarrage du nœud ne résout pas ce problème. Reprogrammez la sauvegarde pendant les heures creuses, par exemple entre 3 h 00 et 4 h 00, ou contactez OSS pour augmenter la limite.

    • Si le snapshot échoue en raison d'une pression sur la mémoire du nœud ou du garbage collection (GC), redémarrez le nœud pour libérer la mémoire cache, puis créez à nouveau le snapshot.

  • Supprimer un index impliqué dans un snapshot : Un index en cours de snapshot ne peut pas être supprimé directement. Avant de supprimer un index, exécutez la commande suivante pour afficher l'état du snapshot :

    GET _snapshot/_status

    Dans la réponse, vérifiez la liste indices de chaque snapshot dont l'état state est STARTED. Les index répertoriés sont en cours de sauvegarde. Attendez la fin du snapshot ou annulez le snapshot concerné avant de supprimer un index. Vous pouvez supprimer en toute sécurité un index qui n'apparaît pas dans la liste indices d'un snapshot dont l'état state est STARTED.

Références