Sauvegarde et restauration des bases de données¶
Sauvegarde¶
Utilisez la commande mongodump via une tâche cron. De préférence, faites la sauvegarde sur un système de fichiers externe à la machine (NAS, SAN). Vous pouvez consulter la documentation de la commande en suivant ce lien.
Note
Le mot de passe par défaut est canopsis, mais il peut-être nécessaire d'adapter la commande selon votre contexte.
mongodump --uri ${CPS_MONGO_URL} --gzip --archive="/chemin/vers/sauvegarde/canopsis-$(date +"%Y-%m-%d-%H-%M").gz"
La commande mongodump peut-être exécutée depuis un nœud ou toute machine possédant les database-tools de la même version que le serveur MongoDB.
Restauration¶
Warning
Cette manipulation a une incidence métier importante et ne doit être réalisée que par une personne compétente. La restauration de la base de données ne doit être effectuée que si celle-ci est endommagée.
Avant de procéder à la restauration, arrêtez l'hyperviseur.
systemctl stop canopsis
docker compose down
kubectl delete deployments --all
Avant de restaurer votre base de données, assurez-vous de la vider :
mongosh ${CPS_MONGO_URL} --eval 'db.getCollectionNames().forEach(c => db[c].drop())'
La commande mongorestore peut-être exécutée depuis un nœud ou toute machine possédant les database-tools de la même version que le serveur MongoDB.
mongorestore --uri ${CPS_MONGO_URL} --db canopsis --gzip --archive="/chemin/vers/sauvegarde/canopsis-2026-01-05-09-06.gz"
La commande mongorestore peut-être réaliser depuis un noeud ou un poste utilisateur à condition que les database-tools soient installés.
Si la restauration est réussie vous pouvez redémarrer l'hyperviseur.
systemctl start canopsis
docker compose up -d
export RELEASE_NAME="canopsis-prod"
helm upgrade ${RELEASE_NAME} canopsis/canopsis-pro -f customer-values.yaml
PostgreSQL (TimescaleDB)¶
Sauvegarde¶
Utilisez la commande pg_dump via une tâche cron. De préférence, faites la sauvegarde sur un système de fichiers externe à la machine (NAS, SAN). Vous pouvez consulter la documentation de la commande en suivant ce lien.
Note
Le mot de passe par défaut est canopsis, mais il peut être nécessaire d'adapter la commande selon votre contexte.
Warning
Il est nécessaire de réaliser cette action une fois pour chaque base de données, canopsis et canopsis_tech_metrics.
Pour la base canopsis:
pg_dump ${CPS_POSTGRES_URL} --no-owner -Fc -v -f /tmp/canopsis-$(date +"%Y-%m-%d-%H-%M")-canopsis-dump.sql.gz
Pour la base canopsis_tech_metrics:
pg_dump ${CPS_POSTGRES_TECH_URL} --no-owner -Fc -v -f /tmp/canopsis-$(date +"%Y-%m-%d-%H-%M")-canopsis_tech_metrics-dump.sql.gz
La commande pg_dump peut-être réaliser depuis un noeud ou un poste utilisateur à condition que les outils supplémentaires de PostgreSQL soient installés.
Restauration¶
Warning
Cette manipulation a une incidence métier importante et ne doit être réalisée que par une personne compétente. La restauration de la base de données ne doit être effectuée que si celle-ci est endommagée.
Avant de procéder à la restauration, arrêtez l'hyperviseur.
systemctl stop canopsis
docker compose down
kubectl delete deployments --all
Une fois Canopsis éteint, il est nécessaire de supprimer les tables des bases canopsis et/ou canopsis_tech_metrics avant de lancer la restauration
Pour la base canopsis:
echo "select 'drop table '||tablename||' cascade;' from pg_tables where schemaname = 'public'" | psql ${CPS_POSTGRES_URL} -t | psql ${CPS_POSTGRES_URL}
Pour la base canopsis_tech_metrics:
echo "select 'drop table '||tablename||' cascade;' from pg_tables where schemaname = 'public'" | psql ${CPS_POSTGRES_TECH_URL} -t | psql ${CPS_POSTGRES_TECH_URL}
La commande psql peut être exécutée depuis un nœud ou un poste utilisateur à condition que les outils supplémentaires de PostgreSQL soient installés.
La commande pg_restore peut être réalisée depuis un nœud ou un poste utilisateur à condition que les outils supplémentaires de PostgreSQL soient installés.
Tout d'abord, il faut se connecter à la base postgresql
sudo -u postgres psql
Puis créer les bases de Canopsis
postgres=# CREATE database canopsis;
postgres=# \c canopsis
canopsis=# CREATE EXTENSION IF NOT EXISTS timescaledb;
canopsis=# SET password_encryption = 'scram-sha-256';
canopsis=# CREATE USER cpspostgres WITH PASSWORD 'canopsis';
canopsis=# GRANT ALL ON DATABASE canopsis TO cpspostgres;
canopsis=# ALTER DATABASE canopsis OWNER TO cpspostgres;
canopsis=# exit
postgres=# CREATE database canopsis_tech_metrics;
postgres=# \c canopsis_tech_metrics
canopsis_tech_metrics=# CREATE EXTENSION IF NOT EXISTS timescaledb;
canopsis_tech_metrics=# SET password_encryption = 'scram-sha-256';
canopsis_tech_metrics=# CREATE USER cpspostgres_tech_metrics WITH PASSWORD 'canopsis';
canopsis_tech_metrics=# GRANT ALL ON DATABASE canopsis_tech_metrics TO cpspostgres_tech_metrics;
canopsis_tech_metrics=# ALTER DATABASE canopsis_tech_metrics OWNER TO cpspostgres_tech_metrics;
canopsis_tech_metrics=# exit
Vous devrez ensuite passer votre base en mode restauration
SELECT timescaledb_pre_restore();
Une fois la base en mode restauration, vous pouvez importer vos dumps
Pour la base canopsis
pg_restore -Fc -d ${CPS_POSTGRES_URL} canopsis-YYYY-mm-dd-HH-MM-canopsis-dump.sql.gz
Pour la base canopsis_tech_metrics:
pg_restore -Fc -d ${CPS_POSTGRES_TECH_URL} canopsis-YYYY-mm-dd-HH-MM-canopsis_tech_metrics-dump.sql.gz
La commande pg_restore peut être réalisée depuis un nœud ou un poste utilisateur à condition que les outils supplémentaires de PostgreSQL soient installés.
Une fois les dumps importés, vous pouvez sortir du mode restauration
SELECT timescaledb_post_restore();
Si la restauration est réussie vous pouvez redémarrer l'hyperviseur.
systemctl start canopsis
docker compose up -d
export RELEASE_NAME="canopsis-prod"
helm upgrade ${RELEASE_NAME} canopsis/canopsis-pro -f customer-values.yaml