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 13/01/2017, 17:16] – [Mise à jour Postgres EntrepriseDB avec conservation des Bases de Données] 194.199.143.45 | 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// | ||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | // | ||
