Groupe de réflexions Pays-de-la-Loire sur les bases de données
Transcription
Groupe de réflexions Pays-de-la-Loire sur les bases de données
SG/SPSSI/CP2I Département opérationnel Ouest Date 07 juillet 2014 Groupe de réflexions Pays-de-la-Loire sur les bases de données spatiales Thème 1 : définition des choix techniques Historique des versions du document Version Date Commentaire 0.1 11/10/13 Création du document de base 0.2 01/06/14 Refonte du document 0.3 10/07/2014 Ajout de la librairie xml avant compilation PostGIS Affaire suivie par Philippe Loustaunau- SG/SPSSI/CP2I/DOO Tél. : 02 40 12 84 12 Courriel : [email protected] Rédacteur Philippe Loustaunau - SG/SPSSI/CP2I/DOO Contributeurs Relecteur Table des matières 1 LEXIQUE...............................................................................................................................................3 2 OBJECTIFS ET PÉRIMÈTRE DE LA RÉFLEXION.............................................................................4 2.1 le cadre technique du service.............................................................................................................4 2.2 les apports fonctionnels .....................................................................................................................4 2.3 Le choix du GT Régional....................................................................................................................5 3 PROCÉDURES D 'INSTALLATION DE POSTGRESQL 9.3 ET POSTGIS 2.04 SUR ESBL V2........5 3.1 Important : choix du serveur dans le service......................................................................................5 3.2 Installation de PostgreSQL 9.3...........................................................................................................5 3.3 Installation de Geos............................................................................................................................6 3.4 L'utilisateur d'administration postgres et fonctionnel geoadm...........................................................6 3.5 Configuration de Postgresql...............................................................................................................7 3.5.1 Autorisation de connexion..................................................................................................................................................................................................7 3.5.2 Configuration de Postgresql...............................................................................................................................................................................................7 3.6 Récupération de PostGIS 2.04 et installation ...................................................................................8 4 INSTALLATION ET PARAMÉTRAGE DU POSTE CLIENT................................................................9 4.1 Fonction Administration de Données : installation de pgAdmin.........................................................9 4.2 Fonction Utilisateur / Producteur de Données : paramétrage de QGIS..........................................10 4.3 Gestion des droits : création des rôles de connexions....................................................................10 5 DES POINTS D'ATTENTION POUR L'ADMINISTRATION DU SGBDS..........................................11 5.1 L'intégration du paramétrage dans le dispositif Éole.......................................................................11 5.2 La sauvegarde des données et la restauration................................................................................11 5.2.1 Sauvegarde manuelle d'une base....................................................................................................................................................................................11 5.2.2 Sauvegarde manuelle de toutes les bases......................................................................................................................................................................12 5.2.3 Sauvegarde par script et tâche planifiée.........................................................................................................................................................................12 5.2.4 Restauration des données...............................................................................................................................................................................................12 5.3 Autres points d'administration de la base........................................................................................12 3/12 1 Lexique Le système de gestion de données est un ensemble de logiciels permettant de décrire, de manipuler, d'interroger une base de données en assurant l'intégrité des données Une base de données est un ensemble structuré de données (tables) inter-reliées de manière cohérente (relations) et véhiculant une sémantique (contraintes) Les schémas , inclus dans les bases de données, peuvent être vus comme des espaces de nommages La modélisation d'un système d'information est une étape intermédiaire qui facilite le passage du terrain nominal (monde réel vu au travers des besoins) vers un ensemble de fichiers constituant la base de données Les index spatiaux ont pour vocation de permettre un accès très rapide à une sélection d'objets parmi l'ensemble des objets ( un objet est désigné de manière unique dans le système de gestion de base de données par un identificateur qu'il conserve pendant toute sa durée de vie) L'intégrité d'une donnée est assurée par un ensemble de règles liant les tables pour les opérations d'insertion, de mise à jour, de suppression permettant ainsi d'assurer la cohérence des données Un trigger est une opération appelée lors d'un accès à une table. Il peut intervenir avant et / ou après que la manipulation des données soit effective. Une vue est table virtuelle définie par une requête. Le langage de requête est le SQL qui permet de : • définir des données : créer, supprimer ou modifier des tables • de manipuler des données : sélectionner, insérer, modifier ou supprimer • de définir des permissions d'accès 2 Objectifs et périmètre de la réflexion La réflexion s'attache à recenser les différentes options techniques offertes pour l'installation d'une base PostgreSQL sur un serveur dans l'environnement technique type des services. Le choix d'une version de PostgreSQL est liée à différents critères : 2.1 le cadre technique du service La majorité des acquisitions serveurs des services s'effectuent dans le cadre du marché UGAP. Bien qu'aucune obligation ne semble contraindre les services à acquérir du matériel selon ce marché, le panel de l'offre et le cadre juridique justifient largement son usage . Cette convention propose différentes configurations potentielles, certaines étant estampillées Éole, d'autres pas. Éole est un système proposant des solutions « clef en main » aux services pour la mise en place des serveurs et des outils fonctionnant sur ces serveurs. La version Éole est portée par une version support longue durée du système d'exploitation Ubuntu. Ainsi, Eole 2.3 est porté par la LTS Ubuntu 10.04 dont le support est assuré jusqu'en 2015, la LTS suivante étant Ubuntu 12.04 (support jusqu'en 2017). Chaque version Ubuntu référence sa liste de dépôts sur lesquels les logiciels PostgreSQL et PostGIS sont accessibles : • Ubuntu 10.04 installe par défaut PostgreSQL 8.4.7 et PostGIS 1.4.0.2 • Ubuntu 12.04 installe par défaut PostgreSQL 9.1 et PostGIS 1.5.3.2 • Ubuntu 14,04 installe par défaut PostgreSQL 9.3 et PostGIS 2.1 4/12 2.2 Le choix du GT Régional Chaque version de PostgreSQL – PostGIS apporte son lot d'améliorations ou de nouveautés offrant de plus grandes possibilités aux utilisateurs (techniques ou fonctionnels) et corrigeant des anomalies antérieures. La dernière version majeure de PostGIS (version à partir de la v2.x ) apporte des fonctionnalités conséquentes en matière de topologie, de contrôles de validité des géométries et de stockage des raster. Après discussions au sein du groupe, il a été décidé d'opter pour une version PostGis 2.x afin d'utiliser notamment les fonctions de contrôle de géométries à l'issue de l'import d'un patrimoine de données produit sous MapInfo. Ce choix, dicté par des considérations d'usage de la donnée , implique d'installer sur notre serveur une version de Postgresql – Postgis non intégrée dans les dépôts référencés par notre version système d'Ubuntu. Le paragraphe suivant explique les modalités d'installation. 3 Procédures d 'installation de PostgreSQL 9.3 et PostGIS 2.04 sur eSBL v2 Les tests d'installation suivants furent réalisés avec des eSBL v2 correspondant à une distribution Ubuntu 10.04 (version actuelle du système sur les serveurs eSBL v2). La procédure d'installation est détaillée ci-après. Il est nécessaire toutefois de connaître à minima l'usage de l'éditeur Vi pour l'insertion de lignes et la sauvergarde des modifications dans des fichiers ainsi que les principales commandes Linux. 3.1 Important : choix du serveur dans le service L'installation expliquée ci-après s'appuie sur un serveur eSBL v2 éolisé tel qu'il en existe dans les services notamment pour l'installation des modules géomatiques Géo-IDE Base et Distribution. Il est absolument déconseillé de procéder à l'installation de PostgreSQL 9.3 et PostGIS 2.04 sur un eSBL ayant ces modules Géo-IDE. En effet, nous allons installer sur le système d'exploitation du serveur des bibliothèques nécessaires au bon fonctionnement de notre base de données et avec lesquelles le fonctionnement de Géo-IDE n'est pas assuré. IL EST DONC IMPERATIF DE DISPOSER D'UN SERVEUR (physique ou virtuel) DEDIE POUR L'INSTALLATION DE POSTGRESQL / POSTGIS TELLE QUE DECRITE DANS LES PARAGRAPHES SUIVANTS. De même, la cohabitation sur un même serveur d'une instance PostGIS 2.x et d'une version antérieure (< 2.x) n'a pas été testée . 3.2 Installation de PostgreSQL 9.3 Le paquet PostgreSQL 9.3 n'est pas sur le dépôt référencé du système Ubuntu 10.04 de nos eSBL . Pour autant, cette version de PostgreSQL est soutenu par la communauté pour cette version d'Ubuntu, ce qui nous assure une stabilité de notre système. Dans le gestionnaire de paquets APT, on va rajouter une référence secondaire vers le dépôt de PostgreSQL. Créer un fichier pgdg.list sous /etc/apt/sources.list.d Dans ce fichier, mettre la référence vers le dépôt PostgreSQL 5/12 Paramétrer l'accès Internet du proxy Récupération de la clef qui vérifie l'authenticité des paquets pour les ajouter à notre liste des dépôts et mettre à jour le gestionnaire de paquets APT wget -O – http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add – sudo apt-get update On installe PostgreSQL 9.3 3.3 Installation de Geos La Geometry Engine Open Source communément appelée GEOS est une librairie qui permet la manipulation d'objets géographiques en incluant les principales fonctions et opérateurs spatiaux . L'installation de PostGIS 2.x va nécessiter une version de GEOS supérieure à la v 3.3.2 Récupération et installation de GEOS v3.3.9 sous un répertoire local /usr/temp/geos/ wget http://download.osgeo.org/geos/geos-3.3.9.tar.bz2 tar xfj geos-3.3.9.tar.bz2 cd geos-3.3.9 ./configure make sudo make install cd .. 3.4 L'utilisateur d'administration postgres et fonctionnel geoadm A l' installation de Postgresql, un utilisateur postgres par défaut est créé. A ce stade, il est seul à pouvoir se connecter à la base. Au départ, toutes les opérations d'administration se font avec cet utilisateur postgres qui ne possède pas de mot de passe. C'est un utilisateur bloqué et le mieux est qu'il le reste. Nous allons créer un nouvel utilisateur nommé geoadm qui deviendra le compte de connexion de l'ADL. Si le service souhaite ultérieurement mettre en place des interfaces de saisie ou de consultation de données, il est conseillé de créer un rôle applicatif selon l'exemple suivant : • geoapp : compte de connexion pour les applications ou les utilisateurs en consultation qui accéderont à PostgreSQL. N'est pas autorisé à créer des bases de données • geoadm: compte de connexion pour l'administrateur de données du service. Sera autorisé à créer des bases de données 6/12 A l'issue, on aura donc comme rôles de connexion Rôle Peut se connecter Superutilisateur * Peut créer des bases Peut créer des rôles postgres geoadm geoapp * le droit superutilisateur permet d'outrepasser toutes les vérifications de droits d'accès à la base de données. Ces privilèges ne doivent donc pas être accordés à la légère. Création de l'utilisateur geoadm (option : -P pour le mot de passe ; -d pour la création de bases de données ; -r pour la création de rôle de connexion ) 3.5 Configuration de Postgresql 3.5.1 Autorisation de connexion La gestion des autorisations de connexions se fait grâce au fichier pg_hba.conf. Sa structure est un ensemble d'enregistrements constitués de plusieurs champs. Chaque enregistrement précise un type de connexion, une plage d'adresse IP autorisée, un nom de base de donnée, un nom d'utilisateur et une méthode d'authentification. • champ TYPE : local correspond à un accès local à la base, host étant un accès réseau • champ DATABASE : nom de la base de données pour laquelle on précise les autorisations de connexion • champ USER : all permet à tous les rôles de se connecter à la base, sinon mettre le nom du rôle • champ ADDRESS : correspond à l'adresse ou la plage d'adresses IP autorisée à se connecter • champ METHOD : remplacer ident sameuser par md5 • 3.5.2 Configuration de Postgresql Il faut autoriser Postgresql à écouter les appels entrants sur le port d'écoute 5432 (port proposé par défaut mais il est possible de faire un autre choix selon les ports disponibles du serveur). Pour cela, il faut éditer le fichier de configuration nommé postgres.conf ligne 59 et 65 7/12 Sauvegarder les modifications et redémarrer Postgresql 3.6 Récupération de PostGIS 2.04 et installation Contrôler que la librairie GEOS v3.3.9 soit bien restée référencée. Si ce n'était pas le cas, supprimer le fichier geos-config du répertoire /usr/bin et créer dans ce même répertoire un lien symbolique vers la version v3.3.9 Récupération des sources de PostGIS 2.0 dans le répertoire /usr/temp/ wget http://download.osgeo.org/postgis/source/postgis-2.0.4.tar.gz tar xfz postgis-2.0.4.tar.gz cd postgis-2.0.4 PostGIS 2.0 peut être configuré en activant ou pas le support topologique et le support raster. Pour ce faire, il faut utiliser les paramètres --without-raster et --without-topology . Par défaut, les deux supports sont activés. En raison d'un bug identifié dans Postgis 2.0 avec Postgresql 9.3 (http://trac.osgeo.org/postgis/changeset/10321), on porte une modification dans un fichier nommé geometry_estimate.c ligne 26 Fichier initial ligne 26 #include « ../postgis_config.h » Après cette ligne 26, on insère les commandes suivantes (sans supprimer la ligne 26): #if POSTGIS_PGSQL_VERSION >=93 #include « access/htup_details.h » #endif 8/12 On sauvegarde la modification et on lance la compilation ./configure make sudo make install sudo ldconfig sudo make comments-install Activer les outils pour travailler en ligne de commande sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/shp2pgsql sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/pgsql2shp sudo ln -sf /usr/share/postgresql-common/pg_wrapper /usr/local/bin/raster2pgsql Création d'une base de données géographiques modèle nommée template_SIG sudo -u postgres createdb template_SIG sudo -u postgres psql -d template_SIG -c "UPDATE pg_database SET datistemplate=true WHERE datname='template_SIG'" sudo -u postgres psql -d template_SIG -c "CREATE EXTENSION postgis_topology ; " 4 Installation et paramétrage du poste client 4.1 Fonction Administration de Données : installation de pgAdmin L'outil pgAdmin est un outil d’administration graphique pour PostgreSQL . Il assiste l'utilisateur dans l'organisation des bases de données et permet l'exécution de requête SQL. S'il existe d'autres produits que celui-ci, pgAdmin est librement téléchargeable et utilisable. Pour gérer les bases issues de Postgresql 9.3 et audelà, il est nécessaire d'installer au minimum la version pgAdmin 1.18.1 pour Windows. (lien : http://www.postgresql.org/ftp/pgadmin3/release/v1.18.1/win32/) Procéder au téléchargement et à l'installation de l'outil sur le poste de l'administrateur fonctionnel de la base de donnée. Paramétrer la connexion via Fichier – Ajouter un serveur 9/12 4.2 Fonction Utilisateur / Producteur de Données : paramétrage de QGIS Le compte de connexion pour l'utilisateur / producteur de données doit être créé préalablement par l'administration de données au travers de pgAdmin (cf. § 5.3). Dans Qgis, menu Couche \ Ajouter une couche PostGIS puis bouton « Nouveau » 4.3 Gestion des droits : création des rôles de connexions Un rôle correspond à un utilisateur et/ ou à un groupe. Il a des droits et peut être membre de plusieurs autres rôles. Un utilisateur fait parti d'un ou plusieurs groupes et dispose alors des droits de ce groupe. Les droits dont il dispose avec le groupe complètent ses droits initiaux qui peuvent être : • le rôle est autorisé à se connecter sur une base. Cette option a été rendue obligatoire. • Le rôle est autorisé à créer une base de données • le rôle est autorisé à créer un autre rôle • le rôle est un super utilisateur disposant de tous les droits. Cette option n'est pas autorisée. Le rôle « geoadm » que nous avons créé pour l'administrateur fonctionnel de la base de données n'est pas autorisé à créer des rôles de super utilisateur. Pour créer un rôle avec pgAdmin (interface graphique), il suffit de sélectionner dans le Navigateur d'Objet l'objet souhaité (Rôles groupe ou Rôles de connexion), de faire un clic droit, et de sélectionner la commande « ajouter un rôle » 10/12 5 Des points d'attention pour l'administration du SGBDS 5.1 L'intégration du paramétrage dans le dispositif Éole A écrire et faire valider 5.2 La sauvegarde des données et la restauration Comme tout ce qui contient des données importantes, les bases de données PostgreSQL doivent être sauvegardées régulièrement. Bien qu'il existe plusieurs solutions techniques pour mettre en place des sauvegardes (sauvegarde SQL, sauvegarde du système de fichiers, réplication des données sur un serveur PostgreSQL /PostGIS secondaire...), dans l'attente d'une politique nationale, seule la procédure de sauvegarde SQL sera proposée. Le principe est de créé un fichier texte de commandes SQL qui, retourné au serveur, recrée une base de données à l'identique de celle sauvegardée. La sauvegarde représente une image de la base de données au moment où débute l’exécution et ne bloque pas les autres opérations sur la base. L'exécution de la commande sera effectuée par un utilisateur ayant des droits sur l'ensemble des bases de données (pour nous, utilisateur postgres ). Cet utilisateur va indiquer un répertoire de stockage de la sauvegarde (dump). Il faut donc lui créer un répertoire avec des droits d'écriture. 5.2.1 Sauvegarde manuelle d'une base Pour ce faire, on utilise la commande pg_dump Sauvegarde la la base Urbanisme 11/12 5.2.2 Sauvegarde manuelle de toutes les bases 5.2.3 Sauvegarde par script et tâche planifiée Créer le fichier de script backupPG.sh et le complèter # !/bin/sh FICHIER=/usr/temp/dump/backupPG.sql LOG=/usr/temp/dump/backupPg.log SUJET="Sauvegarde PostgreSQL" date > $LOG echo "sauvegarde vers "$FICHIER >>$LOG sudo -i -u postgres pg_dumpall > $FICHIER 2>>$LOG # Recuperation des messages de backup cat $FICHIER|grep "PostgreSQL database" >>$LOG ls -lh $FICHIER >> $LOG date >> $LOG On permet l'exécution du fichier de script On planifie son exécution tous les jours à 21h00 en complétant le fichier d'exécution des tâches 00 21 * * * /usr/temp/dump/backupPG.sh 5.2.4 Restauration des données La restauration des données s'effectue avec le compte postgres sudo -i -u postgres psql -f /usr/temp/dump/backupPG.sql postgres 5.3 Autres points d'administration de la base Il n'est pas détaillé dans ce document tous les points de vigilance d'un administrateur système envers le SGBDS mais son attention pourra utiliement se porter sur : • le nettoyage des tables avec la commande VACUUM (ou son automatisation AUTOVACUUM) qui permet de récupérer de l'espace disque inutilisé • l'indexation des données lors de la création des tables qui améliore considérablement les accès aux données en lecture et la maintenance de ces index (commande REINDEX) 12/12