Table des matières

PostgreSQL

Dump & restauration

pg_dump ne bloque pas les tables pendant la sauvegarde. La base peut donc continuer à être utilisée en lecture et écriture pendant le dump

Source : https://www.postgresql.org/docs/15/app-pgdump.html

Divers

Il est possible de se connecter directement à PostgreSQL en configurant un fichier .pgpass dans le home d'un user Unix. Le fichier doit avoir un niveau de permission 0600 et être à ce format :

hostname:port:database:username:password

# Exemple pour un accès à toutes les bases en local
localhost:5432:*:postgres:mypassword

Lister les bases :

\l;

Afficher la structure d'une table :

\d matable;

Afficher la taille d'une table :

SELECT pg_size_pretty (pg_relation_size('matable'));

Afficher l'historique des requêtes :

\s;

Reset le mot de passe du user postgres:

vim /etc/postgresql/XX/main/pg_hba.conf
# Remplacer la méthode md5 par trust pour le user postgres
systemctl restart postgresql
psql -U postgres
# Dans PostgreSQL
ALTER USER postgres with PASSWORD 'monmdp';

Mise à jour

Sur une VM

La mise à jour vers une nouvelle version majeure PostgreSQL implique d'installer les paquets de la nouvelle version, puis de mettre à jour les clusters.

Exemple avec une migration de PostgreSQL 11 à PostgreSQL 13 :

systemctl stop postgresql
# Installation des paquets postgresql-11 postgresql-client-11 (directement ou via apt-get upgrade)
pg_dropcluster --stop 13 main
pg_lsclusters # Permet de lister les clusters présents et voir leur état
pg_upgradecluster 11 main
pg_dropcluster 11 main
apt-get purge postgresql-11 postgresql-client-11

Sous Docker

Grandes étapes :

Détail de la procédure : https://openqa-bites.github.io/posts/2023/2023-11-23-upgrade_a_postgresql_container_to_a_new_major_version/

Process

Lister les requêtes en cours :

SELECT * FROM pg_stat_activity;

Tuer une requete :

SELECT pg_cancel_backend(<pid OF the process>);
OU
SELECT pg_terminate_backend(<pid OF the process>);

Sources et compléments

https://www.postgresqltutorial.com/