Skip to content

Procédures

Ivan Gabriele edited this page Oct 27, 2023 · 1 revision

Restauration de la base de données depuis un backup

Les commandes ont été testées en intégration uniquement. En production, il peut être nécessaire d'effectuer ces commandes depuis le container db

Arrêter les services accédant à la bdd :

  • docker stop monitorenv_backend
  • docker stop monitorenv_geoserver

Terminer les connexions au service postgres

  • psql -h localhost -U postgres -c "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = 'monitorenvdb' AND pid <> pg_backend_pid();"

Supprimer la base de données monitorenvdb

  • psql -h localhost -U postgres -c "DROP DATABASE monitorenvdb;"

exporter le chemin du répertoire contenant la sauvegarde à restaurer export BACKUP_PATH=/home/monitorenv/backup_prod/2023-06-06/2023-06-05-daily (without trailing/leading slash)

Restaurer les rôles sudo gzip -d $BACKUP_PATH/globals.sql.gz psql -h localhost -U postgres -f $BACKUP_PATH/globals.sql

Restaurer la base de données nb: on se connecte sur la base postgres, qui permettra d'exécuter la requête DROP DATABASE monitorenvdb; (combinaison des options -C --create et -c --clean )

pg_restore -h localhost -U postgres -d postgres -C -c $BACKUP_PATH/monitorenvdb.custom

Commandes depuis le container (non testées)

docker exec monitorenv_database sh -c "psql -h localhost -U $POSTGRES_USER -f $BACKUP_PATH/globals.sql"

docker exec monitorenv_database sh -c "pg_restore -h localhost -U $POSTGRES_USER -d postgres -C -c $BACKUP_PATH/monitorenvdb.custom"