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 26/03/2021, 08:46] – [L'utilisateur postgres] version ! bcag2 | postgresql [Le 04/05/2026, 13:43] (Version actuelle) – [Guide de survie pour le client psql] liste les dates de création des bases de données bcag2 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | {{tag> | ||
| + | ---- | ||
| + | |||
| + | ====== PostgreSQL ====== | ||
| + | |||
| + | ===== Introduction ===== | ||
| + | [[wpfr> | ||
| + | |||
| + | |||
| + | 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' | ||
| + | |||
| + | ==== Désinstallation ==== | ||
| + | Si vous souhaitez désinstaller, | ||
| + | <code bash> | ||
| + | # arrêtez le service s'il est lancé | ||
| + | sudo systemctl stop postgresql | ||
| + | # lister les paquets installés liés à postgres : | ||
| + | dpkg -l | grep postgres | ||
| + | # et les supprimer : | ||
| + | sudo apt --purge remove postgresql-* | ||
| + | </ | ||
| + | |||
| + | ===== Configuration ===== | ||
| + | ==== 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 (13.1-1) | ||
| + | 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) | ||
| + | |||
| + | ==== Guide de survie pour le client psql ==== | ||
| + | ^ \h | pour l' | ||
| + | ^ \? | pour l' | ||
| + | ^ \g | ou point-virgule en fin d' | ||
| + | ^ \q | pour quitter| | ||
| + | ^ \l | liste les bases de données existantes| | ||
| + | ^ \du | liste les rôles (utilisateur ou groupe)| | ||
| + | ^ \c nom_base nom_utilisateur | connecte à la base < | ||
| + | ^ \lt | liste les tables de la base courante| | ||
| + | ^ set search_path to mon_schema1, | ||
| + | ^ \d | liste les tables du ou des schéma·s courant·s| | ||
| + | ^ \d nom_table_ou_vue | description de la table < | ||
| + | ^ \d+ nom_table_ou_vue | description complète (avec commentaires!) de la table < | ||
| + | ^ \sv nom_vue | à la différence de \d+, n' | ||
| + | ^ \dn | liste tout le schéma de la base courante| | ||
| + | ^ \h ALTER TABLE | affiche l'aide pour la commande ALTER TABLE| | ||
| + | |||
| + | Pour lister les schémas : | ||
| + | <code sql> | ||
| + | select *from pg_namespace; | ||
| + | </ | ||
| + | |||
| + | Pour lister les tables d'un schéma : | ||
| + | <code sql> | ||
| + | select t.table_name | ||
| + | from information_schema.tables t | ||
| + | where t.table_schema = ' | ||
| + | and t.table_type = 'BASE TABLE' | ||
| + | order by t.table_name; | ||
| + | </ | ||
| + | |||
| + | Lister les vues : | ||
| + | <code sql> | ||
| + | select schemaname, viewname from pg_catalog.pg_views where schemaname NOT IN (' | ||
| + | </ | ||
| + | |||
| + | Lister les fonctions d'un schéma (**monSchema** dans l' | ||
| + | <code sql> | ||
| + | SELECT routines.routine_name, | ||
| + | FROM information_schema.routines | ||
| + | LEFT JOIN information_schema.parameters ON routines.specific_name=parameters.specific_name | ||
| + | WHERE routines.specific_schema=' | ||
| + | ORDER BY routines.routine_name, | ||
| + | </ | ||
| + | |||
| + | Lister les droits (//\du// est très limité !) : | ||
| + | < | ||
| + | select grantee, table_catalog, | ||
| + | </ | ||
| + | |||
| + | et si besoin : | ||
| + | <code sql> | ||
| + | REVOKE ALL ON SCHEMA mon_schema FROM mon_role; | ||
| + | </ | ||
| + | |||
| + | Lister les clés étrangères de la table //matable// dans // | ||
| + | <code sql> | ||
| + | SELECT | ||
| + | tc.table_schema, | ||
| + | tc.constraint_name, | ||
| + | tc.table_name, | ||
| + | kcu.column_name, | ||
| + | ccu.table_schema AS foreign_table_schema, | ||
| + | ccu.table_name AS foreign_table_name, | ||
| + | ccu.column_name AS foreign_column_name | ||
| + | FROM information_schema.table_constraints AS tc | ||
| + | JOIN information_schema.key_column_usage AS kcu | ||
| + | ON tc.constraint_name = kcu.constraint_name | ||
| + | AND tc.table_schema = kcu.table_schema | ||
| + | JOIN information_schema.constraint_column_usage AS ccu | ||
| + | ON ccu.constraint_name = tc.constraint_name | ||
| + | WHERE tc.constraint_type = ' | ||
| + | AND tc.table_schema=' | ||
| + | AND tc.table_name=' | ||
| + | </ | ||
| + | |||
| + | Lister les dates de création des bases de données : | ||
| + | <code sql> | ||
| + | SELECT (pg_stat_file(' | ||
| + | -- Source - https:// | ||
| + | </ | ||
| + | |||
| + | ====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 ==== | ||
| + | Postgresql se base sur la configuration du système d' | ||
| + | |||
| + | ==== 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 ROLE < | ||
| + | </ | ||
| + | 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 ROLE < | ||
| + | </ | ||
| + | |||
| + | 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' | ||
| + | |||
| + | <note tip>Il peut être plus simple pour commencer d' | ||
| + | |||
| + | ==== 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' | ||
| + | <code bash> | ||
| + | sudo nano / | ||
| + | </ | ||
| + | |||
| + | Remplacez " | ||
| + | |||
| + | Les utilisateurs " | ||
| + | Voir la [[https:// | ||
| + | |||
| + | <note important> | ||
| + | Modifier le fichier en remplaçant **ident sameuser** par **md5** afin d' | ||
| + | |||
| + | <code bash> | ||
| + | ... | ||
| + | # 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. | ||
| + | |||
| + | <code bash> | ||
| + | $ sudo service postgresql restart | ||
| + | </ | ||
| + | ou | ||
| + | <code bash> | ||
| + | $ sudo pg_ctlcluster 9.5 main restart | ||
| + | </ | ||
| + | |||
| + | On peut ensuite créer notre utilisateur : | ||
| + | |||
| + | <code bash> | ||
| + | $ 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 : | ||
| + | <code bash> | ||
| + | $ 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 : | ||
| + | <code bash> | ||
| + | $ psql -U < | ||
| + | Mot de passe pour l’utilisateur < | ||
| + | </ | ||
| + | |||
| + | ou, si le nom de la base de l' | ||
| + | <code bash> | ||
| + | $ psql -U < | ||
| + | Mot de passe pour l’utilisateur < | ||
| + | </ | ||
| + | |||
| + | === 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éfinir les variables à ajouter): | ||
| + | <code bash> | ||
| + | export PGHOST=< | ||
| + | export PGUSER=< | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | La variable //PGUSER// étant ainsi définie, votre connexion peut alors se résumer à | ||
| + | <code bash> | ||
| + | psql < | ||
| + | </ | ||
| + | et si vous définissez PGDATABASE, votre connexion express sera simplement | ||
| + | <code bash> | ||
| + | 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 | ||
| + | <code bash> | ||
| + | psql < | ||
| + | |||
| + | WARNING: password file "/ | ||
| + | </ | ||
| + | La limitation des droits d' | ||
| + | <code bash> | ||
| + | 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 [[https:// | ||
| + | |||
| + | === 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:// | ||
| + | |||
| + | <code bash> | ||
| + | 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' | ||
| + | <code bash> | ||
| + | $ 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, | ||
| + | <code sql> | ||
| + | ALTER USER < | ||
| + | </ | ||
| + | |||
| + | ===== Installation de la cartouche spatiale PostGIS ===== | ||
| + | Reportez-vous à la page [[: | ||
| + | |||
| + | ===== Clients graphiques ===== | ||
| + | |||
| + | ==== DBeaver ==== | ||
| + | Si vous utilisez d' | ||
| + | |||
| + | |||
| + | ==== 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]] | ||
| + | ===== Sauvegarde et Restauration ===== | ||
| + | Il est conseillé de lire le support de [[# | ||
| + | On pourra lire aussi [[https:// | ||
| + | |||
| + | ==== PgDump ==== | ||
| + | Cette commande dispose de nombreuses options, cf. [[https:// | ||
| + | Quelques exemples classiques : | ||
| + | <code bash> | ||
| + | # une sauvegarde simple va se faire par : | ||
| + | pg_dump -f dump-de-ma-base.sql ma_base | ||
| + | # si on ne veut que le schéma (le schéma par défaut est le schéma nommé public) : | ||
| + | pg_dump ma_base --schema-only --schema mon_schema -f ~/ | ||
| + | # et de façon similaire, que les données : | ||
| + | pg_dump ma_base --data-only --schema mon_schema -f ~/ | ||
| + | # et pour ne sauver qu'une table : | ||
| + | pg_dump ma_base --table ma_table --schema mon_schema -f ~/ | ||
| + | </ | ||
| + | ==== pgBackRest ==== | ||
| + | Le site officiel [[https:// | ||
| + | |||
| + | === Installation === | ||
| + | Simplement | ||
| + | <code bash> | ||
| + | sudo apt install pgbackrest | ||
| + | </ | ||
| + | |||
| + | ==== 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// | ||
| + | |||
| + | ===== Voir aussi ===== | ||
| + | * [[https:// | ||
| + | * (en) [[https:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | // | ||
