PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 Site PostgreSQL.fr » postgres - partitionnement » 04/03/2024 08:50:56

albourg
Réponses : 1

Bonjour,

j'aimerais utiliser le partitionnement de manière à mettre dans certaines partitions des données qui ne seront plus jamais modifiées (données qui sont volumineuses), mais qui doiivent rester accessibles en ligne.
Le but serait de
* marquer ces partitions "readonly",
* backuper ces partitions une seule fois,
* exclure ces partitions du backup hebdomadaire ou mensuel pris avec pg_base_backup.

En cas de récupération d'un backup, les partitions seraient reprises indépendamment du backup.

Oracle permet de faire cela mais je n'ai pas vu d'options postgres permettant de le faire, tout au plus j'ai vu la possibilité de placer les partitions dans un répertoire (tablespace) séparé.
Est-ce possible ou prévu dans la version suivante? Je n'ai pas trouvé non plus où "voter" pour des fonctionnalités dans les versions futures.

Merci

#2 Installation » upgrade postgres en docker » 06/02/2024 18:39:29

albourg
Réponses : 2

Bonjour,

j'ai une db volumineuse (5Tb). Les sysadmins voudraient tout passer en docker.
Le souci est que si je veux faire un in-place upgrade (car la db est grosse), je dois spécifier les anciens binaires:https://www.postgresql.org/docs/16/pgupgrade.html .

Est-il possible de créer un même docker qui contienne deux versions différentes de postgres?

Merci.

#3 Installation » postgres 10 sous red hat 9 » 31/01/2024 16:31:51

albourg
Réponses : 2

Bonjour,
j'ai une db de plusieurs Tb tournant sous postgres 10.x sous linux 7.

J'aimerais tester une migration de la manière suivante:

  • créer une vm linux 9

  • installer pg 10 et pg 16 sur la nouvelle vm

  • créer un standby sous pg10

  • tester l'upgrade vers pg16

Souci: pg10 n'est apparemment plus dans les repos pg 9. Y a-t'il moyen de l'ajouter? Ou dois-je passer par RH8 puis RH 9 sad?

#4 Réplication » Switchover sans perte de données » 16/01/2024 13:23:02

albourg
Réponses : 9

Bonjour,

J'ai mis en place une réplication (hot standby, réplication physique, pas logique) entre deux bâtiments distincts.

* est-il possible de faire en sorte que le primaire stoppe si le standby est déconnecté?
* la solution "préconisée" pour faire un switchover est de couper le primaire puis faire un "promote" sur le standby. En coupant le primaire, ne risque-t'on pas d'arrêter la réplication en cours et donc de créer un gap entre le primaire et le standby?
* Y a-t'il un script à tourner sur le primaire , au cas où ils ne serait plus connecté, de mettre quelque part les wal non reçus par le standby (wals qui seraient envoyés manuellement)?
* quand on coupe le primaire, s'assure-t'il de transmettre jusqu'au dernier wal vers le standby avant de s'arrêter?


Le but étant de diminuer le risque de perte de données en cas de basculement contrôlé.

Merci des réponses et conseils.

#5 Re : Général » souci restore postgres 13 » 17/05/2023 22:03:21

j'ai recommencé la manoeuvre.
1. restore data
2. adaptation postgresql.conf sur la cible:

archive_mode = off  
wal_level = minimal
restore_command = 'cp /var/lib/pgsql/13/wal/%f %p' 

delete standby.signal, création d'un fichier recovery.signal dans la datadir.
systemctl start postgresql-13
log:

2023-05-17 18:44:05.923 -01 [29950] LOG:  starting PostgreSQL 13.11 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44), 64-bit
2023-05-17 18:44:05.925 -01 [29950] LOG:  listening on IPv4 address "0.0.0.0", port 5432
2023-05-17 18:44:05.925 -01 [29950] LOG:  listening on IPv6 address "::", port 5432
2023-05-17 18:44:05.928 -01 [29950] LOG:  listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432"
2023-05-17 18:44:05.933 -01 [29950] LOG:  listening on Unix socket "/tmp/.s.PGSQL.5432"
2023-05-17 18:44:05.940 -01 [29953] LOG:  database system was interrupted; last known up at 2023-05-01 00:00:02 -01
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory
2023-05-17 18:44:06.102 -01 [29953] LOG:  starting archive recovery
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000001000000D700000014’: No such file or directory
2023-05-17 18:44:06.114 -01 [29953] LOG:  redo starts at D7/14000028
2023-05-17 18:44:06.118 -01 [29953] LOG:  consistent recovery state reached at D7/14000138
2023-05-17 18:44:06.150 -01 [29953] LOG:  restored log file "00000001000000D700000015" from archive
2023-05-17 18:44:06.432 -01 [29953] LOG:  redo done at D7/14000138
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000001000000D700000014’: No such file or directory
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory
2023-05-17 18:44:06.453 -01 [29953] LOG:  selected new timeline ID: 2
2023-05-17 18:44:06.760 -01 [29953] LOG:  archive recovery complete
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000001.history’: No such file or directory
2023-05-17 18:44:06.816 -01 [29950] LOG:  database system is ready to accept connections

souci:
le dossier /var/lib/pgsql/13/wal contient les wal  00000001000000D700000015 00000001000000D700000016 00000001000000D700000017 qui ont l'air d'avoir été superbement ignorés... mais ils ont été copiés sous pg_wal avec un timeline différent (le préfixe est devenu 00000002 et un fichier 00000002.history est créé sous pg_wal et contient: 1       D7/15000000     no recovery target specified.

Questions: pourquoi une seconde timeline? Pourquoi pas de recovery?

Merci.

#6 Re : Général » souci restore postgres 13 » 17/05/2023 17:15:10

Pourquoi a-t'il besoin de ce fichier? Dans le dossier wal, il n'y a que des .wal, pas autre chose...

#7 Général » souci restore postgres 13 » 17/05/2023 15:46:52

albourg
Réponses : 4

Bonjour,

j'ai un backup postgres 13 qui a été effectué avec pg_base_backup, ainsi qu'un dossier de wal (3 fichiers 00000001000000D700000015..17).
Je dois restaurer une copie et appliquer les wal sur une autre machine (postgres 13 aussi ).

Sur la cible:
* stop postgres
* copie data/Restore backup
* effacement du sous-dossier pg_wal du backup
* création de standby.signal:

restore_command = 'cp /mnt/nfs/backup-replica/wal/%f %p'

* adaptation du postgresql.conf: force log_level=minimal, hot_standby=off, restore_command = 'cp /mnt/nfs/backup-replica/wal/%f %p'

start postgres: Il prend le premier wal puis stoppe sur cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory:

2023-05-17 12:40:42.447 -01 [4035] LOG:  restored log file "00000001000000D700000015" from archive
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory
2023-05-17 12:40:47.449 -01 [4035] LOG:  restored log file "00000001000000D700000015" from archive
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory
2023-05-17 12:40:52.452 -01 [4035] LOG:  restored log file "00000001000000D700000015" from archive
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory
2023-05-17 12:40:57.453 -01 [4035] LOG:  restored log file "00000001000000D700000015" from archive
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory
2023-05-17 12:41:02.555 -01 [4035] LOG:  restored log file "00000001000000D700000015" from archive
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory
2023-05-17 12:41:07.544 -01 [4035] LOG:  restored log file "00000001000000D700000015" from archive
cp: cannot stat ‘/var/lib/pgsql/13/wal/00000002.history’: No such file or directory
2023-05-17 12:41:12.565 -01 [4035] LOG:  restored log file "00000001000000D700000015" from archive

Or postgres peut écrire sous /var/lib/pgsql/13/wal.

Quelqu'un peut-il m'éclairer sur cette "erreur"?

Merci!

#8 Migration » copier une table » 29/07/2022 17:56:34

albourg
Réponses : 3

Bonjour,

je voudrais exporter une table nommée "bievent' (d'un vieux postgres 9.2) pour l'importer dans une db de test.
Mon user n'a accès qu'en lecture mais pas en écriture (production).

PGPASSWORD=<mon passwd> pg_dump -f /tmp/lz.dmp -O -t bievent -h 127.0.0.1 -p 5433 -U <monuser> <database>

Mais j'obtiens

pg_dump: [archiver (db)] query failed: ERROR:  permission denied for relation bievent_id_seq
pg_dump: [archiver (db)] query was: SELECT sequence_name, start_value, increment_by, CASE WHEN increment_by > 0 AND max_value = 9223372036854775807 THEN NULL      WHEN increment_by < 0 AND max_value = -1 THEN NULL      ELSE max_value END AS max_value, CASE WHEN increment_by > 0 AND min_value = 1 THEN NULL      WHEN increment_by < 0 AND min_value = -9223372036854775807 THEN NULL      ELSE min_value END AS min_value, cache_value, is_cycled FROM bievent_id_seq

Bref, il ne peut pas lire la séquence bievent_id_seq (qui donne l'id de la table) , refuse de faire un dump, mais ce n'est pas la séquence que je veux exporter mais bien la table.
J'ai essayé sans succès:
* d'ajouter -a
* d'ajouter --inserts
* d'ajouter -T  bievent_id_seq

Comment puis-je faire pour n'exporter QUE la table?

Merci.

#9 Re : Réplication » replication - changements? » 25/06/2021 15:04:33

entre-termps j'ai trouvé, il faut maintenant ajouter un fichier nommé standby.signal dans le dossier de données du standby, et tout fonctionne.

#10 Réplication » replication - changements? » 25/06/2021 11:22:45

albourg
Réponses : 3

Bonjour,


J'ai mis en place un standby entre deux postgres 13 (centos 7) en utilisant la même confiig qui fonctionnait parfaitement entre deux postgres 10, à savoir:
* sur le master:

listen_addresses = '*'
archive_command = 'test ! -f /var/lib/pgsql/13/wal/%f && cp %p /var/lib/pgsql/13/wal/%f'
archive_mode=on

+ 1 ligne dans pg_hba.conf


* sur le slave:

listen_addresses = '*'
port=5433
primary_conninfo = 'host=127.0.0.1 user=postgres'
hot_standby = on
restore_command = 'cp /var/lib/pgsql/13/wal/%f %p'
archive_cleanup_command = '/usr/pgsql-13/bin/pg_archivecleanup /var/lib/pgsql/13/wal %r'

Mais ca ne marche plus: le slave ne se connecte pas au master, ne copie pas les mises à jour (j'ai généré 1Gb d'updates) et ne donne pas d'erreur:

2021-06-25 10:59:12.928 CEST [3797] LOG:  database system is ready to accept connections

Régression? Ou est-on maintenant obligé d'utiliser les "replication slots"? J'ai essayé de créer un "replication user", sans changement.


Merci.

#11 Re : Java » version minimale postgresql.jar pour postgres 13 » 13/01/2021 18:44:51

ca, ca permet de voir les liens. Si j'envoie la question à pgsql-jdbc@lists.postgresql.org, j'espère que ca ne va pas envoyer le messages au million d'abonnés?

#12 Re : Java » version minimale postgresql.jar pour postgres 13 » 13/01/2021 16:42:58

Auriez-vous un lien vers leur liste de discussion où je peux leur poser la question?

#13 Re : Java » version minimale postgresql.jar pour postgres 13 » 13/01/2021 14:43:58

la question est surtout de savoir si une upgrade du driver est nécessaire, et à partir de quelle version.
"The current version of the driver should be compatible with PostgreSQL 8.2 and higher" veut dire que le driver doit se connecter à une db >=8.2, mais pas si le 42.2.5 est compatible avec postgres 13.

#14 Installation » upgrade de postgres 10->13 avec des docker » 13/01/2021 11:47:54

albourg
Réponses : 1

Bonjour,

une machine de test contient des docker postgres 10 (les données sont sur un volume indépendant).
J'aimerais les upgrader vers postgres 13. Y a-t'il une procédure pour faire cela?

Merci.

#15 Java » version minimale postgresql.jar pour postgres 13 » 13/01/2021 11:27:09

albourg
Réponses : 8

Bonjour,

je vais upgrader un postgres 10->postgres 13.
Les applis utilisent postgresql-42.2.5.jar.

Ce .jar est-il compatible avec postgres 13?
Si non, quelle version supporte postgres 13? Dans le changelog il est marqué https://jdbc.postgresql.org/documentati … gelog.html que le 42.2.6 ajoute du support pour postgres 11 et 12. Mais rien n'est mis pour le 13, pour aucune version.

Merci.

#16 Re : Réplication » Upgrade standby » 07/08/2020 17:52:54

"mettre à jour le secondaire avec rsync"
Potentiellement ca compare 3Tb via le wan, ca ne va jamais aller.
Y a-t'il moyen , à l'instar de oracle et sql server, de n'envoyer que des fichiers WAL? Ou de faire en sorte que l'upgrade enregistre toutes les modifs dans des WAL?

#17 Réplication » Upgrade standby » 07/08/2020 12:07:09

albourg
Réponses : 3

Bonjour,

j'ai une db primaire postgres 10 de 3Tb.
J'ai un standby connecté via un WAN (aussi en postgres 10).

Comment upgrader le primaire et le standby en pg 12 sans renvoyer les 3Tb via le WAN?

Merci.

#18 Re : Sécurité » standby ssl certificate » 08/07/2020 15:58:03

J'ai le root.crt sur le standby

Donc si le pg_hba du primaire, j'ai
hostssl replication     all             <standby ip>/32        trust

et sur le standby:
primary_conninfo = 'host=<primary ip> user=postgres sslrootcert=/var/lib/pgsql/.postgresql/root.crt sslmode=require'

La connection sera cryptée grace au root.crt?

#19 Re : Sécurité » standby ssl certificate » 06/07/2020 08:22:04

It doesn't really work!
On master:
From pgadmin, if I give the root.crt to client

hostssl dpa2            dpa2          192.168.20.140/32         md5 

=> client can connect if it has root.crt and password.

I would like standby to be able to connect using only root.crt
On primary I tried:

hostssl replication     all             10.12.51.122/32        cert

then

hostssl replication     all             10.12.51.122/32        md5

and in standby's postgreql.conf

primary_conninfo = 'host=192.168.50.122 user=postgres sslrootcert=/var/lib/pgsql/.postgresql/root.crt'

But I get:

2020-07-06 08:18:12.180 CEST [35311] FATAL:  could not connect to the primary server: FATAL:  client certificates can only be checked if a root certificate store is available
        FATAL:  no pg_hba.conf entry for replication connection from host "10.12.51.122", user "postgres", SSL off

certificates are right:

[postgres@pgdpa01 data]$ openssl verify -CAfile root.crt server.crt
server.crt: OK

I would just like ssl to be used between primary and standby, so that data are not in clear text on a wan. How how how?

#20 Sécurité » standby ssl certificate » 01/07/2020 13:57:51

albourg
Réponses : 6

Bonjour,

postgres 12.3 linux x86_64 centos 7.
J'ai un standby qui se connecte au primaire, j'ai mis "trust" dans pg_hba.conf.
J'aimerais que le standby utilise un certificat (j'ai déjà des certificats self-signed via la procédure https://www.postgresql.org/docs/12/ssl-tcp.html).
Comment est-il possible se spécifier les certificats dans le connect string du standby pour éviter le "trust"?

Merci.

#21 Re : Sécurité » SSL - besoin d'explications » 29/06/2020 13:31:26

Donc si je mets md5 il demande le mot de passe mais le certificat est quand même nécessaire à cause de hostssl. Merci.

Reste à flanquer ça dans le connect string du standby.

#22 Re : Sécurité » SSL - besoin d'explications » 29/06/2020 11:01:43

Merci pour ces réponses.
Comme le dit daniel, je cherche juste à ce que le client ne communique que s'il a un certificat... pour l'instant.
Par contre,
1. quelle est la différence entre cert et md5?
2. Si je veux qu'un standby se connecte à ce serveur, comment puis-je lui donner le root.crt dans le connect string?

Merci.

#23 Sécurité » SSL - besoin d'explications » 26/06/2020 13:37:39

albourg
Réponses : 5

Bonjour,
postgres 12.2, linux x64. J'ai généré un certificat self-signed moi-même via ce script:

DAYS=3650
DOMAIN=masociete.com
HOST=serveur
SSLCONF=/etc/pki/tls/openssl.cnf

echo generate csr + key pair root.csr root.key
openssl req -new -nodes -text -out root.csr -keyout root.key -subj "/CN=root.$DOMAIN"
chmod og-rwx root.key
echo sign using root.csr, root.key to generate root.crt
openssl x509 -req -in root.csr -text -days $DAYS -extfile $SSLCONF -extensions v3_ca -signkey root.key -out root.crt
echo Use same command to generate server csr+key pair server.csr server.key
openssl req -new -nodes -text -out server.csr -keyout server.key -subj "/CN=$HOST.$DOMAIN"
chmod og-rwx server.key
echo sign using CA root
openssl x509 -req -in server.csr -text -days $DAYS -CA root.crt -CAkey root.key -CAcreateserial -out server.crt
chmod og-rwx server.crt
openssl verify -CAfile root.crt server.crt

Au niveau pg_hba.conf

hostssl db            usr            192.168.0.1/16          md5

ensuite:

createuser --pwprompt usr

psql ->

create database db;
grant connect on database db to usr;
grant all privileges on database db to usr;

Si je copie root.crt sur mon poste, le spécifie à pgadmin (+ ssl require), je peux me connecter. Sans le certificat, ça ne fonctionne pas.
Or dans la doc , https://www.postgresql.org/docs/current … RTIFICATES, il est marqué

add the authentication option clientcert=verify-ca or clientcert=verify-full to the appropriate hostssl line(s) in pg_hba.conf

Quand je mets

hostssl db            usr            192.168.0.1/16         clientcert=verify-ca

dans le pg_hba.conf, le connection est refusée. Il indique même que le certificat est invalide.
Or,

openssl verify -CAfile root.crt server.crt

permet d'affirmer que le certificat est correct.

Quelqu'un peut m'expliquer pq le clientcert=verify-ca ne fonctionne pas, et éventuellement s'il est utile, comment le faire fonctionner?

Merci.

#24 Réplication » utilisation de scp plutôt que cp/fuselib/... » 13/12/2019 15:14:19

albourg
Réponses : 1

Bonjour,

je configure un postgres 12 en master standby.
Le ssh est configuré pour que les 2 noeuds puissent communiquer sans prompt du mot de passe par ssh.

Sur le standby, je configure la récup du backup comme suit:

restore_command = 'scp masterdb:/var/lib/pgsql/12/wal/%f %p'

Souci: pour le archive_cleanup_command, je ne peux utiliser que
archive_cleanup_command = 'pg_archivecleanup <dir>/%f %r'
mais je ne peux pas configurer de dossier présent sur le noeud masterdb. Je suis obligé d'utiliser soit:
* un mount nfs
* un mount avec fuselib

Question: y a-t-il un autre solution que pg_archivecleanup qui supporte scp? (warm_standby ou autre)??????


Merci.

#25 Général » postgres 12 - pg_basebackup - syntax changed » 05/12/2019 18:55:31

albourg
Réponses : 1

as postgres:
-bash-4.2$ pg_basebackup -P -R --pgdata=/var/lib/pgsql/12/data --checkpoint=fast --host=eidlot2-database-1.pass.lan --username=postgres
pg_basebackup: error: could not connect to server: could not translate host name "eidlot2-database-1.pass.lan --username=postgres" to address: Name or service not known

this worked fine in 11.
-bash-4.2$ pg_basebackup -P -R --pgdata=/var/lib/pgsql/12/data --checkpoint=fast --username=postgres --host=eidlot2-database-1.pass.lan
works!
and if there is a space after the last letter (...pass.lan<space>, it does NOT work).

Pied de page des forums

Propulsé par FluxBB