Vous n'êtes pas identifié(e).
Pages : 1
Bonjour,
j'ai créé une instance PostgreSQL v15 et j'ai un petit souci.
Je voulais désactiver la génération de WALs pour un besoin spécifique, donc j'ai configuré le postgresql.conf ainsi :
archive_mode=off
wal_level
max_wal_senders=0
puis redémarré l'instance.
Ensuite, j'ai créé une petite table et inséré plusieurs millions de ligne dans la table :
postgres=# create table T1 (c1 integer not null, c2 varchar(30));
CREATE TABLE
postgres=# insert into T1 (c1) SELECT * FROM generate_series(1, 1000000) as id;
INSERT 0 1000000
postgres=# insert into T1 (c1) SELECT * FROM generate_series(1000001, 10000000) as id;
INSERT 0 9000000
Mais je me rends compte que PostgreSQL génère plein de fichiers WALs dans le sous-répertoire pg_wal
SERVEUR1 postgres</test/log>ls -ltr ../pg_wal/
total 589828
drwx------. 2 postgres postgres 4096 Nov 30 15:44 archive_status
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000005
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000006
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000007
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000008
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000009
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000000A
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000000B
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000000C
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000000D
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000000E
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000000F
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000010
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000011
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000012
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000013
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000014
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000015
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000016
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000017
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000018
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000019
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000001A
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000001B
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000001C
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000001D
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000001E
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 00000001000000000000001F
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000020
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000021
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000022
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000023
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000024
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000025
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000026
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000027
-rw-------. 1 postgres postgres 16777216 Nov 30 15:52 000000010000000000000028
Est-ce qu'il y a une manip / config à faire pour qu'il ne me génère pas tous ces fichiers svp ?
Merci d'avance pour votre retour.
Cordialement,
Hors ligne
Bonjour,
vous ne pourrez jamais empêcher la génération des fichiers WAL car ce sont des éléments vitaux pour le fonctionnement de postgresql.
On ne va pas faire un cours ici mais pour faire vite : il ne faut jamais rien toucher du contenu du répertoire des wal sinon vous risquez de perdre définitivement votre instance et vos données.
https://docs.postgresql.fr/16/wal-intro.html
Cordialement,
Sébastien.
Hors ligne
OK merci pour la réponse.
Mais dans ce cas, quel est l'intérêt de positionner les paramètres "wal_level=minimal" et "archive_mode=off" si PpostgreSQL génère autant de fichiers WALs qu'avec "archive_mode=on" et "wal_level=replica" ?
J'aimerai juste comprendre cette différence.
Il me semblait qu'avec "wal_level=off", il ne générait qu'un minimum de fichiers WALs.
Hors, cela ne semble pas être le cas dans mon exemple ...
Merci d'avance.
Cdlt,
Hors ligne
wal_level permet d'ajouter plus ou moins d'information dans les wal et cela permet (selon le niveau choisi) de faire de la replication physique, logique, etc...
Si vous mettez wal_level à minimal vous aurez moins d'informations dans les wal donc au final moins de wal au total pour une même période de temps qu'avec wal_level à logical.
archive_mode permet d'activer ou de désactiver l'archivage des wal à des fins de restauration PITR, c'est dire que selon la quantité de wal que vous archivé vous pourrez revenir jusqu'à un point dans le temps plus ou moins éloigné.
Dernière modification par ruizsebastien (30/11/2023 18:46:53)
Cordialement,
Sébastien.
Hors ligne
OK, merci beaucoup.
Cdlt,
Hors ligne
En fait ça tombe plutôt bien, on est en plein dans un des cas que wal_level=minimal permet d'optimiser. Si vous mettez le CREATE TABLE et les deux inserts dans la même transaction, là vous ne générerez pas de WAL avec wal_level=minimal. Parce que simplement vérifier que la table est écrite sur le disque à la fin de la transaction (un sync des fichiers qui la composent) suffit (si PG crashait entre temps, il suffirait d'effacer ces fichiers au redémarrage).
Mais en vrai, il y a peu de cas où on gagne vraiment avec minimal. Il faut vraiment connaître ces quelques cas particuliers pour en profiter
Dernière modification par Marc Cousin (30/11/2023 19:12:58)
Marc.
Hors ligne
Pages : 1