Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
postgresql [Le 29/10/2015, 20:42] – [L'utilisateur postgres] Style (répétition) 109.190.17.242 | postgresql [Le 24/02/2021, 19:25] (Version actuelle) – [Supprimer l'utilisateur Postgres du greeter sous xubuntu 14.04.1] correction de 'nommé-le' en 'nommez-le' 78.242.210.192 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | {{tag> | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== PostgreSQL ====== | ||
+ | |||
+ | ===== Introduction ===== | ||
+ | PostgreSQL est un système de gestion de bases de données ([[:SGBD]]) très performant sous licence BSD dont les performances sont comparables à Oracle 9. | ||
+ | |||
+ | |||
+ | Il propose de très nombreuses fonctionnalités, | ||
+ | |||
+ | ===== Documentation ===== | ||
+ | |||
+ | |||
+ | La documentation ainsi que d' | ||
+ | La communauté [[https:// | ||
+ | |||
+ | ===== Installation du serveur PostgreSQL===== | ||
+ | |||
+ | ==== Méthode recommandée ==== | ||
+ | |||
+ | [[: | ||
+ | < | ||
+ | |||
+ | Notez que l' | ||
+ | < | ||
+ | |||
+ | ==== Installation manuelle avec l' | ||
+ | |||
+ | Téléchargez le dernier fichier .run sur [[http:// | ||
+ | - rendez le fichier executable : | ||
+ | < | ||
+ | - puis exécutez-le en tant que [[: | ||
+ | < | ||
+ | |||
+ | Suivez les étapes affichées par l' | ||
+ | |||
+ | Une fois l' | ||
+ | |||
+ | Cependant, l' | ||
+ | Dans ce cas, allez dans le dossier** / | ||
+ | Changer les droit en écriture (sudo chmod o+w pgadminIII), | ||
+ | Dans mon cas, j'ai dû y ajouter la ligne : | ||
+ | Pour le rendre visible dans mon menu sous la catégorie Développement. | ||
+ | |||
+ | ==== Mise à jour Postgres EnterpriseDB avec conservation des Bases de Données ==== | ||
+ | |||
+ | Supprimer l' | ||
+ | < | ||
+ | $ sudo ./ | ||
+ | </ | ||
+ | Le dossier **Datas/** n'est pas supprimé.\\ Cela permet de garder les anciennes bases de données et la configuration utilisateur postgres.\\ | ||
+ | Lancer le programme d' | ||
+ | < | ||
+ | $ sudo ./ | ||
+ | </ | ||
+ | Lors de la pré-installation, | ||
+ | Confirmation de l' | ||
+ | Lancer l' | ||
+ | ==== L' | ||
+ | |||
+ | PostgreSQL est un serveur qui permet de se connecter à différentes bases de données. Par défaut, seul l' | ||
+ | |||
+ | Toutes les opérations d' | ||
+ | |||
+ | < | ||
+ | $ sudo -i -u postgres | ||
+ | Password: | ||
+ | </ | ||
+ | |||
+ | **exit** permettra, à la fin de cette session d' | ||
+ | |||
+ | <note tip>Il se peut que cette authentification retourne une erreur liée au fait qu'il est impossible pour // | ||
+ | |||
+ | Désormais, l' | ||
+ | < | ||
+ | psql | ||
+ | </ | ||
+ | |||
+ | Vous devriez obtenir quelque chose comme : | ||
+ | < | ||
+ | psql (9.5.10) | ||
+ | Type " | ||
+ | |||
+ | postgres=# | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | Si vous obtenez le message suivant : | ||
+ | < | ||
+ | psql: could not connect to server: Aucun fichier ou dossier de ce type | ||
+ | </ | ||
+ | Reportez-vous à la section " | ||
+ | </ | ||
+ | |||
+ | Notez que vous avez une interface en ligne de commande, et que vous êtes connecté en tant que " | ||
+ | |||
+ | Cette ligne de commande sera bien sûr utilisée pour exécuter des requêtes SQL, et aussi des commandes internes à postgreSQL (elles commencent toutes par un antislash) | ||
+ | |||
+ | Petit guide de survie pour le client psql | ||
+ | < | ||
+ | \h pour l' | ||
+ | \? pour l' | ||
+ | \g ou point-virgule en fin d' | ||
+ | \q pour quitter | ||
+ | </ | ||
+ | ====Supprimer l' | ||
+ | La suppression de l' | ||
+ | Aller dans le répertoire **/ | ||
+ | Créer un fichier text puis nommez-le **postgres** (nom de l' | ||
+ | Puis y ajouter le contenu suivant : | ||
+ | < | ||
+ | [User] | ||
+ | XSession=xubuntu | ||
+ | SystemAccount=true | ||
+ | </ | ||
+ | |||
+ | Sauvegarder et re-démarrer le greeter. | ||
+ | ==== Erreur psql au premier démarrage ==== | ||
+ | Si vous obtenez une erreur du type : | ||
+ | < | ||
+ | psql: could not connect to server: Aucun fichier ou dossier de ce type | ||
+ | Is the server running locally and accepting connections on Unix domain socket "/ | ||
+ | </ | ||
+ | Déconnectez-vous du compte postgres : | ||
+ | < | ||
+ | logout | ||
+ | </ | ||
+ | Puis vérifiez que le dossier de configuration PostgreSQL existe : | ||
+ | < | ||
+ | stat / | ||
+ | </ | ||
+ | Si la réponse est du type : | ||
+ | < | ||
+ | File: ‘/ | ||
+ | Size: 4096 Blocks: 8 IO Block: 4096 | ||
+ | Device: fd01h/ | ||
+ | Access: (0755/ | ||
+ | Access: 2015-10-29 20: | ||
+ | Modify: 2015-10-29 20: | ||
+ | Change: 2015-10-29 20: | ||
+ | | ||
+ | </ | ||
+ | Il peut s'agir d'une mauvaise configuration du port. | ||
+ | [[: | ||
+ | < | ||
+ | ... | ||
+ | port = 5432 | ||
+ | ... | ||
+ | </ | ||
+ | Puis redémarrez le serveur PostgreSQL: | ||
+ | < | ||
+ | $ sudo service postgresql restart | ||
+ | </ | ||
+ | **Sinon**, si la réponse de '' | ||
+ | < | ||
+ | stat: cannot stat ‘/ | ||
+ | </ | ||
+ | Il faut construire le cluster PostgreSQL avant de pouvoir le démarrer. Affichez la version installée de psql avec la comande suivante : | ||
+ | < | ||
+ | psql --version | ||
+ | </ | ||
+ | Puis reportez les 2 premiers nombres du numéro de version dans la commande suivante : '' | ||
+ | < | ||
+ | sudo pg_createcluster 9.3 main | ||
+ | </ | ||
+ | Puis redémarrez le serveur PostgreSQL: | ||
+ | < | ||
+ | $ sudo service postgresql restart | ||
+ | </ | ||
+ | Vous pouvez maintenant reprendre le tutoriel au début de la section " | ||
+ | ==== encodage UTF-8 ==== | ||
+ | <note tips> Ce paragraphe est optionnel </ | ||
+ | FIXME En version PostgreSQL 9.1.5, l' | ||
+ | |||
+ | L' | ||
+ | |||
+ | Pour ceux qui souhaitent privilégier l' | ||
+ | |||
+ | === jeux de caractères par défaut === | ||
+ | * Connexion en tant qu' | ||
+ | |||
+ | sudo -i -u postgres | ||
+ | |||
+ | psql -l | ||
+ | List of databases | ||
+ | Name | Owner | Encoding | ||
+ | ----------+----------+-----------+---------+-------+----------------------- | ||
+ | postgres | ||
+ | template0 | postgres | SQL_ASCII | C | C | =c/ | ||
+ | | | | ||
+ | template1 | postgres | SQL_ASCII | C | C | =c/ | ||
+ | | | | ||
+ | |||
+ | === supprimer le cluster et le recréer === | ||
+ | |||
+ | * Identifier la version et le nom de votre cluster | ||
+ | |||
+ | pg_lsclusters | ||
+ | Version Cluster | ||
+ | 9.1 | ||
+ | |||
+ | * Supprimer le cluster | ||
+ | |||
+ | pg_dropcluster 9.1 main --stop | ||
+ | |||
+ | * Créer le cluster | ||
+ | |||
+ | pg_createcluster --locale fr_FR.UTF-8 9.1 main | ||
+ | |||
+ | * Démarrage | ||
+ | pg_ctlcluster 9.1 main start | ||
+ | |||
+ | Les bases systèmes seront alors conformes aux locales système | ||
+ | | ||
+ | psql -l | ||
+ | List of databases | ||
+ | Name | Owner | Encoding | | ||
+ | ----------+----------+----------+-------------+-------------+----------------------- | ||
+ | postgres | ||
+ | template0 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/ | ||
+ | | | | | ||
+ | template1 | postgres | UTF8 | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/ | ||
+ | | | | | ||
+ | |||
+ | |||
+ | |||
+ | ==== Créer un utilisateur PostgreSQL ==== | ||
+ | |||
+ | === Méthode rapide, non sécurisée (-> privilégier la méthode décrite dans le chapitre suivant)=== | ||
+ | |||
+ | '' | ||
+ | |||
+ | Par facilité, nous allons assimiler les utilisateurs du système à ceux qui se connecteront avec psql, mais ce n'est nullement obligatoire. Par la suite, nous supposerons que votre login système est '' | ||
+ | |||
+ | Commencez par créer un nouvel utilisateur, | ||
+ | < | ||
+ | postgres=# CREATE USER < | ||
+ | </ | ||
+ | N' | ||
+ | |||
+ | Par défaut, votre nouvel utilisateur n'a aucun droit. | ||
+ | Donnez-lui la possibilité de créer de nouvelles bases de données : | ||
+ | < | ||
+ | postgres=# ALTER ROLE < | ||
+ | </ | ||
+ | |||
+ | Ensuite, créez une base de données pour votre utilisateur. Par exemple, vous pouvez prendre comme nom : '' | ||
+ | |||
+ | <note tip> | ||
+ | si une base de données possède le même nom que l' | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | postgres=# CREATE DATABASE < | ||
+ | </ | ||
+ | |||
+ | Attribuer un mot de passe à l' | ||
+ | < | ||
+ | postgres=# ALTER USER < | ||
+ | </ | ||
+ | |||
+ | Vous pouvez maintenant quitter, " | ||
+ | < | ||
+ | postgres=# \q | ||
+ | postgres@ubuntu: | ||
+ | </ | ||
+ | |||
+ | La ligne de commande est devenue : | ||
+ | < | ||
+ | nom_base_de_donnee=> | ||
+ | </ | ||
+ | |||
+ | Notez la transformation du # en > : vous n' | ||
+ | |||
+ | |||
+ | ==== Pour aller plus loin ==== | ||
+ | |||
+ | === Méthode alternative pour créer un utilisateur === | ||
+ | |||
+ | Vous pouvez aussi créer vos utilisateurs directement en ligne de commande, depuis le terminal standard. Pour cela, vous allez d' | ||
+ | |||
+ | Cette méthode est beaucoup plus sûre que la précédente. | ||
+ | Tous les utilisateurs auront des mots de passe chiffrés. | ||
+ | (Ce qui n'est pas le cas lorsque l'on emploie la méthode précédente) | ||
+ | |||
+ | Il faut d' | ||
+ | < | ||
+ | sudo nano / | ||
+ | </ | ||
+ | |||
+ | Remplacez " | ||
+ | |||
+ | Les utilisateurs " | ||
+ | Voir la [[http:// | ||
+ | |||
+ | <note important> | ||
+ | Modifier le fichier en remplaçant **ident sameuser** par **md5** afin d' | ||
+ | |||
+ | < | ||
+ | ... | ||
+ | # Database administrative login by Unix domain socket | ||
+ | local | ||
+ | |||
+ | # TYPE DATABASE | ||
+ | |||
+ | # " | ||
+ | local | ||
+ | # IPv4 local connections: | ||
+ | host all | ||
+ | # IPv6 local connections: | ||
+ | host all | ||
+ | ... | ||
+ | </ | ||
+ | |||
+ | La modification des paramètres de connexion au serveur nécessite son redémarrage pour que ces derniers soient pris en compte. | ||
+ | |||
+ | < | ||
+ | $ sudo service postgresql restart | ||
+ | </ | ||
+ | ou | ||
+ | < | ||
+ | $ sudo pg_ctlcluster 9.5 main restart | ||
+ | </ | ||
+ | |||
+ | On peut ensuite créer notre utilisateur : | ||
+ | |||
+ | < | ||
+ | $ sudo -i -u postgres | ||
+ | $ createuser -P --interactive < | ||
+ | Enter password for new role: | ||
+ | Enter it again: | ||
+ | Shall the new role be a superuser? (y/n) n | ||
+ | Shall the new role be allowed to create databases? (y/n) y | ||
+ | Shall the new role be allowed to create more new roles? (y/n) y | ||
+ | </ | ||
+ | |||
+ | Puis, on lui crée une base de données dédiée : | ||
+ | < | ||
+ | $ createdb -O < | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | Si vous avez recréé le groupe de bases de de données (cluster) avec les locales UTF8, il ne sera pas nécessaire de préciser l' | ||
+ | |||
+ | L' | ||
+ | </ | ||
+ | |||
+ | |||
+ | Ensuite, on peut se connecter via : | ||
+ | < | ||
+ | $ psql -U < | ||
+ | Mot de passe pour l' | ||
+ | </ | ||
+ | |||
+ | ou, si le nom de la base de l' | ||
+ | < | ||
+ | $ psql -U < | ||
+ | Mot de passe pour l' | ||
+ | </ | ||
+ | |||
+ | === Commodités d' | ||
+ | Le fichier pg_hba.conf tel que défini ci-avant exige qu'un mot de passe soit fourni pour autoriser la connexion d'un rôle postgresql (dans notre cas < | ||
+ | |||
+ | == Les variables d' | ||
+ | Les [[http:// | ||
+ | Les plus intéressantes à utiliser son PGUSER et PGHOST (notamment pour cette dernière si vous administrez une base qui n'est pas sur un serveur // | ||
+ | |||
+ | Pour que ces variables soient systématiquement disponibles dans votre shell de commandes, il faut les ajouter dans le fichier ~/.profile correspondant à votre utilisateur. | ||
+ | Les lignes à ajouter sont (à vous de défionir les variables à ajouter): | ||
+ | export PGHOST=< | ||
+ | export PGUSER=< | ||
+ | ... | ||
+ | |||
+ | La variable PGUSER étant ainsi définie, votre connexion peut alors se résumer à | ||
+ | psql < | ||
+ | et si vous définissez PGDATABASE, votre connexion express sera simplement | ||
+ | psql | ||
+ | |||
+ | < | ||
+ | il faut toujours saisir le mot de passe correspondant à l' | ||
+ | </ | ||
+ | |||
+ | |||
+ | == Le fichier .pgpass == | ||
+ | |||
+ | Une autre manière, ou une manière complémentaire, | ||
+ | Ce fichier n' | ||
+ | nano ~/.pgpass | ||
+ | Son contenu est simplement défini par les chaînes de connexions à utiliser. | ||
+ | localhost: | ||
+ | Ceci indiquera à votre client psql que l' | ||
+ | Ce fichier étant défini, la saisie du mot de passe n'est plus effectuées par l' | ||
+ | |||
+ | Et la sécurité ? | ||
+ | si vous tentez une connexion | ||
+ | psql < | ||
+ | WARNING: password file "/ | ||
+ | La limitation des droits d' | ||
+ | chmod 0600 ~/.pgpass. | ||
+ | |||
+ | |||
+ | === Personnalisation === | ||
+ | Le tuning d'un serveur postgreSQL se fait grâce au fichier **postgresql.conf** généralement positionné dans **/ | ||
+ | |||
+ | Plusieurs paramètres sont faciles à modifier et peuvent apporter un gain de performance important: | ||
+ | * **shared_buffers** = peut être positionné à 25% de la RAM pour un serveur dédié. Attention de ne pas trop monter ce paramètre tout de même car il faut laisser de la RAM au noyau pour gérer son cache | ||
+ | * **wal_buffers** = il est raisonnable de la passer à 8MB | ||
+ | * **work_mem** = à ajuster en fonction du nombre de connexion à la base, valeur entre 10MB et 100MB | ||
+ | * **maintenance_work_mem** = mémoire allouée aux actions de maintenance. Dépend de la taille des bases et de la RAM dispo. Perso, je l'a met à 25% de la RAM | ||
+ | * **checkpoint_segments** = mettre au moins 10 | ||
+ | * **effective_cache_size** = pour un serveur dédié compter 2/3 de la RAM | ||
+ | |||
+ | Ces quelques paramètres doivent suffire dans la majorité des cas. Si vous souhaitez aller plus loin dans le tuning de PostgreSQL, je vous conseille d' | ||
+ | |||
+ | |||
+ | |||
+ | === Rôles et droits === | ||
+ | |||
+ | Cette notion a été effleurée car les utilisateurs dont il a été question dans les lignes ci-avant sont des rôles au sens de postgresql. | ||
+ | Les droits affectés à ces rôles permet une gestion fine des autorisations d' | ||
+ | |||
+ | La [[http:// | ||
+ | |||
+ | === Gestion des connexions === | ||
+ | |||
+ | Postgresql permet en amont des droits attribués aux rôles sur la base de données, une gestion des connexions. Celle ci est définie dans les fichiers de configuration /// | ||
+ | |||
+ | La documentation complète est disponible à ces adresses | ||
+ | |||
+ | // | ||
+ | |||
+ | // | ||
+ | |||
+ | |||
+ | === ajout de contributions === | ||
+ | Différentes contributions sont disponibles (cf la [[http:// | ||
+ | |||
+ | < | ||
+ | sudo apt-get install postgresql-contrib | ||
+ | Les paquets supplémentaires suivants seront installés : | ||
+ | libossp-uuid16 postgresql-contrib-9.1 | ||
+ | </ | ||
+ | |||
+ | Les scripts permettant l' | ||
+ | L' | ||
+ | < | ||
+ | $ psql -U < | ||
+ | </ | ||
+ | |||
+ | === Créer un utilisateur en lecture seul === | ||
+ | |||
+ | Pour ne permettre seulement une consultation des données par un utilisateur sans droit de modification, | ||
+ | < | ||
+ | ALTER USER < | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ===== Installation de la cartouche spatiale PostGIS ===== | ||
+ | ====Ce qu'est postgis==== | ||
+ | [[http:// | ||
+ | * la possibilité de définir le type de champ // | ||
+ | * l' | ||
+ | * la base de référence des projections géographiques // | ||
+ | * la base de gestion des attributs géographiques des tables // | ||
+ | ====Installation==== | ||
+ | Installer le paquet correspondant à votre version de postgres, exemples: | ||
+ | * [[apt:// | ||
+ | * [[apt:// | ||
+ | |||
+ | < | ||
+ | Les paquets supplémentaires suivants seront installés : | ||
+ | libgeos-3.2.2 libgeos-c1 libproj0 postgis proj-data | ||
+ | </ | ||
+ | |||
+ | Les scripts nécessaires à la capacitation géographique de postgresql sont installé dans le dossier\\ | ||
+ | // / | ||
+ | // / | ||
+ | |||
+ | ====Donner à une base la capacité géographique==== | ||
+ | |||
+ | |||
+ | < | ||
+ | Les scripts donnés ci-après prennent pour hypothèse qu'un nouvel utilisateur a été créé avec la méthode [[postgresql# | ||
+ | </ | ||
+ | |||
+ | Tout d' | ||
+ | createdb -U < | ||
+ | Puis on utilser le rôle postgres (super user postgresql) | ||
+ | $ sudo -i -u postgres | ||
+ | pour exécuter dans cet ordre les scripts suivants : | ||
+ | |||
+ | psql -f / | ||
+ | psql -f / | ||
+ | |||
+ | puis on quitte le shell postgres | ||
+ | exit | ||
+ | | ||
+ | <note tip> | ||
+ | Si vous êtes amenés à créer plusieurs bases géographiques, | ||
+ | Il est ensuite très facile de créer une base géographique en appelant ce modèle lors de la création d'un base | ||
+ | createdb -U < | ||
+ | </ | ||
+ | |||
+ | Pour faire des imports et des exports (car la fonction sur phppgadmin est bancale) : | ||
+ | |||
+ | $ sudo -i -u postgres | ||
+ | |||
+ | export : | ||
+ | pg_dump < | ||
+ | |||
+ | import: | ||
+ | cat nom_de_la_base.pgdump | psql -d nom_de_la_base | ||
+ | |||
+ | ===== Clients graphiques ===== | ||
+ | |||
+ | |||
+ | ==== Le client pgadmin4 ==== | ||
+ | Outils web graphique d' | ||
+ | <code bash> | ||
+ | sudo apt install postgresql-common | ||
+ | sudo sh / | ||
+ | sudo apt update | ||
+ | sudo apt install postgresql-11 pgadmin4 | ||
+ | </ | ||
+ | puis simplement lancer pgadmin4 via le lanceur qui a été ajouté ou en CLI | ||
+ | |||
+ | ==== Le client pgadmin3 ==== | ||
+ | |||
+ | PgAdmin III est un outil graphique d' | ||
+ | |||
+ | PgAdmin III a été conçu pour répondre aux besoins de tous les utilisateurs, | ||
+ | |||
+ | == Installation du client pgadmin3 == | ||
+ | |||
+ | On commence par [[: | ||
+ | < | ||
+ | |||
+ | Cela va également installer les paquets suivants : | ||
+ | * libpq4 | ||
+ | * libwxbase2.6-0 | ||
+ | * libwxgtk2.6-0 | ||
+ | * pgadmin3-data | ||
+ | |||
+ | ^ Installer en 1 clic ^ | ||
+ | | [[apt:// | ||
+ | |||
+ | |||
+ | == Lancement du client pgadmin3 == | ||
+ | |||
+ | Sous Ubuntu, pour lancer PgAdmin III, aller dans le menu **Applications** => **programmation** => **pgAdmin III** | ||
+ | < | ||
+ | |||
+ | En suivant la section ci-haut " | ||
+ | $ psql -d template1 -c "alter user < | ||
+ | </ | ||
+ | == Utilisation du client pgadmin3 via ssh == | ||
+ | |||
+ | La connexion à la base de donnée necessite la création d'un tunnel | ||
+ | < | ||
+ | |||
+ | Le port 5555 correspond au port de redirection sur le port local (vous pouvez en choisir un autre). Le port 5432 correspond au port d' | ||
+ | |||
+ | Cet exemple s' | ||
+ | |||
+ | Si vous avez modifié le port d' | ||
+ | < | ||
+ | |||
+ | Le serveur vous demandera votre mot de passe. Ouvrez maintenant pgadmin3 | ||
+ | |||
+ | < | ||
+ | Hôte : localhost | ||
+ | Port TCP : 5555 (selon l' | ||
+ | |||
+ | Vous devriez être maintenant connecté | ||
+ | |||
+ | ==== Le client phppgadmin ==== | ||
+ | |||
+ | === Installation du client phppgadmin === | ||
+ | |||
+ | Il suffit d' | ||
+ | |||
+ | ^ Le serveur Web php en un clic ^ | ||
+ | | [[apt:// | ||
+ | |{{ :apt.png |Installer en 1 clic.}}]] | | ||
+ | |||
+ | ^ phppgadmin en un clic^ | ||
+ | | [[apt:// | ||
+ | |||
+ | Réaliser ensuite les opérations suivantes : FIXME (sous [[bionic]], pas de fichier // | ||
+ | < | ||
+ | sudo ln -s / | ||
+ | sudo mv / | ||
+ | sudo a2enconf phppgadmin | ||
+ | sudo service apache2 restart | ||
+ | </ | ||
+ | |||
+ | === Lancement du client phppgadmin === | ||
+ | |||
+ | Lance votre navigateur Web préféré à l' | ||
+ | |||
+ | === Utilisation du client phppgadmin === | ||
+ | |||
+ | |||
+ | |||
+ | FIXME | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ====Connexions vers PHP==== | ||
+ | |||
+ | [[: | ||
+ | |||
+ | < | ||
+ | |||
+ | Activer ce module | ||
+ | < | ||
+ | Redémarrer apache2 | ||
+ | ====Pool de connexion : PgBouncer==== | ||
+ | [[pgbouncer|PgBouncer]] | ||
+ | ===== Récupération du contenu d'une base de données après un crash serveur ===== | ||
+ | |||
+ | Supposons que vous ayez installé sous [[ubuntu_server|ubuntu server]] une application d' | ||
+ | * Monter votre ancienne installation depuis une autre installation ou via un live cd | ||
+ | * [[chroot|chrooter ]]dessus | ||
+ | * changer d' | ||
+ | * démarrer la base de données | ||
+ | * effectuer un pg_dump pour sauvegarder la base de données. | ||
+ | Ceci fait, après avoir réinstallé votre application d' | ||
+ | |||
+ | === Montage et chroot sur votre ancienne installation depuis un live CD ou depuis le nouveau serveur === | ||
+ | < | ||
+ | sudo fdisk -l # pour vous aider à trouver la bonne partition | ||
+ | sudo mount /dev/sdYX /mnt # montage de celle-ci en remplaçant le Y par la lettre du volume, et le X par le bon numéro de partition | ||
+ | sudo mount --bind /dev / | ||
+ | sudo mount -t proc /proc /mnt/proc # Étape facultative? | ||
+ | sudo chroot /mnt # mise à la racine du disque monté | ||
+ | </ | ||
+ | |||
+ | === démarrage de la base de données, changement d' | ||
+ | Démarrez la base de données dans le chroot | ||
+ | < | ||
+ | service postgresql-8.4 start # démarre postgresql dans le chroot | ||
+ | </ | ||
+ | <note tip>Si vous avez effectué le chroot depuis une installation d' | ||
+ | Maintenant, connectez-vous en tant que postgres, et effectuez la sauvegarde. | ||
+ | < | ||
+ | sudo -i -u postgres | ||
+ | pg_dump -f / | ||
+ | </ | ||
+ | |||
+ | === Sortie du chroot en douceur === | ||
+ | Au cours de ces opérations, | ||
+ | < | ||
+ | exit # permet de cesser d'agir en tant qu' | ||
+ | service postgresql-8.4 stop # permet de stopper le serveur postgresql dans le chroot | ||
+ | exit # permet de quitter le chroot | ||
+ | sudo umount / | ||
+ | sudo umount / | ||
+ | sudo umount /mnt/ # démontage final de l' | ||
+ | </ | ||
+ | <note tip>Si vous avez sauvegardé votre base de données sur la partition du chroot (ce qui est déconseillé, | ||
+ | |||
+ | === Restaurer la sauvegarde sur la nouvelle installation === | ||
+ | La restauration de la sauvegarde est très simple : connectez-vous sur votre nouvelle installation, | ||
+ | |||
+ | < | ||
+ | sudo -i -u postgres | ||
+ | dropdb NOM_BDD | ||
+ | createdb --owner=NOM_APPLI --encoding=utf-8 NOM_BDD | ||
+ | psql -f / | ||
+ | </ | ||
+ | |||
+ | <note tip> | ||
+ | |||
+ | ===== Formations ===== | ||
+ | La société Dalibo mets ses support de cours à disposition ([[https:// | ||
+ | [[https:// | ||
+ | sous l' | ||
+ | exemple: lien directe au support PDF de la formation //DBA1 - PostgreSQL Administration// | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | // |