Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
postgresql [Le 05/03/2024, 11:27] – [Guide de survie pour le client psql] lister les schémas bcag2postgresql [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>sgbd serveur réseau BROUILLON}}+{{tag>sgbd serveur réseau programmation}}
  
 ---- ----
Ligne 121: Ligne 121:
 ^ \c nom_base nom_utilisateur | connecte à la base <nom_base> avec le rôle <nom_utilisateur>| ^ \c nom_base nom_utilisateur | connecte à la base <nom_base> avec le rôle <nom_utilisateur>|
 ^ \lt | liste les tables de la base courante| ^ \lt | liste les tables de la base courante|
-^ set search_path to <mon_schéma>; | intéressant à faire avant la commande ci-dessous !-)| +^ set search_path to mon_schema1, mon_schema2; | intéressant à faire avant la commande ci-dessous !-)| 
-^ \d | liste les tables du schéma courant|+^ \d | liste les tables du ou des schéma·s courant·s|
 ^ \d nom_table_ou_vue | description de la table <nom_table> (colonne, type…) ou de la vue nom_vue| ^ \d nom_table_ou_vue | description de la table <nom_table> (colonne, type…) ou de la vue nom_vue|
 ^ \d+ nom_table_ou_vue | description complète (avec commentaires!) de la table <nom_table> (colonne, type…) ou de la vue nom_vue avec son code source| ^ \d+ nom_table_ou_vue | description complète (avec commentaires!) de la table <nom_table> (colonne, type…) ou de la vue nom_vue avec son code source|
Ligne 166: Ligne 166:
 REVOKE ALL ON SCHEMA mon_schema FROM mon_role; REVOKE ALL ON SCHEMA mon_schema FROM mon_role;
 </code> </code>
 +
 +Lister les clés étrangères de la table //matable// dans //monschema// :
 +<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 = 'FOREIGN KEY'
 +    AND tc.table_schema='monschema'
 +    AND tc.table_name='matable';
 +</code>
 +
 +Lister les dates de création des bases de données :
 +<code sql>
 +SELECT (pg_stat_file('base/'||oid ||'/PG_VERSION')).modification, datname FROM pg_database;
 +-- Source - https://stackoverflow.com/a/30308875
 +</code>
 +
 ====Supprimer l'utilisateur Postgres du greeter sous xubuntu 14.04.1==== ====Supprimer l'utilisateur Postgres du greeter sous xubuntu 14.04.1====
 La suppression de l'utilisateur postgres dans le cas d'un greeter lightdm-webkit-greeter.\\ La suppression de l'utilisateur postgres dans le cas d'un greeter lightdm-webkit-greeter.\\
Ligne 232: Ligne 260:
 Vous pouvez maintenant reprendre le tutoriel au début de la section "L'utilisateur postgres". Vous pouvez maintenant reprendre le tutoriel au début de la section "L'utilisateur postgres".
 ==== encodage UTF-8  ==== ==== encodage UTF-8  ====
-<note tips> Ce paragraphe est optionnel </note> +Postgresql se base sur la configuration du système d'exploitation… qui est en UTF-8 par défaut sous les versions francophone d'Ubuntu.
-FIXME En version PostgreSQL 9.1.5, l'installateur semble avoir directement créé avec le bon codage. Cette opération semble donc être devenue inutile. +
- +
-L'installateur initialise le cluster postgresql avec le support de jeux de caractères SQL_ASCII +
- +
-Pour ceux qui souhaitent privilégier l'encodage **UTF-8** / locale **FR-fr**, il faut supprimer le cluster et le recréer. +
- +
-=== jeux de caractères par défaut === +
-  * Connexion en tant qu'utilisateur postgres +
- +
-  sudo -i -u postgres +
- +
-  psql -l +
-                             List of databases +
-    Name    |  Owner   | Encoding  | Collate | Ctype |   Access privileges    +
-  ----------+----------+-----------+---------+-------+----------------------- +
-  postgres  | postgres | SQL_ASCII | C       | C     |  +
-  template0 | postgres | SQL_ASCII | C       | C     | =c/postgres          + +
-            |          |                         | postgres=CTc/postgres +
-  template1 | postgres | SQL_ASCII | C       | C     | =c/postgres          + +
-            |          |                         | postgres=CTc/postgres +
- +
-=== supprimer le cluster et le recréer === +
- +
-  * Identifier la version et le nom de votre cluster +
-<code> +
-$ pg_lsclusters  +
-  Version Cluster   Port Status Owner    Data directory                     Log file +
-  9.1     main      5432 online postgres /var/lib/postgresql/9.1/main       /var/log/postgresql/postgresql-9.1-main.log +
-</code> +
-  * 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 +
-<code> +
-$ psql -l +
-                                  List of databases +
-    Name    |  Owner   | Encoding |   Collate      Ctype    |   Access privileges    +
-  ----------+----------+----------+-------------+-------------+----------------------- +
-  postgres  | postgres | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8 |  +
-  template0 | postgres | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres          + +
-            |          |          |                         | postgres=CTc/postgres +
-  template1 | postgres | UTF8     | fr_FR.UTF-8 | fr_FR.UTF-8 | =c/postgres          + +
-            |          |          |                         | postgres=CTc/postgres +
-</code> +
  
 ==== Créer un utilisateur PostgreSQL ==== ==== Créer un utilisateur PostgreSQL ====
Ligne 638: Ligne 612:
 ====Pool de connexion : PgBouncer==== ====Pool de connexion : PgBouncer====
 [[pgbouncer|PgBouncer]] [[pgbouncer|PgBouncer]]
-===== Récupération du contenu d'une base de données après un crash serveur =====+===== Sauvegarde et Restauration ===== 
 +Il est conseillé de lire le support de [[#formations|formation]] //PostgreSQL Administration (DBA1)// qui contient les chapitres //Politique de sauvegarde// et //Sauvegarde et restauration//\\ 
 +On pourra lire aussi [[https://cyber.gouv.fr/sites/default/files/document/anssi-fondamentaux-sauvegarde_systemes_dinformation_v1-0.pdf|SAUVEGARDE DES SYSTÈMES D’INFORMATION − LES FONDAMENTAUX]] de l’ANSII 
 + 
 +==== PgDump ==== 
 +Cette commande dispose de nombreuses options, cf. [[https://www.postgresql.org/docs/current/app-pgdump.html|la doc officielle sur pg_dump]] pour plus de détails.\\ 
 +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 ~/dump-de-mon-schema.sql 
 +# et de façon similaire, que les données 
 +pg_dump ma_base --data-only --schema mon_schema -f ~/dump-de-mes-data.sql 
 +# et pour ne sauver qu'une table : 
 +pg_dump ma_base --table ma_table --schema mon_schema -f ~/dump-de-ma-table.sql 
 +</code> 
 +==== pgBackRest ==== 
 +Le site officiel [[https://pgbackrest.org|pgBackRest]] et [[https://ng-pe.github.io/pgbackrest_doc_fr/user-guide.html|le guide utilisateur traduit]]  
 + 
 +=== Installation === 
 +Simplement  
 +<code bash> 
 +sudo apt install pgbackrest 
 +</code>
  
 +==== 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'entreprise s'appuyant sur une base de données postgresql (cette procédure a été testée avec [[redmine|redmine]]), et qu'un crash se produise qui rende impossible de redémarrer le serveur. Se pose alors le problème de la récupération des données. La procédure est relativement simple. Il va vous falloir: Supposons que vous ayez installé sous [[ubuntu_server|ubuntu server]] une application d'entreprise s'appuyant sur une base de données postgresql (cette procédure a été testée avec [[redmine|redmine]]), et qu'un crash se produise qui rende impossible de redémarrer le serveur. Se pose alors le problème de la récupération des données. La procédure est relativement simple. Il va vous falloir:
   * Monter votre ancienne installation depuis une autre installation ou via un live cd   * Monter votre ancienne installation depuis une autre installation ou via un live cd
Ligne 701: Ligne 700:
 ===== Voir aussi ===== ===== Voir aussi =====
   * [[https://www.pgmodeler.io|PgModeler]] qui permet de définir le modèle et générer les scripts de mise à jour de la base postgresql, installable depuis les dépôts <code bash>sudo apt install pgmodeler</code>   * [[https://www.pgmodeler.io|PgModeler]] qui permet de définir le modèle et générer les scripts de mise à jour de la base postgresql, installable depuis les dépôts <code bash>sudo apt install pgmodeler</code>
 +  * (en) [[https://labs.dalibo.com/temboard|temboard]] outils de supervision et configuration d'instances Postgresql
  
 ---- ----
  
 //Contributeurs : [[utilisateurs:yannick_LM|Yannick]], [[utilisateurs:sparky|Sparky]], [[utilisateurs:elemmire|Elemmire]], [[utilisateurs:aldian|Aldian]], [[utilisateurs:fred|Fred]], [[utilisateurs:xavierjm|XAVIER_jean-marie]], [[utilisateurs:bcag2|bcag2]] // //Contributeurs : [[utilisateurs:yannick_LM|Yannick]], [[utilisateurs:sparky|Sparky]], [[utilisateurs:elemmire|Elemmire]], [[utilisateurs:aldian|Aldian]], [[utilisateurs:fred|Fred]], [[utilisateurs:xavierjm|XAVIER_jean-marie]], [[utilisateurs:bcag2|bcag2]] //