Alibaba Cloud Elasticsearch propose deux méthodes pour automatiser les sauvegardes par snapshot. Pour les clusters exécutant la version 7,6 ou ultérieure, utilisez la gestion du cycle de vie des snapshots (SLM) afin de planifier les snapshots et de gérer leur conservation. Pour les versions antérieures à la 7,6, utilisez une tâche crontab côté client pour déclencher la création des snapshots. Les deux méthodes stockent les snapshots dans un référentiel OSS.
Contexte
Pour plus d'informations sur la gestion du cycle de vie des snapshots, consultez Snapshot lifecycle management.
La sauvegarde et la restauration des données dans Elasticsearch dépendent du plugin elasticsearch-repository-oss. Ce plugin est préinstallé sur les clusters Alibaba Cloud Elasticsearch et ne peut pas être supprimé. Pour plus d'informations sur ce plugin, consultez elasticsearch-repository-oss.
Versions 7,6 et ultérieures (recommandé)
Avant de commencer, assurez-vous de remplir les conditions préalables suivantes :
Créez un bucket OSS de classe de stockage Standard. Les buckets de classe Archive ne sont pas pris en charge. Le bucket doit se trouver dans la même région que votre cluster Elasticsearch. Pour obtenir des instructions, consultez Create a bucket.
Créez un référentiel pour associer le bucket OSS à votre cluster Elasticsearch. Pour obtenir des instructions, consultez Create a repository.
Dans la console Kibana de votre cluster, cliquez sur Dev Tools et suivez les étapes ci-dessous.
-
Créez une politique SLM.
PUT _slm/policy/auto-snapshots { "schedule": "0 0 0/12 * * ?", "name": "<auto-snap-{now/d}>", "repository": "my_auto_backup", "config": { "indices": "*", "include_global_state": true }, "retention": { "expire_after": "30d", "min_count": 5, "max_count": 50 } }Paramètre
Description
schedule
Le format d'une expression Cron est le suivant : Seconde Minute Heure Jour du mois Mois Jour de la semaine Année (facultatif). L'expression
"0 0 0/12 * * ?"crée un snapshot toutes les 12 heures. Pour plus d'informations, consultez Cron.name
Le format du nom du snapshot. Vous pouvez utiliser des expressions mathématiques de date, telles que
<auto-snap-{now/d}>, pour une dénomination basée sur la date.repository
Le nom du référentiel de snapshots. Pour trouver le nom du référentiel, consultez Get repository information.
config.indices
Les index inclus dans le snapshot. Le caractère
*indique tous les index.config.include_global_state
Indique s'il faut inclure l'état du cluster et l'état des fonctionnalités. La valeur
trueles inclut, tandis quefalsene les inclut pas.retention.expire_after
La période de conservation des snapshots. L'exemple définit cette durée sur 30 jours.
retention.min_count
Le nombre minimum de snapshots à conserver. Ce nombre minimal est préservé même si les snapshots sont plus anciens que la période définie par
expire_after.retention.max_count
Le nombre maximum de snapshots à conserver. Si cette limite est dépassée, les snapshots les plus anciens sont supprimés, quel que soit leur âge.
-
Exécutez la politique SLM pour créer immédiatement un snapshot.
POST _slm/policy/auto-snapshots/_executeUne fois la commande exécutée, Elasticsearch crée automatiquement des snapshots selon le paramètre
schedule. Pour exécuter immédiatement la politique de conservation, exécutez la commande suivante :POST _slm/_execute_retention
Versions antérieures à 7,6
Les versions antérieures à 7,6 ne prennent pas en charge SLM. Utilisez une tâche crontab côté client pour automatiser les snapshots.
Avant de commencer, assurez-vous de remplir les conditions préalables suivantes :
Créez un bucket OSS de classe de stockage Standard. Les buckets de classe Archive ne sont pas pris en charge. Le bucket doit se trouver dans la même région que votre cluster Elasticsearch. Pour obtenir des instructions, consultez Create a bucket.
Créez un référentiel. Pour obtenir des instructions, consultez Create a repository.
Configurez un client capable d'accéder au cluster Elasticsearch via le réseau public ou un réseau interne. Pour plus d'informations, consultez Use a client to access an Alibaba Cloud Elasticsearch cluster.
Sur votre serveur client, procédez comme suit :
-
Créez un script de sauvegarde par snapshot.
vi /root/snapshot.sh -
Ajoutez le contenu suivant au fichier de script et enregistrez-le. Remplacez
elastic:*****par le nom d'utilisateur et le mot de passe réels, etes-*****par l'ID réel du cluster.curl -u elastic:***** -X PUT https://es-*****.public.elasticsearch.aliyuncs.com:9200/_snapshot/my_auto_backup_crontab/snapshot_$(date +%s) -
Accordez les permissions d'exécution au script.
chmod +x /root/snapshot.sh -
Configurez une tâche crontab. L'exemple suivant programme l'exécution de la tâche tous les jours à 2 h 00.
crontab -eAjoutez la ligne suivante :
0 2 * * * /bin/bash /root/snapshot.shAprès avoir enregistré le fichier, crontab charge automatiquement la nouvelle configuration. Il n'est pas nécessaire de redémarrer le service cron.
Une fois les snapshots sauvegardés, vous pouvez les supprimer, les restaurer ou consulter leurs détails. Pour plus d'informations, consultez Manual backup and restoration. Pour restaurer un snapshot dans un cluster différent, vous devez créer un référentiel dans le cluster cible qui pointe vers le même bucket OSS.