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

#1 Réplication » Répartition de charge sur standby physique » 25/07/2019 16:12:35

lajoumard
Réponses : 2

Bonjour,
Je cherche la meilleure solution pour répartir la charge des requêtes sur  un serveur postgres maitre et son standby physique.
J'aimerai que les transactions en lecture seule aillent sur le slave (ou master si slave indispo ) pour alléger la charge.Mais l'ideal serait qu'un outil tiers le fasse sans qu'on soit obligé de retoucher le code applicatif et gérer cela
avec 2 connectiions JDBC  . Existe-t-il un outil ou une stack qui permettre de faire le tri des transactions entrantes pour les rediriger ensuite vers la bonne connexion ? la base étant en autocommit cet outil devrait être capable de dire sur un SELECT "j'envoi cette transaction " vers le seveur standby . A l'opposé si la transaction commence par un BEGIN ou est un ordre DML différent de SELECT alors la transaction sera dirigée vers le master . 
Merci

#2 Site PostgreSQL.fr » pg_ctl vs systemctl » 26/02/2018 13:48:44

lajoumard
Réponses : 1

Bonjour,
J'ai installé un moteur postgres 9.5 sur une redhat 7. J'arrive bien à la démarrer/arrêter avec systemctl et pg_ctl  dans presque tous les cas sauf :
Si je démarre l'instance avec "pg_ctl start" je ne peux pas l'arrêter ni demander son statut avec systemctl . Je suis obligé de l'arrêter avec pg_ctl puis de la redémarrer avec systemctl.

La sortie.
pg_ctl start  (avec user postgres
serveur en cours de démarrage
-bash-4.2$ 2018-02-26 12:43:35 CET [52755]: [1-1]LOG:  redirecting log output to logging collector process
2018-02-26 12:43:35 CET [52755]: [2-1]HINT:  Future log output will appear in directory "pg_log".

ps -fu postgres
UID         PID   PPID  C STIME TTY          TIME CMD
postgres  50089  50088  0 11:42 pts/1    00:00:00 -bash
postgres  52755      1  0 12:43 pts/2    00:00:00 /usr/pgsql-9.5/bin/postgres
postgres  52756  52755  0 12:43 ?        00:00:00 postgres: logger process
postgres  52758  52755  0 12:43 ?        00:00:00 postgres: checkpointer process
postgres  52759  52755  0 12:43 ?        00:00:00 postgres: writer process
postgres  52760  52755  0 12:43 ?        00:00:00 postgres: wal writer process
postgres  52761  52755  0 12:43 ?        00:00:00 postgres: autovacuum launcher process
postgres  52762  52755  0 12:43 ?        00:00:00 postgres: archiver process
postgres  52763  52755  0 12:43 ?        00:00:00 postgres: stats collector process
postgres  52764  52755  0 12:43 ?        00:00:00 postgres: bgworker: pglogical supervisor
postgres  52767  52755  0 12:43 ?        00:00:00 postgres: bgworker: pglogical manager 16386


J'essaye de demander le status avec systemctl  (en root)
systemctl status postgresql-9.5 -l
● postgresql-9.5.service - PostgreSQL 9.5 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-9.5.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since lun. 2018-02-26 11:44:33 CET; 1h 1min ago
  Process: 50283 ExecStop=/usr/pgsql-9.5/bin/pg_ctl stop -D ${PGDATA} -s -m fast (code=exited, status=1/FAILURE)
  Process: 50257 ExecStart=/usr/pgsql-9.5/bin/pg_ctl start -D ${PGDATA} -s -w -t 300 (code=exited, status=0/SUCCESS)
  Process: 50251 ExecStartPre=/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
Main PID: 50260 (code=exited, status=0/SUCCESS)

févr. 26 11:44:24 srisvm-europapivotbdd01 systemd[1]: Starting PostgreSQL 9.5 database server...
févr. 26 11:44:24 srisvm-europapivotbdd01 pg_ctl[50257]: 2018-02-26 11:44:24 CET [50260]: [1-1]LOG:  redirecting log output to logging collector process
févr. 26 11:44:24 srisvm-europapivotbdd01 pg_ctl[50257]: 2018-02-26 11:44:24 CET [50260]: [2-1]HINT:  Future log output will appear in directory "pg_log".
févr. 26 11:44:25 srisvm-europapivotbdd01 systemd[1]: Started PostgreSQL 9.5 database server.
févr. 26 11:44:33 srisvm-europapivotbdd01 pg_ctl[50283]: pg_ctl : le fichier de PID « /base/europa/postmaster.pid » n'existe pas
févr. 26 11:44:33 srisvm-europapivotbdd01 pg_ctl[50283]: Le serveur est-il en cours d'exécution ?
févr. 26 11:44:33 srisvm-europapivotbdd01 systemd[1]: postgresql-9.5.service: control process exited, code=exited status=1
févr. 26 11:44:33 srisvm-europapivotbdd01 systemd[1]: Unit postgresql-9.5.service entered failed state.
févr. 26 11:44:33 srisvm-europapivotbdd01 systemd[1]: postgresql-9.5.service failed.

Le fichier postmater existe pourtant bien avec les bons droits .
[root@srisvm-europapivotbdd01 ~]# ll /base/europa/postmaster.pid
-rw------- 1 postgres postgres 77 26 févr. 12:43 /base/europa/postmaster.pid

Si vous avez une idée?
merci

#3 Re : Réplication » Replication logique et physique à la fois » 27/06/2017 18:26:35

Merci . Je viens de faire des tests concluants avec une base maitre avec une standby logique et une physique. Par contre je ne vois pas d'option pour répliquer une table dans un autre schéma que celui d'origine ? Cela serait intéressant quand on veut mutualiser plusieurs bases de structure identique dans une seule . je ne vois pas d'option dans la subscription qui le permette alors que le nom de la base cible peut , lui, être modifié.
Autre bémol mais normal. On ne peut pas faire de réplication logique à partir d'une standby physique car elle est en lecture seule et ne veut donc pas créer les slots de réplication quand on crée la subscription sur la base logique(ERROR:  could not create replication slot "test_sub": ERROR:  logical decoding cannot be used while in recovery). Ca aurait pu être intéressant pour décharger la base maitre de la réplication.

#4 Re : Réplication » Replication logique et physique à la fois » 27/06/2017 09:14:49

Merci mais une base peut elle être en réplication physique vers une standby (pour la haute dispo) et en réplication logique vers une autre standby (pour des besoins autres) ?
Je ne vois  nulle part de réponse à cette question (vu que le wal_level est unique je suppose que non mais cette demande me parait être intéressante pour la suite)

#5 Réplication » Replication logique et physique à la fois » 26/06/2017 17:56:34

lajoumard
Réponses : 4

Bonjour,
J'ai un besoin spécifique sur 2 bases répliquées physiquement en streming replication avec des slots de replication.
Est-il possible de rajouter sur une des 2 bases un base cascadée en replication logique (idéalement sur le slave)  ?
En fait  j'ai besoin d 'avoir accès à une base en lecture-ecriture  en temps réel qui ressemble à l base maître mais au niveau responsabilité je n'y ai pas accès . deplus je veux pouvoir créer mes propres index.
Je viens de tester la v10 avec une base maitre et les méthodes de publication sur toutes les tables et subscription sur la base répliquée logiquement . Ca correspond bien à mon besoin mais est-ce que je peux aussi avoir une réplication de cette base maitre pour la haute dispo ?
Merci

Pied de page des forums

Propulsé par FluxBB