Sauvegarde des données graphe (Log shipping)
############################################

La sauvegarde des données graphe des métadonnées (UNIT/:term:`GOT`) consiste à récupérer au fil de l'eau depuis la base de données (MongoDB) les données graphe par (UNIT/GOT) pour les stocker dans les offres de stockage.

.. .. note:: Log shipping

.. caution:: En cas de problème de sauvegarde des données `graphe`, on écrit dans le fichier log une ``[Consistency Error]`` qu'il conviendra de surveiller.

.. warning:: Si l'instance qui démarre le service de sauvegarde s'arrête, il faut lancer ce service de sauvegarde dans une autre instance.

Déclenchement de la sauvegarde
===============================

La sauvegarde des données `graphe` est lancée via un *timer* systemd ( :ref:`systemd_timer_mtd_graph` ), qui démarre le service systemd associé.

* Le timer se lance chaque 30 minutes (par défaut, modifiable selon le besoin - se reporter à :ref:`changetimers` -)
* Le sauvegarde des données `graphe` se fait sur un intervalle de temps (depuis la dernière sauvegarde jusqu'au temps présent)
* Le fichier généré est un fichier au format ``zip``, qui contient un ou plusieurs fichiers ``JSON``. Ces fichiers ``JSON`` contiennent un tableau de données `graphe`.
* Le nom du fichier de la dernière sauvegarde contient les dates début et fin de sauvegarde. Ce nom est utilisé pour déterminer la dernière date de sauvegarde.
* La sauvegarde des UNIT est séparée de celle des :term:`GOT` (Deux `containers` distincts dans chaque offre de stockage)

Reconstruction des données `graphe`
===================================

La reconstruction des données `graphe` se fait avec le même principe que la reconstruction des méta-données (UNIT/:term:`GOT`) :

* Gérer l'offset de reconstruction des fichiers de sauvegarde des données graphe.
* Mettre à jour uniquement les données graphe. Si un document n'est pas trouvé, une création de ce document est faite et ne contiendra que les données du graphe.
* De même, la reconstruction des métadonnées ne modifie pas les données graphe potentiellement déjà existantes.
* Une purge est faite de tous les documents ayant uniquement les données graphe et qui sont vieux de (1 mois Configurable)
* Les documents ayant uniquement les données graphe ne sont pas indexés dans ElasticSearch.
* La reconstruction est séquentielle (D'abord les métadonnées UNIT/:term:`GOT` ensuite leur graphe)

.. seealso:: Se reporter à la procédure de :ref:`reconstruction` des métadonnées pour plus d'informations.

