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

Documents pareils