database:sinp-aura:import-donnees

Import des données SINP-AURA pour GeoNature et l'Atlas

  • En local, sur votre machine, récupérer le dépôt Github "sinp-aura-data" :
    • Clonage du dépôt : git clone git@github.com:cbn-alpin/sinp-aura-data.git
    • Se placer dans le dépôt cloné : cd sinp-aura-data
    • Initialisation si nécessaires des sous-modules Git : git submodule init
    • Mise à jour des sous-modules Git : git submodule update
  • Suivre les éventuelles étapes indiquées dans les fichiers README.md de l'Atlas, CBNMC.
  • ATTENTION : avant un transfert sur le serveur, si nécessaire sauvegarder le dossier "data" : voir ci-dessous
  • Se placer à la racine du dossier sinp-aura-data
  • Transférer les scripts :
     rsync -av --copy-unsafe-links --exclude var --exclude .git --exclude .gitmodules --exclude .editorconfig --exclude .vscode --exclude .gitignore --exclude settings.ini --exclude "data/raw/*" --exclude venv --exclude .venv --exclude "import-parser/data/*" ./ geonat@db-aura-sinp:~/data/ --dry-run 
    • Supprimer l'option --dry-run si tout semble ok pour effectuer le transfert réel
  • Se connecter au serveur
    • Créer les fichiers settings.ini à partir des fichiers settings.sample.ini pour : shared, area, cbnmc, …
    • Préparer l'environnement du script import-parser en suivant les indications du fichier README.md (import-parser)
      • Notes : il est nécessaire de redonner les droits d’exécution à GCC pour tout le monde si l'on veut pouvoir installer correctement le venv avec sudo chmod o+x /usr/bin/gcc. Une fois l'installation terminée, retirer les à nouveau avec chmod o-x /usr/bin/gcc .
  • Notes : les données brutes nécessaires aux scripts sont automatiquement téléchargées depuis Dropbox
  • Se connecter à l'utilisateur "admin" sur le serveur : ssh geonat@db-aura-sinp
  • Créer le dossier de sauvegarde : mkdir -p backups/data
  • Sauvegarder le dossier "data" : mv data backups/data/$(date +%F)
  • Recréer le dossier "data" vide : mkdir data
Cette manipulation est dangereuse car elle supprime tout le contenu de la base de données de GeoNature !
  • Suivre les étapes de mise à jour d'une installation de GeoNature, au niveau de l'intervention sur "db-srv" suivre ceci:
    • Sur l'instance "db-srv" connecté en tant que "geonat", suivre les étapes suivantes
    • Mettre à true le paramètre drop_apps_db du fichier ~/geonature/config/settings.ini.
    • Se placer dans le dossier ~/geonature/install/ avec la commande : cd ~/geonature/install/
    • Lancer une session détachable car la manipulation peut être longue et une perte de connexion SSH possible : screen -S install-db
    • Lancer le script d'installation de la base de données de GeoNature : ./install_db.sh
    • Vérifier l’absence d'erreurs de l'installation dans le fichier ~/geonature/var/log/install_db.log avec : vi ~/geonature/var/log/install_db.log
    • ATTENTION : remettre à false le paramètre drop_apps_db du fichier ~/geonature/config/settings.ini !
  • En local, télécharger la version du référentiel sans DEM. Si besoin, le DEM pourra être généré ultérieurement.
  • Renommer le fichier ainsi : mv 20210520_ref_geo_2.sql 2021-05-20_sinp_aura_ref_geo.sql
  • Préparer le fichier :
    • Remplacer le propriétaire du schéma d'origine : sed -i 's/admingnpinv/geonatadmin/g' 2021-05-20_sinp_aura_ref_geo.sql
    • Commenter toutes les lignes concernant les droits des utilisateurs d'origine : sed -e '/atlaspinv/ s/^-* */-- /' -i 2021-05-20_sinp_aura_ref_geo.sql
    • Insérer la sauvegarde du schéma ref_geo pré-existant : sed -i 's/CREATE SCHEMA ref_geo;/ALTER SCHEMA ref_geo RENAME TO ref_geo_saved;\nCREATE SCHEMA ref_geo;/ 2021-05-20_sinp_aura_ref_geo.sql
  • Créer une archive .tar.bz2 du fichier SQL pour diminuer sa taille (~1,3Go ⇒ ~260Mo) : tar jcvf ./2021-05-20_sinp_aura_ref_geo.tar.bz2 ./2021-05-20_sinp_aura_ref_geo.sql
  • Uploader l'archive sur le dépôt SFTP : sftp -oPort=<port-ssh-sftp-server> data@bkp-<region>-sinp:/flavia/ «< $'put ./2021-05-20_sinp_aura_ref_geo.tar.bz2'
  • Se connecter au serveur "db" en tant qu'utilisateur geonat : ssh geonat@db-aura-sinp
  • Se placer dans le dossier ~/data/db-geonature/ : cd ~/data/db-geonature
  • Lancer le script : cd bin/ ; ./initialize.sh -v
  • Vérifier l’absence d'erreurs dans le fichier de log : vi ../var/log/$(date +'%F')_dbgn.log
  • Vérifier le contenu de la base de données.

Il est nécessaire d'ajouter dans le référentiel géographique de GeoNature le contour du territoire du SINP. Pour ce faire, nous allons utiliser le script area du dépôt "data" :

  • Se connecter au serveur "db" en tant qu'utilisateur geonat : ssh geonat@db-aura-sinp
  • Se placer dans le dossier ~/data/area/ de l'utilisateur geonat : cd ~/data/area
  • Créer le fichier de configuration : cp config/settings.sample.ini config/settings.ini
  • Modifier le fichier settings.ini en fonction de l'installation locale : vi config/settings.ini
  • Lancer une session détachable : screen -S import-area
  • Lancer le script : cd bin/ ; ./initialize.sh -v
    • Temps approximatif d'exécution : ~21s
  • Vérifier l’absence d'erreurs dans le fichier de log : vi ../var/log/$(date +'%F')_imports.log
  • Vérifier le contenu de la base de données :
    • le nombre de communes :
       psql -h localhost -U geonatadmin -d geonature2db -c "SELECT COUNT(*) FROM ref_geo.l_areas AS la JOIN ref_geo.bib_areas_types AS bat ON (la.id_type = bat.id_type) WHERE type_code = 'COM';"
      • Communes en AURA : 4 030
    • le nombre de départements :
       psql -h localhost -U geonatadmin -d geonature2db -c "SELECT COUNT(*) FROM ref_geo.l_areas AS la JOIN ref_geo.bib_areas_types AS bat ON (la.id_type = bat.id_type) WHERE type_code = 'DEP';"
      • Départements en AURA : 12

Il est nécessaire d'adapter la base de données de GeoNature au SINP AURA. Si vous avez corriger le référentiel géographique via le fichier SQL du référentiel géo de Flavia cette étape est déjà réalisée. Dans le cas contraire :

  • Se connecter au serveur "db" en tant qu'utilisateur geonat : ssh geonat@db-aura-sinp
  • Se placer dans le dossier ~/data/db-geonature/ : cd ~/data/db-geonature
  • Lancer le script : cd bin/ ; ./initialize.sh -v
  • Vérifier l’absence d'erreurs dans le fichier de log : vi ../var/log/$(date +'%F')_dbgn.log
  • Vérifier le contenu de la base de données.

Il est aussi possible d’exécuter ces scripts SQL individuellement et manuellement :

  • Se connecter au serveur "db" en tant qu'utilisateur geonat : ssh geonat@db-aura-sinp
  • Se placer dans le dossier ~/data/db-geonature : cd ~/data/db-geonature/data/sql/
  • Exécuter les scripts SQL suivant :
    • Organiser le menu de gauche de GeoNature (nom et ordre des entrées) : psql -h localhost -U geonatadmin -d geonature2db -f ./01_update_modules.sql
    • Remplacement des vues d'export de la Synthèse : psql -h localhost -U geonatadmin -d geonature2db -f ./02_replace_synthese_export_view.sql
    • Corriger des problèmes en tant que super utilisateur : sudo -u postgres -s psql -d geonature2db -f ./03_fix_as_superuser.sql
    • Corriger des problèmes en tant que propriétaire de la base : psql -h localhost -U geonatadmin -d geonature2db -f ./04_fix_as_user.sql
  • Ajout d'un utilisateur "général" permetant un accès à l'API GeoNature (CMS ORB AURA par exemple).
    • Se connecter à UsersHub en tant qu'admin : https://gestion.biodiversite-aura.fr/
    • Cliquer sur le menu principal "Utilisateurs" et sur le bouton "Ajouter un utilisateur", remplir le formulaire ainsi :
      • Cocher "Actif"
      • Nom: GÉNÉRAL
      • Prénom : Utilisateur
      • Identifiant : user-general
      • Organisme : ne rien sélectionner
      • Mot de passe / Confirmation : voir Keepass.
      • Groupe : Grp_utilisateurs
      • Email : webmaster@biodiversite-aura.fr
      • Commentaire : Utilisateur général permettant un accès à l'API GeoNature.
      • Cliquer sur "Enregistrer"
  • Modification de l'utilisateur "admin" :
    • Se connecter à UsersHub en tant qu'admin : https://gestion.biodiversite-aura.fr/
    • Cliquer sur le menu principal "Utilisateurs" et rechercher l'utilisateur dont l'identifiant est "admin".
    • Changer son mot de passe en cliquant sur le bouton dont l'icone est une clé.
    • Puis cliquer sur son bouton de modification (icône de crayon) et modifié l'utilisateur "admin" ainsi :
      • Nom : GÉNÉRAL
      • Prénom : Administrateur
      • Organisme : aucun
      • Groupes : laisser les 2 groupes afin d'y accéder dans l'interface "Permissions" de GeoNature. Lorsque le groupe "Grp_utilisateurs" aura des utilisateurs associés, il sera possible de mettre l'utilisateur "admin" seulement dans le groupe "Grp_admin"
      • Email : adminsys@biodiversite-aura.fr
      • Commentaire : Administrateur global.
  • Suppression des utilisateurs de démo ayant les identifiants : agent, partenaire, pierre.paul, validateur
    • Les rechercher et cliquer ensuite sur le bouton de suppression (icone rouge de poubelle)
  • Modifier le groupe "Grp_en_poste" :
    • Nom : Grp_utilisateurs
    • Description : Tous les utilisateurs inscrits à Bioviv'AURA Expert par défaut.
  • Ajouter le groupe "Grp_police_region" :
    • Onglet "Groupe", cliquer sur "Ajouter un groupe" :
      • Nom : Grp_police_region
      • Description : Groupe d'utilisateur ayant des fonctions de police de l'environnement sur l'ensemble du territoire du SINP.
      • Cliquer sur "Enregistrer"
    • Onglet "Application", cliquer sur "Voir les membres" de "GeoNature"
      • Cliquer sur "Ajouter un rôle pour l'application GeoNature"
        • Rôle : Grp_police_region
        • Profile : Lecteur
        • Cliquer sur "Enregistrer"
    • Onglet "Groupe", cliquer sur "Voir les membres"
      • Ajouter les rôles (=utilisateurs) ayant des droits de police sur toute la région pour la Faune, Flore, Fonge…
  • Via GeoNature, module "Admin" > "Permissions", modifier les permissions par défaut comme suit :
    • Pour le groupe "Grp_Utilisateurs"
      • Pour le module "GeoNature" :
        • Lire les données ⇒ Appartenance : "De tout le monde"
        • Exporter les données ⇒ Appartenance : "De tout le monde"
      • Pour le module "Métadonnées" :
        • Lire les données ⇒ Appartenance : "De tout le monde"
      • Pour le module "Synthese (= Observations)" :
        • Lire les données ⇒ Appartenance : "De tout le monde" & Précision : "Floutée"
        • Exporter les données ⇒ Appartenance : "De tout le monde" & Précision : "Floutée"
    • Pour le groupe "Grp_admins" :
      • Pour le module "Synthese (= Observations)" :
        • Lire les données ⇒ Précision : "Exacte"
        • Exporter les données ⇒ Précision : "Exacte"
    • Pour le groupe "Grp_police_region"
      • Pour le module "GeoNature" :
        • Lire les données ⇒ Appartenance : "De tout le monde"
        • Exporter les données ⇒ Appartenance : "De tout le monde"
      • Pour le module "Métadonnées" :
        • Lire les données ⇒ Appartenance : "De tout le monde"
      • Pour le module "Synthese (= Observations)" :
        • NOTES : l'héritage ne semble pas fonctionner dans ce cas précis ! C'est surement dû à la présence des filtres Géographique et Taxonomique.
        • Objet "Observation privée" :
          • Lire les données ⇒ Appartenance : "De tout le monde", Géographique : "Auvergne-Rhône-Alpes", Taxonomique : Biota [349525] & Précision : "Exacte"
          • Exporter les données ⇒ Appartenance : "De tout le monde", Géographique : "Auvergne-Rhône-Alpes", Taxonomique : Biota [349525] & Précision : "Exacte"
        • Objet "Observation sensible" :
          • Lire les données ⇒ Appartenance : "De tout le monde", Géographique : "Auvergne-Rhône-Alpes", Taxonomique : Biota [349525] & Précision : "Exacte"
          • Exporter les données ⇒ Appartenance : "De tout le monde", Géographique : "Auvergne-Rhône-Alpes", Taxonomique : Biota [349525] & Précision : "Exacte"
  • Se connecter au serveur "db" en tant que geonat avec : ssh geonat@db-aura-sinp
  • Se placer dans le dossier ~/data/cbnmc/ de l'utilisateur geonat : cd ~/data/cbnmc
  • Lancer une session détachable : screen -S import-cbnmc
  • Lancer le script : cd bin/ ; ./import_initial.sh -v
    • Temps approximatif d'exécution : ~1h45mn
  • Vérifier l’absence d'erreurs dans la session et vérifier le contenu de la base de données
  • Fermer la session Screen
  • Se placer dans le dossier ~/data/cbna/ de l'utilisateur geonat : cd ~/data/cbna
  • Lancer une session détachable : screen -S import-cbna
  • Lancer le script : cd bin/ ; ./import_initial.sh -v
    • Temps approximatif d'exécution : ~1h45mn
  • Vérifier l’absence d'erreurs dans la session et vérifier le contenu de la base de données
  • Fermer la session Screen
  • Se placer dans le dossier ~/data/lpo/ de l'utilisateur geonat : cd ~/data/lpo
  • Lancer une session détachable : screen -S import-lpo
  • Lancer le script : cd bin/ ; ./import_initial.sh -v
    • Temps approximatif d'exécution : ?
  • Vérifier l’absence d'erreurs dans la session et vérifier le contenu de la base de données
  • Fermer la session Screen
  • Se placer dans le dossier ~/data/flavia/ de l'utilisateur geonat : cd ~/data/flavia
  • Lancer une session détachable : screen -S import-flavia
  • Lancer le script : cd bin/ ; ./import_initial.sh -v
    • Temps approximatif d'exécution : ?
  • Vérifier l’absence d'erreurs dans la session et vérifier le contenu de la base de données
  • Fermer la session Screen

Suivre la démarche décrite dans la documentation de gestion des serveurs.

  • Au préalable, ajouter une authentification HTTP au site de l'Atlas, le temps des tests avant mise en prod.
  • Suivre la démarche décrite dans la documentation de gestion des serveurs
  • Il existe aussi le script ~/data/db-atlas/data/sql/05_refresh_vm_data.sql. C'est l'équivalant de la fonction refresh_materialized_view_data(). Mais il permet de suivre l'avancé du rafraîchissement. Pour l'utiliser : psql -h localhost -U geonatadmin -d gnatlas -f ~/data/db-atlas/data/sql/05_refresh_vm_data.sql
  • Notes : le paramètre idle_in_transaction_session_timeout=310000 présent dans le fichier /etc/postgresql/12/main/conf.d/01_optimizing.conf posait problème lors de la mise à jour des données de l'Atlas. Une des requêtes (liée à FDW) était annulée car dans l'état "idle in transaction" pendant plus de 5mn10s. Ce paramètre étant finalement inutile, il a été supprimé.
  • Passage du code nomenclatures des données de Flavia de 5 à 2 : psql -h localhost -U geonatadmin -d geonature2db -v idSourceMin="18" -v idSourceMax="36" -f ~/data/db-geonature/data/sql/07_fix_flavia_data.sql
  • Création de la table contenant les observations hors territoire : psql -h localhost -U geonatadmin -d geonature2db -f ~/data/area-outside/data/sql/01_create_outside_all.sql
  • Export vers des fichiers CSV des données hors-territoire par id source :
    • CBNMC : sudo -u postgres -s psql -h localhost -d geonature2db -v idSourceMin="1" -v idSourceMax="1" -v csvFilePath="/tmp/cbnmc.csv" -f ~/data/area-outside/data/sql/02_export_outside_data.sql
    • CBNMA : sudo -u postgres -s psql -h localhost -d geonature2db -v idSourceMin="2" -v idSourceMax="2" -v csvFilePath="/tmp/cbna.csv" -f ~/data/area-outside/data/sql/02_export_outside_data.sql
    • FLAVIA : sudo -u postgres -s psql -h localhost -d geonature2db -v idSourceMin="18" -v idSourceMax="36" -v csvFilePath="/tmp/flavia.csv" -f ~/data/area-outside/data/sql/02_export_outside_data.sql
  • Vider les champs géometrie des observations hors territoire : psql -h localhost -U geonatadmin -d geonature2db -f ~/data/area-outside/data/sql/03_fix_outside_geom.sql
  • Export vers des fichiers CSV des données des CBNs dont la sensibilité a été corrigé :
    • CBNMC : sudo -u postgres -s psql -h localhost -d geonature2db -v csvFilePath="/tmp/fix_sensitivity_cbnmc.csv" -f ~/data/db-geonature/data/sql/08_export_cbn_sensitivity.sql
    • CBNA : sudo -u postgres -s psql -h localhost -d geonature2db -v csvFilePath="/tmp/fix_sensitivity_cbna.csv" -f ~/data/db-geonature/data/sql/08_export_cbn_sensitivity.sql
  • Correction du niveau de sensibilité pour les taxons (Flore) sensible de la région AURA : psql -h localhost -U geonatadmin -d geonature2db -f ~/data/db-geonature/data/sql/09_fix_cbn_sensitivity.sql
  • Activation des utilisateurs intégrés précédemment possédant un email et un identifiant afin qu'ils puissent demander un renouvellement de mot de passe : psql -h localhost -U geonatadmin -d geonature2db -f ~/data/db-geonature/data/sql/10_fix_users.sql
  • Suppression manuelle des entrées de utilisateurs.t_roles possédant des identifiants et/ou email en doublon. Récapitulatifs des modifications stockées dans un tableur.
  • Activation des utilisateurs inactifs possédant un email afin qu'ils puissent demander un renouvellement de mot de passe : psql -h localhost -U geonatadmin -d geonature2db -f ~/data/db-geonature/data/sql/12_fix_inactive_users.sql
  • Fusion (puis suppression) des utilisateurs en doublon : cd ~/data/db-geonature/bin/ ; ./merge_users.sh -v . Utilise le script ~/data/db-geonature/data/sql/13_delete_duplicate_user.sql . Les anciens id_role supprimés et leurs remplaçants sont présents dans le fichier de config (~/data/db-geonature/config/settings.default.ini).
  • database/sinp-aura/import-donnees.txt
  • Dernière modification : 2021/11/19 14:38
  • de jpmilcent