Outils du site

Dans un régime fasciste, on n'apprend pas \"je suis, tu es\" mais \"je hais, tu suis\". [Marc Escayrol]

60-database:postgresql

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
60-database:postgresql [2019/03/21 00:16] – [Analyse des requêtes] Roge60-database:postgresql [2020/10/09 18:36] (Version actuelle) – [Changement de version de l'instance cible] Roge
Ligne 1: Ligne 1:
 +
 +
 ====== PostgreSQL ====== ====== PostgreSQL ======
 +
 +{{tag>PostgreSQL BD DB}}
  
 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04 https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-18-04
Ligne 73: Ligne 77:
 </code> </code>
  
-===== Gestion du cluster ===== 
  
 +===== Backup - Restore =====
  
-<code bash> 
-# Afficher le cluster 
-$ 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 
  
-# Supprimer le cluster 
-$ pg_dropcluster 9.1 main --stop 
  
-# Créer le cluster +==== Changement de version de l'instance cible ====
-$ pg_createcluster --locale fr_FR.UTF-8 9.1 main+
  
-Démarrage +<code bash> 
-$ pg_ctlcluster 9.1 main start+backup database with no format specification (default is SQL) 
 +pg_dump -v -O -U <user> -d <database> -f <file dump.sql>
  
 +# Restore with psql
 +psql -vc -h <host> -U <user> -d <database> -f <file dump.sql>
 </code> </code>
  
- +==== Meme version de l'instance cible ====
-===== Backup - Restore ===== +
- +
  
 <code bash> <code bash>
- 
 # backup database # backup database
-pg_dump -v -U <user> -d <database> -f <file dump>+pg_dump -v -O -Fc -U <user> -d <database> -f <file dump>
  
 # Restore with: # Restore with:
Ligne 109: Ligne 104:
  
 pg_restore -vc -U <user> -d <database> -1 <file dump> pg_restore -vc -U <user> -d <database> -1 <file dump>
 +</code>
  
 +Lister le contenu d'un dump:
  
 +<code bash>
 +pg_restore -l mydatabase.backup
 </code> </code>
  
Ligne 138: Ligne 137:
 </code> </code>
  
 +===== Tablespace =====
 +
 +<code bash>
 +mkdir <Tablespace-Path>
 +chown postgres:postgres <Tablespace-Path>
 +
 +
 +CREATE TABLESPACE <tableSpacename> OWNER <owner> LOCATION '<Tablespace-Path>';
 +
 +</code>
 ===== schema ===== ===== schema =====
  
Ligne 144: Ligne 153:
 //"Les schémas sont comparables aux répertoires au niveau du système d'exploitation. sauf que les schémas ne peuvent pas être imbriqués."// //"Les schémas sont comparables aux répertoires au niveau du système d'exploitation. sauf que les schémas ne peuvent pas être imbriqués."//
  
-<code bash>+<code>
 CREATE SCHEMA mon_schema; CREATE SCHEMA mon_schema;
 # supprimer un schéma vide # supprimer un schéma vide
Ligne 157: Ligne 166:
  
  
- 
-===== Optimisation ===== 
- 
- 
-//" il est recommandé de fortement augmenter les paramètres **shared_buffers** et **work_mem** qui indiquent la quantité de mémoire maximale à utiliser pour un certain nombre d'opérations. L'utilitaire **pg_tune** peut être utilisé pour obtenir des indications sur les valeurs à utiliser, suivant la configuration matérielle (même si les valeurs exactes dépendent de l'utilisation qui est faite de la base)."// http://blog.pilotsystems.net/2011/aout/cas-pratique-doptimisation-de-postgresql 
- 
-===== Vacuum et analyse ===== 
- 
-//"We recommend that active production databases be vacuumed frequently (at least nightly), in order to remove dead rows. After adding or deleting a large number of rows, it might be a good idea to issue a VACUUM ANALYZE command for the affected table. This will update the system catalogs with the results of all recent changes, and allow the PostgreSQL query planner to make better choices in planning queries."// https://www.postgresql.org/docs/9.5/sql-vacuum.html 
- 
-''vacuum analyse verbose;'' 
  
 ===== Analyse des requêtes ===== ===== Analyse des requêtes =====
Ligne 185: Ligne 183:
 CREATE EXTENSION pg_stat_statements; CREATE EXTENSION pg_stat_statements;
 </code> </code>
 +
 +Pour logger les requêtes qui durent plus de n milliseconds :
 +<code bash>
 +ALTER DATABASE "ma-bd" SET log_min_duration_statement = 10;
 +</code>
 +
 +
 +Pour logger les requêtes il faut modifier le fichier de configuration **postgresql.conf** et ajouter à la fin:
 +
 +<code bash>
 +# - Where to Log -
 +
 +log_destination = 'csvlog'              # Valid values are combinations of
 +                                        # stderr, csvlog, syslog, and eventlog,
 +                                        # depending on platform.  csvlog
 +                                        # requires logging_collector to be on.
 +
 +# This is used when logging to stderr:
 +logging_collector = on          # Enable capturing of stderr and csvlog
 +                                        # into log files. Required to be on for
 +                                        # csvlogs.
 +                                        # (change requires restart)
 +
 +# These are only used if logging_collector is on:
 +log_directory = '/var/log/postgresql/'                # directory where log files are written,
 +                                        # can be absolute or relative to PGDATA
 +log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' # log file name pattern,
 +                                        # can include strftime() escapes
 +
 +</code>
 +
 +===== Connaître la configuration de Postgres ===== 
 +
 +<code bash>
 +select * from pg_settings;
 +</code>
 +
  
 ===== Voir plus loin ===== ===== Voir plus loin =====
Dernière modification : 2019/03/21 00:16