Aller au contenu principal

Concepts — Sauvegardes

Terminologie​

TermeDescription
DestinationUn bucket S3 du projet, l'utilisateur de bucket dont elle emprunte les identifiants, et une durée de rétention en jours. Toute sauvegarde s'écrit dans une destination.
RétentionDurée pendant laquelle une archive est conservée, de 1 à 3 650 jours. Passé ce délai, l'archive est supprimée automatiquement.
Programmation (plan)Sauvegarde récurrente d'une ressource vers une destination, selon un horaire.
ExécutionUne sauvegarde en train de se faire, déclenchée par une programmation ou à la demande. Une exécution réussie produit une archive.
ArchiveCopie stockée de l'état d'une ressource à un moment donné, d'où l'on restaure.
RestaurationRéécriture d'une ressource à partir d'une archive.
Ressource sourceLa base, la VM ou le disque sur lequel l'archive a été prise.
CibleLa ressource dans laquelle une restauration écrit : la source elle-même (restauration en place), ou une autre base du même type.

Ressources couvertes​

TypeRestauration en placeRestauration vers une autre ressourceRestauration à un instant précisSupprimer une archive efface les données
PostgreSQLOuiOui, vers une base PostgreSQL de la même version majeureOuiNon
MariaDBOuiOui, vers une autre base MariaDBNonNon
Machine virtuelleOuiNonNonOui
DisqueSeulement si le disque a été suppriméNonNonOui

Les autres services (MongoDB, Redis, RabbitMQ, clusters Kubernetes, buckets) ne sont pas couverts.

Une VM emporte ses disques​

L'archive d'une machine virtuelle contient tous les disques de la VM. Ces disques n'ont donc pas besoin d'une programmation propre : dans l'onglet Sauvegardes d'un tel disque, la console indique Sauvegardée avec une autre ressource, et dans Sauvegardes > Protection, l'état Couverte. L'archive de la VM apparaît aussi dans la liste des archives du disque.

Restaurer cette archive réécrit la VM et tous ses disques : on ne peut pas n'en restaurer qu'une partie.


Destinations​

Une destination se crée dans Sauvegardes > Destinations > Créer une destination. Elle porte :

ÉlémentRègle
Nom1 à 40 caractères : minuscules, chiffres et tirets, sans commencer ni finir par un tiret. Unique dans le projet.
BucketUn bucket S3 du même projet. Il faut en créer un avant la première destination.
IdentifiantsUn utilisateur du bucket. La console propose d'en créer un dédié (recommandé : ses identifiants ne servent qu'aux sauvegardes et se révoquent sans toucher au reste) ou d'en réutiliser un.
RétentionNombre entier de jours, de 1 à 3 650. 30 jours par défaut dans la console.

Une destination sert à toutes les ressources couvertes du projet. Seule la rétention se modifie après la création ; pour changer de bucket, créez une autre destination.

États d'une destination​

ÉtatSignification
En préparationLa destination est en cours de mise en place, ou de suppression.
PrêteLa destination accepte programmations, sauvegardes et restaurations.
En erreurLe bucket ou son utilisateur n'est plus lisible, ou une suppression n'a pas abouti. Le message indique la cause.
InconnuL'état n'a pas pu être lu ; réessayez dans un moment.

Seule une destination Prête accepte une programmation, une sauvegarde ou une restauration. Des identifiants simplement erronés ne sont pas détectés à la création : pour les bases de données, l'erreur apparaît sur la première sauvegarde.

Rétention​

  • Pour MariaDB, les VM et les disques, chaque archive garde la rétention en vigueur au moment où elle a été écrite. Modifier la rétention d'une destination ne change que les archives suivantes.
  • Pour PostgreSQL, la rétention s'applique à tout l'historique de la base : l'abaisser peut supprimer des archives déjà écrites, dès la sauvegarde suivante.
  • Une archive dont la rétention est écoulée est supprimée automatiquement, avec la ligne d'exécution qui l'a produite. La dernière archive restaurable d'une ressource est toujours conservée, quel que soit son âge. Une archive en cours de lecture par une restauration n'est jamais supprimée.
  • Une archive de VM ou de disque arrivée en fin de rétention devient non restaurable dès son expiration, avant même d'être retirée de la liste.

Bucket verrouillé (WORM)​

Quand le bucket d'une destination a été créé avec le verrouillage d'objets, la console affiche WORM · 365 j à côté de la destination. Conséquences :

  • chaque archive est verrouillée 365 jours après son écriture : personne ne peut la supprimer avant, pas même le support. La console affiche Verrouillée (WORM) jusqu'au sur l'archive ;
  • la rétention de la destination ne peut pas être inférieure à la durée du verrou (365 jours) ;
  • une archive verrouillée reste restaurable pendant toute la durée du verrou.

PostgreSQL : une seule destination​

Une base PostgreSQL archive ses journaux de transactions en continu, entre deux sauvegardes, vers une seule destination. Deux destinations sur une même base se partageraient ce flux : aucune des deux ne contiendrait d'historique complet, donc restaurable. Hikube refuse donc de sauvegarder une base PostgreSQL vers une seconde destination, que ce soit par programmation ou à la demande.

Pour garder des archives à des rythmes différents (par exemple quotidiennes et mensuelles), utilisez plusieurs programmations vers la même destination. Pour MariaDB, les VM et les disques, plusieurs destinations sont possibles.


Programmations​

Une programmation associe une ressource, une destination et un horaire. Le nom, la ressource et la destination sont fixés à la création ; seul l'horaire se modifie.

ÉlémentRègle
Nom du plan1 à 40 caractères : minuscules, chiffres et tirets, sans commencer ni finir par un tiret. Unique dans le projet.
HoraireUn préréglage (Toutes les heures, Chaque jour, Chaque semaine) ou une expression cron à cinq champs.
Fréquence maximaleUne exécution par heure.

Horaires et fuseau horaire​

L'horaire d'une programmation est enregistré en UTC.

  • Avec l'onglet Préréglage, vous choisissez une heure locale ; la console la convertit en UTC au moment de l'enregistrement.
  • Avec l'onglet Expression cron, vous saisissez directement une expression en UTC, par exemple 30 1 * * * pour 01:30 UTC chaque jour. @hourly, @daily, @weekly, @monthly et @yearly sont acceptés ; les intervalles (@every) et les préfixes de fuseau horaire (CRON_TZ=, TZ=) sont refusés.
  • L'horaire étant fixe en UTC, une sauvegarde programmée se décale d'une heure en heure locale à chaque changement d'heure. La console l'indique et affiche la Prochaine exécution en heure locale.

États d'une programmation​

ÉtatSignification
PrêteL'horaire est valide, la ressource et la destination existent.
En erreurL'horaire n'est pas valide, ou la ressource ou la destination n'existe plus. Le message indique laquelle.
InconnuL'état n'a pas pu être lu.

Supprimer une programmation arrête les exécutions futures et conserve les archives déjà prises. L'historique des exécutions de cette programmation disparaît avec elle.


Exécutions​

Une exécution passe par les états En attente, En cours, puis Réussie ou Échouée. Une exécution que vous avez annulée s'affiche Annulée.

  • Pour une VM ou un disque, la console affiche le pourcentage de données transférées. Ce chiffre mesure les données lues, pas la place occupée dans le bucket : les blocs déjà présents dans une archive précédente ne sont pas réécrits.
  • Pour PostgreSQL et MariaDB, aucune progression n'est disponible.

Archives​

États d'une archive​

ÉtatSignification
En attenteL'archive est en cours d'écriture.
PrêteL'archive est complète.
ÉchouéeLa sauvegarde n'a pas abouti ; l'archive n'est pas restaurable.

Archive restaurable ou non​

Une archive Prête n'est restaurable que si sa destination existe encore, n'est pas en cours de suppression et est bien celle où l'archive a été écrite. Quand ce n'est pas le cas, la console affiche la raison :

Raison affichéeCe qu'il faut faire
L'archive n'est pas prêteAttendre la fin de l'écriture, ou utiliser une autre archive si la sauvegarde a échoué.
Sa destination a été suppriméeL'archive ne redevient pas restaurable, même en recréant une destination du même nom. Utilisez une archive plus récente.
Sa destination est en cours de suppressionUtilisez une autre archive.
La destination de ce nom a été recréée après la sauvegardeCe n'est plus la destination où l'archive a été écrite, même si elle pointe vers le même bucket. Utilisez une archive prise depuis.
Les destinations n'ont pas pu être luesRéessayez dans un moment.
Les données de l'archive ne sont plus stockéesVM et disques : l'archive a été effacée, par exemple en fin de rétention.

Restaurable signifie que la restauration sera acceptée ; Hikube ne relit pas le contenu du bucket pour le vérifier.

Supprimer une archive​

TypeEffetConfirmation
PostgreSQL, MariaDBRetire l'archive de la liste ; ses données restent dans votre bucket.Simple
Machine virtuelle, disqueRetire l'archive et efface ses données. C'est irréversible.Saisie du nom de l'archive

Une archive en cours de lecture par une restauration ne peut pas être supprimée. Une archive verrouillée par un bucket WORM non plus, jusqu'à la fin de son verrou.


Restaurations​

Restauration en place ou vers une autre base​

  • En place : l'archive est restaurée sur sa ressource source, dont le contenu actuel est écrasé. La console demande de saisir le nom de la ressource pour confirmer.
  • Vers une autre base (PostgreSQL et MariaDB uniquement) : l'archive est restaurée dans une autre base existante du projet, du même type. Pour obtenir une copie, créez d'abord une base vide, puis restaurez-y l'archive.
    • PostgreSQL : la base cible est entièrement remplacée par le contenu de l'archive. Elle doit avoir la même version majeure de PostgreSQL que la base sauvegardée.
    • MariaDB : l'archive est un export rejoué dans la base cible. Chaque table qu'elle contient remplace la table du même nom ; les tables et bases qu'elle ne contient pas sont conservées.

Une restauration à la fois par ressource. Pendant une restauration, aucune sauvegarde à la demande de cette ressource n'est acceptée.

Ressource source supprimée ou recréée​

SituationPostgreSQL, MariaDBVM, disque
La source a été suppriméeChoisissez une autre base comme cible.La restauration recrée la ressource à partir de l'archive.
Une nouvelle ressource porte le nom de la source, créée après la sauvegardeElle est traitée comme une autre base : la restauration est acceptée après confirmation.Refusé : supprimez d'abord la ressource recréée, puis restaurez.

Restauration d'une VM : les disques remplacés​

Restaurer une VM en place remplace chacun de ses disques par sa copie de l'archive. Le choix Les disques actuels de cette machine décide du sort de ce qu'ils contenaient jusqu'ici :

  • Les supprimer (par défaut) : leur ancien contenu est supprimé une fois la restauration réussie et vérifiée.
  • Les garder : leur ancien contenu devient un disque à part, nommé <disque>-orig-<identifiant>, détaché de toute VM, listé dans Disques et facturé comme tout disque jusqu'à ce que vous le supprimiez.

Une restauration qui échoue ou qui est annulée ne supprime rien, même avec Les supprimer : les anciens disques sont alors gardés sous ce même nom <disque>-orig-<identifiant>, et le message de la restauration le dit. Supprimez-les quand vous n'en avez plus besoin.

Avant de passer à Réussie, une restauration de VM ou de disque vérifie que chaque disque de l'archive a bien été réécrit. Pendant cette vérification (quelques secondes), elle reste En cours. Si un disque n'a pas été restauré, la restauration passe à Échouée en le nommant ; relancer la restauration peut réussir.

Un disque ne se restaure pas sur lui-même​

L'archive d'un disque sauvegardé seul ne peut pas être restaurée sur ce disque tant qu'il existe. Pour revenir à un état antérieur d'un disque attaché à une VM, restaurez une archive de la VM : elle réécrit tous ses disques. Un disque supprimé, lui, est recréé par la restauration de son archive.

Annulation​

OpérationAnnulableRemarques
Sauvegarde pas encore démarréeOui, tous types
Sauvegarde PostgreSQLTant qu'elle attend de démarrerUne sauvegarde PostgreSQL commencée ne s'interrompt pas : elle se termine ou échoue d'elle-même.
Sauvegarde MariaDBOui
Sauvegarde de VM ou de disqueOuiDans les premières secondes, pendant la copie de la configuration, l'annulation est refusée : réessayez quelques secondes plus tard.
Restauration PostgreSQL ou MariaDBNonUne restauration de base qui n'aboutit pas échoue d'elle-même au bout de 30 minutes.
Restauration de VM ou de disqueOuiRien n'est défait : la VM peut rester arrêtée et ses disques mis de côté. Une nouvelle restauration la rétablit.

Une sauvegarde annulée s'affiche Annulée dans l'activité, pas comme un échec, et ne produit pas d'archive.


Restauration à un instant précis (PostgreSQL)​

Une base PostgreSQL sauvegardée archive en continu ses journaux de transactions vers sa destination. Une restauration peut donc ramener la base :

ChoixRésultat
État de la sauvegarde (par défaut)L'état exact de l'archive choisie.
État le plus récentL'archive, puis tous les journaux archivés depuis : l'état le plus récent connu.
Un instantL'état de la base juste avant la première transaction postérieure à l'instant choisi.

Fenêtre de restauration​

Chaque archive PostgreSQL a une fenêtre d'instants atteignables, que la console affiche sur une frise :

  • elle commence à la fin de la sauvegarde (pas à son début : la base n'est cohérente qu'une fois la sauvegarde terminée) ;
  • elle se termine avant la dernière transaction présente dans les journaux archivés. Un instant postérieur à la dernière transaction ne peut pas être atteint, car la restauration s'arrête sur la première transaction qui le suit : choisissez alors État le plus récent, qui inclut cette dernière transaction ;
  • les journaux sont archivés avec un léger décalage : les toutes dernières minutes ne sont pas encore restaurables.

Branches de l'historique​

Restaurer une base PostgreSQL en place démarre une nouvelle branche de son historique. Les archives prises avant cette restauration appartiennent à l'ancienne branche. Si, depuis une archive, l'état le plus récent ou un instant donné devait partir d'une archive d'une autre branche, il ne rendrait pas les données de l'archive choisie : la console ne propose pas ces instants, et la restauration est refusée. Choisissez un instant plus ancien, ou une archive de la branche voulue.


Cycle de vie​

ActionComportement
Créer une destinationEn préparation, puis Prête.
Modifier la rétentionVoir Rétention. Impossible sous la durée du verrou d'un bucket WORM.
Supprimer une destinationRefusé tant qu'une programmation, une sauvegarde ou une restauration l'utilise. Les archives restent dans le bucket mais ne sont plus restaurables ; pour PostgreSQL, leur rétention cesse d'être appliquée.
Supprimer une programmationLes exécutions futures s'arrêtent ; les archives sont conservées.
Supprimer une archiveVoir Supprimer une archive.
Supprimer une ressource sauvegardéeSes archives sont conservées et restent restaurables.

Pour aller plus loin​