Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#1 Re : Réplication » replication physique sur postgresql 12 » 23/11/2020 09:10:54
Merci Guillaume pour toutes ces précisions!
#2 Re : Réplication » replication physique sur postgresql 12 » 19/11/2020 17:18:39
Bonjour Merci Guillaume,
C'est beaucoup plus clair pour moi effectivement.
Juste un détail la réplication par streaming semble opére visiblement à la granularité au segment de wal, ce qui fait dans mon cas pratique au temps de transfert prés les deux serveurs sont quasiment synchrones.
A contrario mon troisiéme serveur lui utilise la restoration de l'archivage des wal du master, et là il semblerait que l'esclave attende qu'un wal intégral de16Mo soit archivé par le primaire avant de le récupérer puis de le jouer avec un pas de temps élastique en fonction des actions sur le primaire.
Ou cela traduit-il plutôt une erreur de fonctionnement de mon installation
Merci d'avance
#3 Re : Réplication » replication physique sur postgresql 12 » 13/11/2020 09:02:50
Merci Guillaume
Bon ben voila tout est dit le rsync ne suffit pas il faut en plus formaliser cela avec pg_start_backup et pg_stop_backup. J'avais imaginé que ce n'était valable que pour les opérations avec création d'un fichier sauvegarde et pas avec une synchronisation de fichier racine...en relisant la doc...
Pour bien comprendre pg_start_backup et pg_stop_backup ce sont des opérations qui visent à lancer la création d'un checkpoint et de mettre en cohérence les opérations d'archivage des wals et de synchronisations des timelines, non?
Merci en tout cas :
Pour info les opérations que je fais :
je prépare un serveur maitre avec juste un archivage de wal par archive_command
je rends esclave un second serveur qui lui a déjà servi en autonome et pour ca je fais :
mise en place d'une restore_command
rsync des fichiers du répertoire main à partir du maitre arrêté
mise en place du fichier standby.signal
et redémarrage des deux serveurs.
Naïvement je pensais que le fait d'arrêter les deux serveurs faisait que le maître était dans un état stable et donc que le rsync produirait forcément un état stable en face.
De toutes façons à partir du moment ou j'arrêtais le maitre je ne pouvais plus utiliser le pg_start_backup et pg_stop_backup, donc en fait vous suggérer de le faire à faire à chaud côté maitre uniquement?
D'avance merci pour tous ces éclaircissements.
#4 Re : Réplication » replication physique sur postgresql 12 » 10/11/2020 09:02:32
Bonjour Guillaume,
loin de moi l'idée de critiquer ce phénoménal travail de traduction et de maintien à jour qui est doit être très énergivore.
Par ailleurs merci beaucoup pour la traduction qui permet de mieux appréhender certaines substilités de postgres.
Merci Daniel, en lisant la documentation du gihub, je vois comment contribuer et signaler plus efficacement les erreurs.
J'ai quand même une question sur la réplication :
Tous les exemples que je vois sont basés, dans les documentations notamment, sur la mise en place d'une solution répliquée à partir de serveur neuf (au sens installé initialement dans ce but). Or dans ma vie, j'ai une machine virtuelle de développement sur laquelle je teste une version supérieure de moteur de postgresql avec postgis de manière autonome (sans replication donc ), j'y restore mon environnement et je l'expose à qqs clients promus déboggueurs en chef. Puis lorsque tout ou presque est ok, je retiens cette nouvelle version de moteur pour programmer une migration de tous mes serveurs réplication compris :
Dans mon cas de figure 2 sont l'un a côté de l'autre (et donc je propose de recycler de ce fait la machine qui m'a servi à faire le test de montée de version).
Comme je ne veux pas refaire toute la maquette et que malheureusement il est rare que je réussisse sans itération à obtenir une solution stable.
Je réutilise le postgres autonome pour en faire le nouvel esclave. Et donc je prends une machine vierge sur laquelle je deploie tous les outils, migres mes bases puis je synchronise avec rsync tout le répertoire main de postgresql.
Je mets le fichier recovery.signal et la restore_command en place puis je redémarre l'esclave puis le maitre qui lui utilise l'archive_command.
Fréquemment le serveur esclave se souvient de sa vie antérieure en m'indiquant via une erreur de timeline ou de recherche de fichier history. Comment puis je le rendre vierge de cette mémoire? Sauf erreur de ma part le seul répertoire qui n'est pas synchronisé est le log hormis bien sûr les répertoires protégés par postgres bien sûr.
D'avance votre éclairage à ce sujet
Yann
#5 Re : Réplication » replication physique sur postgresql 12 » 06/11/2020 13:56:33
Bonjour,
Sur la francisation de la documentation postgresql nouveau soucis sauf erreur :
9.26.4. Fonctions de contrôle de la restauration la fonction de suivi des wal est décrite ainsi (comme en 9.x)
pg_last_xlog_receive_location()
Alors que dans la doc anglaise :
https://docs.postgresql.fr/12/functions-admin.html
9.26.4. Recovery Control Functions
c'est
pg_last_wal_receive_lsn()
qui est noté
et surtout dans le moteur 12 l'ancienne dénomination n'exite plus mais ce n'est pas la seule coquille:
Qui alerté dans ce cas, et par ailleurs comment peut-on participer à la francisation des docs s'il manque des bras?
D'avance merci !
#6 Re : Réplication » replication physique sur postgresql 12 » 04/11/2020 17:50:16
Bonjour,
j'ai l'impression que cela provient du fait que je n'avais pas de replication effective entre mes deux serveurs du fait de la confusion entre standby.signal et recovery.signal et donc que les deux serveurs ont eu des phases ou ils étaient ou répliqués ou autonome. et comme j'ai restauré sur l'un et l'autre des bases de bon volume conséquents (1To) la croissance des wal a été volumineuse.
Je suis reparti de quasi 0 et les timelines semblent en accord maintenant.
#7 Re : Réplication » replication physique sur postgresql 12 » 02/11/2020 19:10:33
je crois que j'ai trouvé un 000002.history qui mettait le bazard....alors que la timeline était en 000001
#8 Re : Réplication » replication physique sur postgresql 12 » 02/11/2020 18:48:29
Merci c'est pas grave Guillaume, juste que postgres ne disait rien pour me mettre sur la voix...
Maintenant j'ai ce message là :
LOG: démarré le flux des journaux depuis le principal à 156/6C000000 sur la timeline 1
2020-10-23 12:48:01.517 CEST [30552] FATAL: la timeline requise 2 n'est pas un fils de l'historique de ce serveur
2020-10-23 12:48:01.517 CEST [30552] DÉTAIL: Le dernier checkpoint est à 156/6C000028 sur la timeline 1, mais dans l'historique de la timeline demandée, le serveur est sorti de cette timeline à 156/670000A0.
2020-10-23 12:48:01.519 CEST [30550] LOG: processus de lancement (PID 30552) a quitté avec le code de sortie 1
2020-10-23 12:48:01.519 CEST [30550] LOG: annulation du démarrage à cause d'un échec dans le processus de lancement
2020-10-23 12:48:01.524 CEST [30550] LOG: le système de base de données est arrêté
Je crois que j'ai trop bidouillé et l'esclave est perdu, je vais tenter un rsync de tous les fichier de la base et refaire un fichier standby.signal
#9 Re : Réplication » replication physique sur postgresql 12 » 23/10/2020 16:18:29
re,
effectviment je n'ai pas créér ce fichier "La raison la plus probable de cette erreur est que vous avez oublié de créer le fichier standby.signal."
Car sur la doc française il est mentionné recovery.signal.... (ce qui ne lui fait ni chaud ni froid)
erreur de traduction ? ou traduction automatique?
26.2.4. Paramétrer un Serveur de Standby
Pour paramétrer le serveur de standby, restaurez la sauvegarde de base effectué sur le serveur primaire (voir (see Section 25.3.4). Créez un fichier recovery.signal dans le répertoire de données du cluster de standby. Positionnez restore_command à une simple commande qui recopie les fichiers de l'archive de WAL. Si vous comptez disposer de plusieurs serveurs de stanby pour mettre en œuvre de la haute disponibilité, assurez-vous que recovery_target_timeline est configuré à latest (la valeur par défaut), pour indiquer que le serveur de standby devra prendre en compte la ligne temporelle définie lors de la bascule à un autre serveur de standby.
Ou une feinte pour vérifier que l'on a bien lu.. ;-)
le slave se connecte bien au master mais la timeline 2 ne lui plait pas... faut que je creuse cela encore....
#10 Re : Réplication » replication physique sur postgresql 12 » 23/10/2020 09:48:50
Alors en fait c'est plus sioux que cela :
2020-10-23 09:12:46.645 CEST [28985] LOG: le système de bases de données a été arrêté à 2020-10-23 09:06:41 CEST
2020-10-23 09:12:46.645 CEST [28985] FATAL: doir spécifier une restore_command quand standby_mode n'est pas activé
2020-10-23 09:12:46.648 CEST [28983] LOG: processus de lancement (PID 28985) a quitté avec le code de sortie 1
2020-10-23 09:12:46.648 CEST [28983] LOG: annulation du démarrage à cause d'un échec dans le processus de lancement
2020-10-23 09:12:46.662 CEST [28983] LOG: le système de base de données est arrêté
Il considère que standby mode n'est pas activé et exige donc une restore_command, pourquoi considère-t-il que primary_conn ou primary_slot n'active pas le mode standby?
De ce que j'ai lu on peut choisir la replication par streaming ou l'accès à un répertoire d'archive continu du master. Je me trompe?
#11 Re : Réplication » replication physique sur postgresql 12 » 23/10/2020 09:37:16
D'ailleurs ce qui est vraiment surprenant c'est que cette option n'existe pas dans le postgresql.conf.
Même par en attente comme primary_conn'' ou restore_command'' dans la section standby server....
J'imagine que c'est parcequ'elle va disparaitre en version 13 ? la présence de primary_conn devrait permettre de déduire que l'on souhaite avoir un secondaire actif?
#12 Re : Réplication » replication physique sur postgresql 12 » 23/10/2020 09:31:00
Hello, merci guillaume j'avais oublié le fichier recovery.signal mais il faut que je remonte la pelote....car il y a d'autres choses :
petit soucis dans la doc de la 12 : (il manque la mention de standy_mode=on (qui existe bien dans la doc de la 11 et plus dans la 12)..
Pour paramétrer le serveur de standby, restaurez la sauvegarde de base effectué sur le serveur primaire (voir (see Section 25.3.4). Créez un fichier recovery.signal dans le répertoire de données du cluster de standby.
Positionnez restore_command à une simple commande qui recopie les fichiers de l'archive de WAL. Si vous comptez disposer de plusieurs serveurs de stanby pour mettre en œuvre de la haute disponibilité, assurez-vous que recovery_target_timeline est configuré à latest (la valeur par défaut), pour indiquer que le serveur de standby devra prendre en compte la ligne temporelle définie lors de la bascule à un autre serveur de standby.
Je vais le signaler car j'ai l'impression que cette omission ne vient pas de la traduction mais de la doc anglaise de la 12.
#13 Réplication » replication physique sur postgresql 12 » 22/10/2020 14:02:50
- tholot
- Réponses : 22
Bonjour à tous,
j'ai deux serveurs sur le même réseau local que je souhaite mettre en replication physique :
sur le master
j'ai ouvert le pg_hba.conf
ave une ligne :
host replication * ip/32 md5
et j'ai monté wal_keep_segments à 1000
j'ai lancé la création du slot de replication avec :
la fonction adhoc
le resultat donne cela :
postgres=# SELECT slot_name, slot_type, active FROM pg_replication_slots;
slot_name | slot_type | active
-----------+-----------+--------
nom_slot | physical | f
sur le slave
primary_conninfo = 'host=IP_master port=port user=compte_non_su password='
primary_slot_name = 'nom_slot'
wal_keep_segments = 1000
j'ai fait une copie via rsync du master vers le slave.
Depuis j'ai rajouté deux nouvelles bases sur le master mais la réplication ne s'effectue pas :
les logs du master et du slave ne font état d'aucune connection même échouée...
aucun processus serveur wal_sender en route...
les serveurs sont par défaut hot= replica
Je passe a côté de qqchose, mais j'ai beau lire la doc je ne vois pas...
Si vous avez des idées...
#14 Re : Installation » installation partiel » 28/07/2020 08:03:24
Bonjour,
Merci beaucoup pour cette réponse je pensais bien que j'avais omis quelquechose
#15 Re : Général » Mise à jour de la définition d'une vue materialisée » 23/07/2020 17:04:47
Bonjour,
Merci de votre réponse, effectivement j'avais lu les évolutions de ALTER MATERIALIZED VIEW, mais j'avais conclus comme vous que cela n'avait des effets que sur des éléments basiques et pas sur la définition ou le contenu d'une vue matérialisée.
Pour l'exemple en fait j'ai une vue matérialisée dénommée topo_region_s_r84 qui présente le polygone de la région auvergne-rhone-alpes et des attibuts qui sont constitués par la définition
suivante select nom_reg, st_union(geom_bdt) from n_commune_cog_2014_s_fr where insee_reg='84' group by 1.
je voudrais changer cette définition pour l'asseoir sur une table n_commune_s_fr qui elle évoulue au fil des ans et malheureusement j'ai des centaines de vues ou de tables qui s'appuient sur cette vue matérialisée.
J
#16 Installation » installation partiel » 23/07/2020 16:51:30
- tholot
- Réponses : 2
Bonjour à tous,
J'ai un soucis récurrent sur mes installations de postgres-postgis. Je souhaite installer plusieurs clients à postgres qui me sont nécessaires pour faire tourner mes batchs d'entrée sortie dans la base.
en l'occurence j'installe en ubuntu, toutes ces dépendances par défaut :
sudo apt-get install postgresql-12-postgis-2.5
sudo apt-get install gdal-bin
sudo apt-get install pgadmin4
sudo apt-get install postgresql-12-pgrouting
sudo apt-get install postgresql-client-12
Or il me manque systématiquement les bibliothéques shp2pgsql et son verso pgsql2shp.
J'arrive à trouver une astuce pour contourner cela en ajoutant :
sudo apt-get install postgis
qui lui les installe systématiquement.
Ce faisant j'ai souvent une version supérieure de psql, voir de postgis qui s'installe en plus.
Comme cela m'arrive à chaque fois depuis la version 9.0 je me dis que je loupe une étape au niveau des installations initiales? Auriez vous une idée svp
#17 Général » Mise à jour de la définition d'une vue materialisée » 19/05/2020 23:13:59
- tholot
- Réponses : 2
Bonjour je cherche un moyen de mettre à jour la défintion d'une vue matérialisée car elle comporte beaucoup de dépendance et je ne souhaite toute les refaire.
Connaissez vous une méthode?
D'avance merci
#18 Re : Réplication » Log replication » 03/01/2020 12:17:12
Bonjour,
Tu as du mettre un paramètre qui exige le commit avant l'envoi du journal.
Peut-être as tu créé un slot de replication qui n'est jamais demandé par un esclave, dans l'attente postgres conserve les wal correspondant?
#19 Re : Migration » Impossibe d'appliquer le patch 9.6.14 sur ubuntu 14.04 » 19/08/2019 09:33:28
Bonjour,
Ce serait cohérent avec mon cas de figure car le serveur pour lequel les mises à jour ce sont bien passées est en ubuntu 16. toutefois le patch de début mai que j'ai appliqué le 20 mai 9.6.13 était passé... seuil de tolérance sans doute !
#20 Re : Migration » Impossibe d'appliquer le patch 9.6.14 sur ubuntu 14.04 » 05/08/2019 09:00:47
Petit complémént :
sur un ubuntu 14.04 également et sur le même réseau j'ai la même difficulté avec la mise à jour en postgresql 10.9 d'un autre serveur qui reste obstinément en 10.8 en spécifiant que c'est la version la plus à jour?
l'apt-get update atteint bien le dépot :
Atteint http://apt.postgresql.org trusty-pgdg/main amd64 Packages
?
#21 Migration » Impossibe d'appliquer le patch 9.6.14 sur ubuntu 14.04 » 05/08/2019 08:19:54
- tholot
- Réponses : 4
Bonjour,
j'ai plusieurs serveurs postgres dont un ubuntu 14 avec postgres 9.6 dessus.
Jusqu'a présent tous les patchs sont passés sans soucis.
a l'heure actuelle celui-ci est en 9.6.13
commande : pg_restore -V
reponse : pg_restore (PostgreSQL) 9.6.13
hors lorsque je lance un apt-get install postgresql-9.6
> sudo apt-get install postgresql-9.6
Lecture des listes de paquets... Fait
Construction de l'arbre des dépendances
Lecture des informations d'état... Fait
postgresql-9.6 est déjà la plus récente version disponible.
0 mis à jour, 0 nouvellement installés, 0 à enlever et 9 non mis à jour.
l'instance me répond que je dispose déjà de la version la plus à jour.
Pour contrer cette difficulté j'ai déjà :
1) redémarrer le serveur
2) mis à jour apt avec sudo apt-get update
3) verifiez la présence de l'appel à l'url
deb http://apt.postgresql.org/pub/repos/apt/ trusty-pgdg main
dans /etc/apt/sources.liste.d.
Je séche un peu sur ce qui ne va pas. des idées?
D'avance merci
#22 Re : Réplication » comment effectuer un basculement » 07/02/2019 16:29:30
Je reformule pour être sûr d'avoir bien compris :
Pour refaire un esclave à partir du nouveau maitre je suis obligé de refaire un rsync complet, or pour qu"il soit intégrè il faut que je stoppe le nouveau (master) au moins pour la synchronisation des fichiers à l'arrêt.
A l'étape des deux arrêts n'est-il pas plus simple de supprimer le trigger file sur le nouveau master et de renommer son recovery.done en recovery.conf ?
Ou s'agit-il d'une étape visant à assurer l'intégrité des données.
#23 Re : Réplication » comment effectuer un basculement » 07/02/2019 12:00:31
Bonjour,
Ok pour le basculement d'un standby en primaire. Je l'ai fait avec le recovery.conf auquel j'ai rajouté la commande trigger_file.
La création du fichier master.on (c'est le nom que j'ai choisi) provoque après redémarrage de postrgres sur le standby la possibilité d'écriture et le renomage en recovery.done du fcihier intial.
Pour faire l'inverse que faut-il vraiment faire?
J'avais naïvement pensé que supprimer le fichier master.on puis redémarrer postgres suffirait hors le fichier recovery.done ne redevient pas automatiquement recovery.conf?
d'avance merci pour votre éclairage.
#24 Re : Général » failover » 18/12/2018 13:14:49
Bonjour,
Merci pour l'explication , c'est exactement ce que je me disais en parcourant la table pg_class qui montre seulement 10 000 entrées pour 16300 fichiers ....
ok pour la solution la plus sur.
Concrétement je liste dans un fichier liste tous les fichiers du répertoire je le charge en base et fait une jointure avec relfinode avec un not in je ne risque pas d'en prendre un de trop en théorie.
par contre pour aller jusqu'au bout de la logique mon esclave en streaming replication auras toujours 1,2 To de trop puisque cette modification physique n'entrainera en rien des wal et donc une répercussion sur le serveur distant.
C'est ce qui me ferait militer pour une restauration complète.
#25 Re : Général » failover » 18/12/2018 12:15:13
je viens de faire la requête postgres indique 417 Gb lui aussi.
pg_admin et phppg_admin voit le 1888 Go
le du -h de la base donne 1,9 To également