5.18. Reconstruction¶
La reconstruction consiste à recréer le contenu des bases de données (MongoDB-data, Elasticsearch-data) en cas de perte de l’une ou l’autre à partir des informations présentes dans les offres de stockage. Elle part du principe que le contenu des offres n’a pas été altéré.
Prudence
Dans cette version de la solution logicielle VITAM, la reconstruction nécessite de couper le service aux utilisateurs.
Prudence
Une reconstruction complète à partir des offres de stockage peut être extrêmement longue, et ne doit être envisagée qu’en dernier recours.
5.18.1. Procédure mono-site¶
La procédure à appliquer est la même que la procédure du site primaire pour une installation multi-sites.
5.18.2. Procédure multi-sites¶
5.18.2.1. Cas du site primaire¶
La reconstruction se réalise de la manière suivante :
Arrêt de VITAM sur le site à reconstruire
- Utiliser le playbook
ansible-vitam-exploitation/stop_vitam.yml
- Utiliser le playbook
Il est indispensable de valider que tous les services VITAM (y compris les timers systemd) sont bien arrêtés
Purge des données (le cas échéant) stockées dans MongoDB-data, excepté les bases identity, config et admin :
- Utiliser le playbook
ansible-vitam-exploitation/start_mongodb.yml
pour démarrer les bases mongodb - Procéder à la purge des données en utilisant l’outil mongo shell ou un outil équivalent :
- Se connecter avec l’utilisateur
vitamdb-admin
- Lister les bases via la commande
show dbs
- Pour chacune des bases, excepté les bases identity, config et admin, les vider via la commande
db.getCollectionNames().forEach(function(x) {db[x].remove({})});
- Se connecter avec l’utilisateur
- Utiliser le playbook
ansible-vitam-exploitation/stop_mongodb.yml
pour stopper les bases mongodb
- Utiliser le playbook
Purge des données (le cas échéant) stockées dans Elasticsearch-data :
Utiliser le playbook
ansible-vitam-exploitation/start_elasticsearch_data.yml
pour démarrer elasticsearch-dataDans le cas où Cerebro ou un outil équivalent est disponible, lister les indexes et les purger via l’IHM
- Sinon :
- Se connectant en ssh sur un des nœuds elasticsearch-data
- Lister les indexes ES via
curl 'http://localhost:9200/_cat/indices?v'
- Pour chacun des indexes, vider l’index via :
curl -XDELETE 'http://localhost:9200/{index_name}'
(Pour cette action de purge d’elasticsearch-data un playbook équivalent est disponible :
ansible-vitam-exploitation/clean_indexes_es_data.yml
)
Utiliser le playbook
ansible-vitam-exploitation/stop_elasticsearch_data.yml
pour stopper elasticsearch-data
Reconfiguration et démarrage en tant que site secondaire:
- Paramétrer la variable
primary_site
àfalse
dans le fichier d’inventaire puis utiliser le playbookansible-vitam/vitam.yml
- Paramétrer la variable
Dès lors, l’accès utilisateur reste coupé, et l’intégralité des données est reconstruite progressivement
- Le suivi de la reconstruction se fait en observant l’évolution de l’offset de reconstruction stocké dans MongoDB-data
- Pour la release 8, la procédure est décrite dans la section « Recalcul des données graphe »
La collection
Offset
de la base de donnéesmetadata
est créée et permet de suivre l’avancement de la reconstruction.Une fois la reconstruction terminée (plus de modification dans la collection
Offset
), il convient de reconfigurer en tant que site primaire, puis redémarrer :- Paramétrer la directive
primary_site
àtrue
puis utiliser le playbookansible-vitam/vitam.yml
- Paramétrer la directive
5.18.2.2. Cas du site secondaire¶
La reconstruction se réalise de la manière suivante :
Arrêt de VITAM sur le site à reconstruire
- Utiliser le playbook
ansible-vitam-exploitation/stop_vitam.yml
- Utiliser le playbook
Il est indispensable de valider que tous les services VITAM (y compris les timers systemd) sont bien arrêtés.
Purge des données (le cas échéant) stockées dans MongoDB-data, excepté les bases identity, config et admin (procédure identique au cas du site primaire)
Purge des données (le cas échéant) stockées dans Elasticsearch-data (procédure identique au cas du site primaire)
Redémarrage du site secondaire Vitam
Utiliser le playbook
ansible-vitam-exploitation/start_vitam.yml
La prochaine itération de reconstruction au fil de l’eau redémarrera la reconstruction à partir du début
Attendre la fin de la reconstruction au fil de l’eau sur le site secondaire
- Le suivi de la reconstruction se fait en observant l’évolution de l’offset de reconstruction stocké dans MongoDB-data
- Pour la release 7 (version 1.4.x) il faut lancer le service dédié
vitam-metadata-graph-builder.service
sur le composant metadata pour recalculer le graphe des unités archivistiques et des groupes d’objets techniques n’ayant pas encore reconstruit leurs données graphe
5.18.3. Contrôle des données reconstruites¶
La reconstruction des objets en base de données que ce soit sur MongoDB-data ou Elasticsearch-data est un processus long. Afin de contrôler si tous les objets ont été reconstruits ou si la reconstruction est toujours en cours il est nécessaire de compter les objets des collections Units et ObjectGroups de la base Metadata.
Un playbook a été réalisé afin de réaliser ce comptage à la fois sur Elasticsearch-data et sur MongoDB-data.
Il s’execute sur chacun des sites à comparer via le playbook ansible-vitam-exploitation/reconstruction_doc_count.yml
.
À l’issue de l’exécution, le fichier environments/unit_got_docs_count.<site_name> est généré.