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 précis, 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. Ce dernier est préinstallé sur toutes les instances Alibaba Cloud Elasticsearch et ne peut pas être désinstallé.
Les snapshots stockent uniquement les données d'index. Ils excluent les index de surveillance (.monitoring,.security_audit), les métadonnées, le translog, les configurations, les packages, les plugins et les journaux. Exécutez toutes les commandes dans Kibana Dev Tools. Connexion à la console Kibana .
Créer un référentiel de snapshots
Un référentiel de snapshots stocke les snapshots dans un bucket OSS. Préparez un bucket OSS de classe Standard situé dans la même région que votre instance Elasticsearch (Création d'un bucket). L'utilisateur RAM doit disposer de la stratégie AliyunOSSFullAccess (Attribution d'autorisations à un utilisateur RAM).
Exemple : création d'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 gérés par l'utilisateur 8.x
Pour les clusters gérés par l'utilisateur, installez manuellement le 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 |
Endpoint interne du bucket OSS. Régions et endpoints. |
|
access_key_id |
ID AccessKey de l'utilisateur RAM. Obtention d'une paire AccessKey. |
|
secret_access_key |
Secret AccessKey de l'utilisateur RAM. Obtention d'une paire AccessKey. |
|
bucket |
Nom d'un bucket 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 : |
|
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 |
Chemin de stockage au sein du bucket. La valeur par défaut correspond à la racine. Utilisez des sous-répertoires pour isoler les snapshots par cluster ou environnement, par exemple |
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 l'endpoint, le nom du bucket 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é.
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 stockent uniquement 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, par exemple |
|
ignore_unavailable |
Si la valeur est |
|
include_global_state |
Si la valeur est |
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, le plugin nettoie automatiquement les fichiers de snapshot correspondants dans le bucket OSS. Vous n'avez pas besoin de les supprimer manuellement depuis la console OSS.
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 interrompre 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 (Implémentation de la migration), puis effectuez la restauration vers le cluster cible.
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 ceux décrits dans la section 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 |
Index à restaurer à partir du snapshot. Tous les autres index sont ignorés. |
|
rename_pattern |
Modèle regex correspondant aux noms d'index à restaurer. |
|
rename_replacement |
Modèle de remplacement pour les index renommés. Prend en charge les références de 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 clés :
|
Champ |
Description |
|
type |
Type de récupération. |
|
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
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, augmentez le paramètre
chunk_sizelors de la création du référentiel de snapshots ou augmentez la bande passante de votre instance.Estimation des coûts : Le stockage des données de sauvegarde dans OSS engendre 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.