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 Re : Site PostgreSQL.fr » Pgpool ne balançe pas vers les esclaves à cause du set search_path » 12/09/2014 15:06:59

Bonjour,
Je vous remercie beaucoup, vous m'avez lancer sur la bonne piste. J'ai fait un ALTER ROLE et ça marche.

#2 Site PostgreSQL.fr » Pgpool ne balançe pas vers les esclaves à cause du set search_path » 11/09/2014 17:07:24

yassine199105
Réponses : 2

Bonjour,

Je suis en architecture 1 maitre et 2 esclaves en streaming replication, pgpool étant relié à mes 3 serveurs en réplication.
J'ai un serveur WEB apache chargé avec le module prefork. Je lance des URL à partir de Jmeter qui utilisent des requêtes HTTP sur ma base.
Pgpool ne veut pas balancer les requêtes vers les esclaves ... ( je ne sais pour quelle raison )
L'erreur sur les logs du serveur apache et les log des standby est la même : la relation de la table machin n'existe pas. Il n'arrive pas a faire le set search path
Pgpool envoi quand même toutes les requêtes qu'au serveur maitre.

Sur pgpool je suis avec cette configuration :

Mode master/slave : stream
Load balancing : on
parallel request : OFF
..
J'ai vu les restrictions de pgpool, mais la doc précise bien qu'il ne résoud pas les schéma qu'en mode Parellel request qui est désactivé dans mon cas.

Si vous avez besoin de plus d'informations , dites le moi.

Je vous remercie .

#3 Re : Général » pg_stat_wait timeout » 25/08/2014 17:13:12

Je vous remercie pour toutes ces précisions qui m'ont beaucoup aider à voir plus clair sur ce sujet.

#4 Re : Général » pg_stat_wait timeout » 25/08/2014 09:43:32

Bonjour,

 
Du rsync depuis le maître vers les esclaves. Les données des transactions ne sont pas synchronisées dans les journaux de transaction 

Ou,comment  sont alors synchronisé les données de transactions ?

Merci.

#5 Re : Général » pg_stat_wait timeout » 20/08/2014 16:27:08

Oui je fais de tests de montée en charge. Avec fsync=off on perd toutes les données ???
Je n'exclut pas le pg_xlog car je n'ai pas mis en place l'archivage des WAL. J'ai essayer avec le exclude pg_xlog mais ça me fait état de restauration incohérent car le streaming replication ne peut pas rattraper tout son retard si l'archivage n'est pas activé.

Merci de m'avoir éclaircit tout ça.

#6 Re : Général » pg_stat_wait timeout » 20/08/2014 16:02:43

Oui le fsync est désactivé dans le test que je fais.  Ce problème de lecture de WAL d'ou il  peut venir ?
Mais j'en fait plusieurs des tests et justement le fsync c'est un paramètre que je met soit a OFF soit a ON mais le problème est présent dans les deux cas.

#7 Re : Général » pg_stat_wait timeout » 20/08/2014 15:42:08

 
2014-08-18 09:42:36 CEST LOG:  entre en mode standby
2014-08-18 09:42:36 CEST LOG:  ?tat de restauration coh?rent atteint ? 4/C7000078
2014-08-18 09:42:36 CEST LOG:  le syst?me de bases de donn?es est pr?t pour accepter les connexions en lecture seule
2014-08-18 09:42:36 CEST LOG:  enregistrement avec prev-link 4/5E000020 incorrect ? 4/C7000078

Voila le message dans les log des deux standby
Par contre le maitre il me met pg_stat_wait timeout


Et quand je fais le rsync :

Log du slave :

 
 ? 2014-08-20 15:43:40 CEST
2014-08-20 15:45:41 CEST LOG:  entre en mode standby
2014-08-20 15:45:42 CEST LOG:  paquet de d?marrage incomplet
2014-08-20 15:45:42 CEST LOG:  ?tat de restauration coh?rent atteint ? 5/3E000078
2014-08-20 15:45:42 CEST LOG:  enregistrement de longueur nulle ? 5/3E000078
2014-08-20 15:45:42 CEST LOG:  le syst?me de bases de donn?es est pr?t pour accepter les connexions en lecture seule
2014-08-20 15:45:42 CEST FATAL:  n'a pas pu se connecter au serveur principal : n'a pas pu se connecter au serveur : Connexion refus?e
                Le serveur est-il actif sur l'h?te << 172.16.65.34 >> et accepte-t-il les connexions
                TCP/IP sur le port 5432 ?

2014-08-20 15:45:47 CEST LOG:  r?plication de flux connect? avec succ?s au serveur principal

Et après avoir fait le rsync quand je lance mon test ça devient anormalement long et il y'a trop de lecture sur le disque
Juste après si je refais le test mais sans rsync après 1 min de test les requêtes sont executé très rapidement

#8 Re : Général » pg_stat_wait timeout » 20/08/2014 12:07:12

Je lance ce script que j'ai ecris !

ssh root@172.16.65.31 "/etc/init.d/pgpool2 stop"

ssh root@172.16.65.35 "/etc/init.d/postgresql stop"
ssh root@172.16.65.39 "/etc/init.d/postgresql stop"
/etc/init.d/postgresql stop
rsync -avz --delete --exclude /postmaster.* --exclude /recovery.* ~postgres/9.1/main/ 172.16.65.35:~postgres/9.1/main/
rsync -avz --delete --exclude /postmaster.* --exclude /recovery.* ~postgres/9.1/main/ 172.16.65.39:~postgres/9.1/main/
ssh root@172.16.65.35 "/etc/init.d/postgresql start"
ssh root@172.16.65.39 "/etc/init.d/postgresql start"
/etc/init.d/postgresql start

ssh root@172.16.65.31 "/etc/init.d/pgpool2 start; sleep 3"
ssh root@172.16.65.31 "pcp_attach_node 0 localhost 9898 pcp pcp 0;sleep 3;pcp_attach_node 0 localhost 9898 pcp pcp 1; sleep 3; pcp_attach_node 0 localhost 9898 pcp pcp 2"

vu que je ne travaille pas avec l'archivage je n'exclut pas les pg_xlog au cas ou il y'aurais un retard important entre le maitre et l'esclave. mon wal_keep_segment = 100
Est ce obligatoire le  pg_start_backup() et pg_stop_backup qu'est ce que je doit ajouter a mon script a votre avis ?

#9 Re : Général » pg_stat_wait timeout » 20/08/2014 10:57:33

Bonjour,
Je ne comprend pas trop le problème.
En fait je fait de la streaming replication sans archivage ( log-shipping) mais par contre avant de lancer mon test je fait un rsync entre le maitre et les deux esclaves quand je fait ça les log des esclaves m'indique : enregistrement de longueur nulle ... streaming replication réussie. Quand je lance mon test les requêtes vers les esclaves mettent trop de temps a s'executer juste au début et après ça se rétablit mais vers le maitre ça reste long a s'executer , quand je change mes config pour faire un second test les logs des standby m'indique :
Enregistrement avec prevlink incorrect du XXX... à ce moment là quand je lance le second test mais cette fois sans faire de rsync ça balance vers les 3 et c'est rapide.
Est-ce-que le fait de ne pas archiver peut causer ces problèmes là ?
J'ai fait des recherches sur enregistrement avec prevlink incorrect mais je ne comprend pas trop pourquoi j'obtient cette erreur sachant que quand je fait un rsync cette erreur disparait et j'obtient enregistrement de longueur nulle et les requêtes deviennent longue à s'executer.
Autre remarque : des fois à la fin de l'envoi de requetes SELECT par pgpool les deux standby m'indique que la reexection commence ( ça veut dire qu'a ce moment là il rejoue les WAL si j'ai bien compris ) et des fois ça ne le fait pas et justement quand ça me fait ça le load balancing reprend.

Merci pour ton aide Julien

#10 Re : Général » pg_stat_wait timeout » 19/08/2014 10:03:58

Bonjour ,

Je lance mon test a partir de Jmeter . J'execute des requêtes SELECT et INSERT sur ma base ! J'ai configuré Pgpool avec le mode load balancing=on  les  serveurs maitre et  esclaves ont le même poid ! Backend_weight0 1 et 2 sont a 1 . Au moment   ou je lance le test je regarde les logs de postgresql du maitre aucun message ne m'informe sur le problème que j'ai ,tout a l'air de bien se passer. Au tout début du test le IOwait est a 99% pour les 3 serveurs et il y'a beaucoup de lecture sur le disque pour les 3 serveurs mais après 2 min de test les deux esclaves se retablissent quand je fais vmstat j'obtient :

 procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa                                                                                
18  0   4916  21148   9704 2146788    0    0     0     0  519  629 99  1  0  0                                                                               
13  0   4916  20900   9704 2146788    0    0     0     0  756 1149 96  4  0  0                                                                               
17  0   4916  20404   9704 2146788    0    0     0     0  665  812 96  4  0  0                                                                               
18  0   4916  20280   9704 2146788    0    0     0     0  497  656 98  2  0  0                                                                               
17  0   4916  20156   9704 2146788    0    0     0     8  522  843 96  4  0  0                                                                               
17  0   4916  20156   9704 2146788    0    0     0     0  583  719 94  6  0  0                                                                               
14  0   4916  19784   9712 2146780    0    0     0    28  582  705 98                                                                                         2  0  0
16  0   4916  21884   9712 2144128    0    0     0     0  564  642 97  3  0  0
16  0   4916  21768   9712 2144136    0    0     0     0  507  736 93  7  0  0

même chose pour le deuxième esclave.

Mais pour le maitre je remarque que  le système attend beaucoup de I/O

 
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa      
 0 16   4884  20348   3608 2235836    0    0    67    11   43   69  0  0 98  2     
 0 17   4884  19232   3616 2237288    0    0  3048     0  205  342  0  1  0 99     
 0 17   4884  19976   3628 2236404    0    0  2804     0  216  337  2  0  0 98     
 0 18   4884  20472   3616 2235656    0    0  2800     0  189  327  1  1  0 98     
 0 18   4884  20596   3620 2235532    0    0  3468     0  198  296  0  1  0 99     
 0 18   4884  20100   3624 2236228    0    0  4052     0  194  306  1  1  0 98     
 0 18   4884  19976   3624 2236172    0    0  3616     0  210  302  0  0  0 100    
 0 18   4884  19356   3628 2236660    0    0  3128     0  224  334  2  2  0 96     
 0 18   4884  20472   3620 2235540    0    0  2616     0  201  332  1  0  0 99     
 0 18   4884  20472   3620 2235056    0    0  3000     0  178  306  0  1  0 99     
 1 17   4884  20224   3616 2235628    0    0  3820     0  188  302  1  0  0 99 

tout le temps occupé a 99 %


Quand je fait un iotop sur le maitre je remarque que les select lisent beaucoup sur le disque alors que pgpool n'envoi rien au maitre ou bien très très très peu.

iotop maitre
172.16.65.31 est l'adresse de pgpool. user_base est l'utilisateur de la base   ( base_2)

 
Total Disk Read : 2.99  M/S     | Total Disk write :  0.80  B/S
TID             PRIO        USER     DISK READ           DISK WRITE           SWAPIN     IO>    COMMAND 
22300          be/4       postgres     260.3 K/S             0.80 B/S                   0.09           99.99%    postgres: user_base base_2 172.16.65.31  (43954) SELECT   
22358          be/4       postgres     299.2 K/S             0.80 B/S                   0.09           99.99%    postgres: user_base base_2 172.16.65.31  (43954) SELECT  
22377         be/4       postgres     163.4 K/S             0.80 B/S                   0.09           99.99%    postgres: user_base base_2 172.16.65.31  (43954) SELECT  
22385         be/4       postgres     230.8 K/S             0.80 B/S                   0.09           89.99%    postgres: user_base base_2 172.16.65.31  (43954) SELECT  
......


Sur les logs de pgpool je voit bien que mes  requêtes sont distribué vers mes 2 esclave avec le même poids mais pas sur le maitre ! ( le maitre ne prend que quelques requêtes ).
Logs pgpool

 

Aug 19 09:45:02 vm1 pgpool[12355]: pool_send_and_wait: Error or notice message from backend: : DB node id: 2 backend pid: 23984 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-7-4 and period 6
Aug 19 09:45:02 vm1 pgpool[12328]: pool_send_and_wait: Error or notice message from backend: : DB node id: 1 backend pid: 7296 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-7-5 and period 3
Aug 19 09:45:02 vm1 pgpool[12355]: pool_send_and_wait: Error or notice message from backend: : DB node id: 2 backend pid: 23984 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-2-22 and period 5
Aug 19 09:45:02 vm1 pgpool[12328]: pool_send_and_wait: Error or notice message from backend: : DB node id: 1 backend pid: 7296 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-2-10 and period 5
Aug 19 09:45:02 vm1 pgpool[12315]: pool_send_and_wait: Error or notice message from backend: : DB node id: 1 backend pid: 7311 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-3-22 and period 4
Aug 19 09:45:02 vm1 pgpool[12300]: pool_send_and_wait: Error or notice message from backend: : DB node id: 2 backend pid: 23983 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-4-1 and period 4
Aug 19 09:45:02 vm1 pgpool[12326]: pool_send_and_wait: Error or notice message from backend: : DB node id: 1 backend pid: 7290 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-1-10 and period 3
......

Au moment du lancement de test :

Sur mes esclave 1 et 2

Par contre au tout début du test quand les 3 serveurs était bloqué , pgpool a envoyé quelques requêtes au maitre ( 5 SELECT) puis plusieurs aux deux eslaves puis il a afficher sur les logs
:

Aug 19 09:38:52 vm1 pgpool[12361]: pool_send_and_wait: Error or notice message from backend: : DB node id: 1 backend pid: 7314 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-2-2 and period 3
Aug 19 09:38:54 vm1 pgpool[12355]: pool_send_and_wait: Error or notice message from backend: : DB node id: 2 backend pid: 23984 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-5-12 and period 4
Aug 19 09:38:55 vm1 pgpool[12331]: pool_send_and_wait: Error or notice message from backend: : DB node id: 2 backend pid: 23963 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-3-16 and period 6
Aug 19 09:38:59 vm1 pgpool[12343]: pool_send_and_wait: Error or notice message from backend: : DB node id: 2 backend pid: 23995 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-2-22 and period 2
Aug 19 09:39:01 vm1 /USR/SBIN/CRON[12386]: (root) CMD (  [ -x /usr/lib/php5/maxlifetime ] && [ -d /var/lib/php5 ] && find /var/lib/php5/ -depth -mindepth 1 -maxdepth 1 -type f -ignore_readdir_race -cmin +$(/usr/lib/php5/maxlifetime) ! -execdir fuser -s {} 2>/dev/null \; -delete)
Aug 19 09:39:02 vm1 pgpool[12316]: pool_send_and_wait: Error or notice message from backend: : DB node id: 2 backend pid: 23977 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-3-13 and period 5
Aug 19 09:39:04 vm1 pgpool[12304]: pool_send_and_wait: Error or notice message from backend: : DB node id: 1 backend pid: 7287 statement:  select jmaplink_bench_query(6,5,2014) message: Performing query for date 2014-7-19 and period 2

Je ne pense pas que c'est un problème matériel parce que mon slave 2 a une disque qui est neuf

#11 Re : Général » pg_stat_wait timeout » 18/08/2014 15:05:35

Bonjour,
Effectivement quand je fait un iotop sur le maitre je remarque qu'il y'a trop de lecture sur le disque et c'est les requêtes que je lance avec jmeter à partir de pgpool qui font ces lectures là pourtant je ne vois aucune requête select passer par pgpool on regardant les  logs de  ce dernier c'est ce que je trouve étrange.
Mon disque à l'air de bien focntionner je ne comprend pas pourquoi je vois beaucoup de requêtes SELECT en lecture sur le disque et lecture  passer  alors que pgpool n'envoi rien du tout.

#12 Re : Général » pg_stat_wait timeout » 14/08/2014 15:00:31

Effectivement mon master ne bosse pas quand je lance mes  requêtes à partir de Jmeter tandis que le slave 1 et slave 2 bossent.
Quand je fais un top sur le master je remarque bien que le master ne bosse pas :

Master :

top - 14:53:12 up  2:41,  2 users,  load average: 15,46, 14,89, 7,53
Tasks: 111 total,   1 running, 110 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0,0 us,  0,0 sy,  0,0 ni,100,0 id,  0,0 wa,  0,0 hi,  0,0 si,  0,0 st
KiB Mem:   3009628 total,  2989700 used,    19928 free,     3436 buffers
KiB Swap:  2097148 total,     2028 used,  2095120 free,  2711084 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND              
    1 root      20   0 10648  692  652 S   0,0  0,0   0:00.82 init                 
    2 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kthreadd             
    3 root      20   0     0    0    0 S   0,0  0,0   0:00.30 ksoftirqd/0          
    4 root      20   0     0    0    0 S   0,0  0,0   0:00.41 kworker/0:0          
    5 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kworker/u:0          
    6 root      rt   0     0    0    0 S   0,0  0,0   0:00.00 migration/0          
    7 root      rt   0     0    0    0 S   0,0  0,0   0:00.04 watchdog/0           
    8 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 cpuset               
    9 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 khelper              
   10 root      20   0     0    0    0 S   0,0  0,0   0:00.00 kdevtmpfs            
   11 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 netns                
   12 root      20   0     0    0    0 S   0,0  0,0   0:00.00 xenwatch             
   13 root      20   0     0    0    0 S   0,0  0,0   0:00.00 xenbus               
   14 root      20   0     0    0    0 S   0,0  0,0   0:00.01 sync_supers          
   15 root      20   0     0    0    0 S   0,0  0,0   0:00.00 bdi-default          
   16 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kintegrityd          
   17 root       0 -20     0    0    0 S   0,0  0,0   0:00.00 kblockd 

ainsi le vmstat 1 en plein test  me donne les statistiques :
Master :

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0 13   2024  20732   2676 2783540    0    0   698     4  185  227  4  1 87  9
 0 13   2024  19988   2680 2784372    0    0  3692     0  205  347  1  1  0 98
 0 14   2024  19740   2688 2784572    0    0  3400     0  198  303  0  1  0 99
 0 14   2024  19740   2696 2784564    0    0  3832     0  207  313  1  0  0 99
 0 14   2024  19120   2696 2784988    0    0  3200     0  373  388 31  3  0 66
 0 14   2024  19244   2700 2784916    0    0  2836     0  192  303  2  2  0 96
 0 13   2024  20608   2708 2783080    0    0  3528     0  212  351  0  2  0 98
 0 14   2024  20236   2708 2783836    0    0  3752     0  231  296  1  1  0 98
 0 13   2024  19740   2712 2784064    0    0  3564     0  224  315  1  1  0 98

tandis que le vmstat 1 du slave :

 

procs -----------memory---------- ---swap-- -----io---- -system-- ----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us s
20  0   6120  21392  31528 2709436    1    2   240   356  103  131  4 
20  0   6120  21268  31528 2709436    0    0     0     0  545  482 98 
20  0   6120  21268  31528 2709436    0    0     0     0  667  726 99 
20  0   6120  21128  31528 2709436    0    0     0     0  620  660 97 
20  0   6120  21136  31528 2709436    0    0     0     0  549  528 98 
20  0   6120  21136  31528 2709436    0    0     0     0  587  649 97 
20  0   6120  21136  31536 2709428    0    0     0    16  738  925 97 

Ce que je ne comprend pas c'est pourquoi le master ne veut plus bosser et me fait pg_stat_timeout et puis pgpool ne veux plus balancer la requête vers le master il ne balance que vers les deux slaves.
Je remarque que le BI est beaucoup plus supérieur que les slaves c'est la seul différence ce qui confirme que j'ai beaucoup d'entrées et sorties sur mon système
je ne vois pas comment remédier à cela

#13 Re : Général » pg_stat_wait timeout » 14/08/2014 13:13:19

Merci pour votre réponse.
Effectivement j'ai vu les stat du système sur mes 3 machines , et je me rend compte que sur mon master ou le disque est saturée active memory est a bloc alors que sur mes deux autres standby qui fonctionne bien il y'a beaucoup de mémoire inactive.
A votre avis comment remédier a cela pour que je puisse continuer mes tests ?
Voila ce que me donne la commande vmstat -s
Sur le master

 3009628 K total memory
      2983356 K used memory
      2432432 K active memory
       508836 K inactive memory
        26272 K free memory
         5948 K buffer memory
      2927996 K swap cache
      2097148 K total swap
         2052 K used swap
      2095096 K free swap
        33567 non-nice user cpu ticks
            0 nice user cpu ticks
         3724 system cpu ticks
       186557 idle cpu ticks
        57095 IO-wait cpu ticks
            1 IRQ cpu ticks
          280 softirq cpu ticks
          149 stolen cpu ticks
      5671177 pages paged in
        34600 pages paged out
            0 pages swapped in
          514 pages swapped out
      1538692 interrupts
      1778698 CPU context switches
   1408011094 boot time
         2808 forks

Sur le slave :

 
3009628 K total memory
      2982936 K used memory
       738908 K active memory
      2143864 K inactive memory
        26692 K free memory
        23376 K buffer memory
      2849936 K swap cache
            0 K total swap
            0 K used swap
            0 K free swap
       727972 non-nice user cpu ticks
            0 nice user cpu ticks
        93971 system cpu ticks
      7681360 idle cpu ticks
       165598 IO-wait cpu ticks
            4 IRQ cpu ticks
         2255 softirq cpu ticks
          576 stolen cpu ticks
     26033073 pages paged in
     51266144 pages paged out
            0 pages swapped in
            0 pages swapped out
     15172765 interrupts
     18458776 CPU context switches
   1407927019 boot time
        25334 forks

Effectivement je voit que le master utilise beaucoup de mémoire .
Pareil dans /proc/meminfo

#14 Général » pg_stat_wait timeout » 14/08/2014 11:38:02

yassine199105
Réponses : 22

Bonjour ,
Je lance des tests avec jmeter  sur mes  serveurs en streaming réplication 1 maitre et 2 esclaves en changeant de configuration a chaque fois  après plusieurs tests pgpool ne fait plus le load balancing correctement et mon serveur maitre me renvoi un warning pg_stat_wait timeout j'ai pas mal chercher sur google mais je n'ai pas trouver de réponse qui m'aide vraiment a trouver une solution a mon problème, chaque test que je fait  lance environ 17 000 requête select et 70 000 insert en faisant un rollback derrière pour les insert.
A priori il y'a trop d'entrées et sorties sur mon système ou bien le disque est saturé j'ai essayer de rebooter la machine mais rien à faire mes  requêtes deviennent lente quand j'ai ce message de  warning s'affiche, mon fichier pgstat.stat ne fait que 76K sur  /var/lib/postgresql/9.1/main/pg_stat_tmp/pgstat.stat.
Merci pour votre aide.

#15 Re : Site PostgreSQL.fr » Problème avec failover » 21/07/2014 12:38:58

En fait je ne vois pas la procédure globale qu'il faut faire après un failover :
Voilà ce que j'ai fait et ça ne marche pas :
j'ai un serveur pgpool et 3 serveurs postgres ( 1 master / 2 standby ) lorsque je stoppe le master, pgpool fait le failover.
vm3 : premier standby ( qui va devenir maitre après failover)
vm5:deuxieme standby
192.17.30.34: c'est le master avant failover
Dans le maitre j'ai

archive_command = 'test ! -f /var/lib/postgresql/9.1/archiving_active || cp -i %p /var/lib/postgresql/9.1/archive/%f'

archiving_active est un fichier vide que j'ai  créer dans le répertoire  /var/lib/postgresql/9.1/archive ( je n'ai pas compris comment faire pour l'archive )
le script que sebastien  m'a donné je n'ai pas trop compris ce qu'il fallait remplacer et ou mettre le chemin dans le script :

#!/bin/sh
# Shell d'archive_command standby
CLUSTER=$1
CHEMIN=$2
FICHIER=$3
ARCHIVE1=/${CLUSTER}_1/archive
ARCHIVE2=/${CLUSTER}_2/archive
LOGFILE=/${CLUSTER}_1/admin/${CLUSTER}_arch_process.log
cp $CHEMIN $ARCHIVE1/$FICHIER >>/${LOGFILE} 2>&1
ret=$?
cp $ARCHIVE1/$FICHIER $ARCHIVE2/$FICHIER >>/${LOGFILE} 2>&1
#mettre ici tous les noeuds primary et slaves :
rsync -a $CHEMIN postgres@192.17.30.34:$ARCHIVE1/$FICHIER >>/${LOGFILE} 2>&1
rsync -a $CHEMIN postgres@192.17.30.35:$ARCHIVE1/$FICHIER >>/${LOGFILE} 2>&1
let ret=$ret+$?
exit $ret 

Est-ce ce script là qui permet l'archivage des WAL ?

Voila mon script failover.sh

FAILED_NODE=$1
OLD_MASTER=$2
NEW_MASTER=$3
vm3='192.17.30.35'
vm5=192.17.30.39'
if test $FAILED_NODE -eq 0
then
ssh -T $vm3 touch /tmp/pgsql.trigger
ssh -T $vm3 "while test ! -f /var/lib/postgresql/9.1/main/recovery.done; do sleep 1; done; scp /var/lib/postgresql/9.1/main/pg_xlog/*history* $vm5:/var/lib/postgresql/9.1/main/pg_xlog/"
ssh -T $vm5 "sed -i 's/192.17.30.34/192.17.30.35/' /var/lib/postgresql/9.1/main/recovery.conf"
ssh -T $vm5 /etc/init.d/postgresql restart
/usr/sbin/pcp_attach_node 10 localhost 9898 pcp pcp 2
fi
~        

Sur pgpool.conf j'ai :

 failover_command = '/var/lib/postgresql/bin/failover.sh %d %M %m'  

Une fois après avoir fait ça quand je vais sur le premier standby, je remarque bien qu'il est devenue maitre et que le recovery.conf est devenue recovery.done
donc j'ai transférer le fichier de conf du standby2 a l'ancien maitre et j'ai créer dans l'ancien maitre le recovery.conf pour qu'il devienne standby après j'ai un rsync du nouveau maitre avec l'ancien maitre ( qui est esclave maintenant) :

 rsync --exclude pg_xlog -av --delete /var/lib/postgresql/9.1/main/ root@192.17.30.34:/var/lib/postgresql/9.1/main/ 

les autorisation de connexions sont bien mentionnés dans le pg_hba des 3 serveurs.
est-ce-qu'il manque quelquechose ou bien je me suis trompé quelque part ?
Ce que je voudrais savoir aussi c'est comment rétablir la réplication après avoir fait le failover c'est a dire pouvoir répliquer a partir du nouveau master vers l'ancien maitre ( qui est standby) et le standby2 ?
Merci pour votre aide.

#16 Re : Site PostgreSQL.fr » Problème avec failover » 21/07/2014 11:56:42

Bonjour,

Effectivement j'ai lu les docs de postgresql et j'ai vu qu'il fallait reconstruire entièrement l'esclave, mais est-ce-possible de faire ça avec le online recovery à partir du nouveau maitre ?
ou bien il faut  reconstruire manuellement  l'ancien maitre après l'avoir démarré en créant le recovery.conf et postgresql.conf du standby et en synchronisant le nouveau maitre avec l'ancien maitre ( qui est maitenant esclave) ?

#17 Re : Site PostgreSQL.fr » Problème avec failover » 18/07/2014 16:02:16

Je ne sais pas ou se trouve le chemin vers les archives et je ne vois pas a quel partie du script remplacer ce chemin !
Pourquoi avant que je ne fasse le failover tout marchait bien sans que je ne fasse ça ?

 #!/bin/sh
# Shell d'archive_command standby
CLUSTER=$1
CHEMIN=$2
FICHIER=$3
ARCHIVE1=/${CLUSTER}_1/archive
ARCHIVE2=/${CLUSTER}_2/archive
LOGFILE=/${CLUSTER}_1/admin/${CLUSTER}_arch_process.log
cp $CHEMIN $ARCHIVE1/$FICHIER >>/${LOGFILE} 2>&1
ret=$?
cp $ARCHIVE1/$FICHIER $ARCHIVE2/$FICHIER >>/${LOGFILE} 2>&1
#mettre ici tous les noeuds primary et slaves :
rsync -a $CHEMIN postgres@192.17.30.34:$ARCHIVE1/$FICHIER >>/${LOGFILE} 2>&1
rsync -a $CHEMIN postgres@192.17.30.35:$ARCHIVE1/$FICHIER >>/${LOGFILE} 2>&1
rsync -a $CHEMIN postgres@192.17.30.39:$ARCHIVE1/$FICHIER >>/${LOGFILE} 2>&1
let ret=$ret+$?
exit $ret 

Je vous remercie encore une fois pour votre aide .

#18 Re : Site PostgreSQL.fr » Problème avec failover » 18/07/2014 12:43:40

j'ai la même version de postgres partout , les même paquet partout , je travaille avec la version postgresql 9.1
quand je fait

 dpkg -l |grep postgres 

je trouve les mêmes paquets partout.
Pour le script archive_command_standby.sh  qu'est ce qu'il y'a a changer a part les adresses IP pour le rsync ?
Pour les archives c'est que pg_xlog ?
merci beaucoup pour votre aide

#19 Re : Site PostgreSQL.fr » Problème avec failover » 18/07/2014 12:36:10

root@vm2:/etc/postgresql/9.1/main# rpm -qa |grep postgres 
-bash: rpm : commande introuvable

#20 Re : Site PostgreSQL.fr » Problème avec failover » 18/07/2014 11:36:51

Je n 'ai pas mis archive_commande car avant que je ne fasse le failover je n'avais pas fait ça, et la réplication marchait  bien, maintenant je veux juste revenir comme avant.
comment je peux configurer tout ça ? je suis un peu perdu
sur mon premier standby je ne peux pas executer

select * from pg_settings where name ='hot_standby';

car je n'ai meme pas acces a la base par contre le standby 2 qui marche parfaitement et fait de la réplication avec le master voilà le resulat :

postgres=# select * from pg_settings where name ='hot_standby';
    name     | setting | unit |           category            |                   short_desc                    | extra_desc |  context   | vartype |       s
ource       | min_val | max_val | enumvals | boot_val | reset_val |                sourcefile                | sourceline 
-------------+---------+------+-------------------------------+-------------------------------------------------+------------+------------+---------+--------
------------+---------+---------+----------+----------+-----------+------------------------------------------+------------
 hot_standby | on      |      | Replication / Standby Servers | Allows connections and queries during recovery. |            | postmaster | bool    | configu
ration file |         |         |          | off      | on        | /etc/postgresql/9.1/main/postgresql.conf |        210
(1 lig 

sur le master :

 
postgres=# select * from pg_settings where name ='archive_mode';
     name     | setting | unit |          category           |                      short_desc                      | extra_desc |  context   | vartype | sou
rce  | min_val | max_val | enumvals | boot_val | reset_val | sourcefile | sourceline 
--------------+---------+------+-----------------------------+------------------------------------------------------+------------+------------+---------+----
-----+---------+---------+----------+----------+-----------+------------+------------
 archive_mode | off     |      | Write-Ahead Log / Archiving | Allows archiving of WAL files using archive_command. |            | postmaster | bool    | def
ault |         |         |          | off      | off       |            |           
(1 ligne)

je suis vraiment bloqué et perdu ( ça fait qu'un mois que j'ai commencer postgres )
Je vous   remercie de votre compréhension.
J'ai lu beaucoup de documents mais ce n'est jamais suffisant smile

#21 Re : Site PostgreSQL.fr » Problème avec failover » 18/07/2014 09:58:49

et sur pgpool :
le statut du noeud 1  192.17.30.35 est toujours 3 ( down) meme si je fais un pcp_attach_node

#22 Re : Site PostgreSQL.fr » Problème avec failover » 18/07/2014 09:52:23

Bonjour,
Je vous montre ma configuration :


le fichier postgresql de l'esclave :
les différences entre les deux sont :

80c80
< #ssl = true                           # (change requires restart)
---
> ssl = true                            # (change requires restart)
154d153
< 
166c165
< wal_buffers =-1                       # min 32kB, -1 sets based on shared_buffers
---
> wal_buffers = -1                      # min 32kB, -1 sets based on shared_buffers
197c196
< max_wal_senders = 3           # max number of walsender processes
---
> max_wal_senders =3            # max number of walsender processes
211c210
< hot_standby = on                      # "on" allows queries during recovery
---
> hot_standby = off                     # "on" allows queries during recovery
245c244
< #random_page_cost = 4.0                       # same scale as above
---
> random_page_cost = 4.0                        # same scale as above
277c276
< log_destination = 'stderr'            # Valid values are combinations of
---
> #log_destination = 'stderr'           # Valid values are combinations of
399c398< log_statement = 'all'                 # none, ddl, mod, all
---
> log_statement = 'none'                        # none, ddl, mod, all

Sur le standby le fichier recovery.conf : /var/lib/postgresql/9.1/main/recovery.conf

 standby_mode = 'on'
  primary_conninfo = 'host=192.17.30.34 port=5432 user=replicator password=rep  '
  trigger_file = '/tmp/pgsql.trigger'

Sur le fichier pg_hba du maitre et l'esclave tout les autorisation de connexion sont mentionné.

Sur mon maitre je fais un rsync

 rsync --exclude pg_xlog -av --delete /var/lib/postgresql/9.1/main/ root@192.17.30.35:/var/lib/postgresql/9.1/main/ 

Sur les log du standby on me donne pas grand information :

2014-07-18 09:25:04 CEST LOG:  paquet de d?marrage incomplet
2014-07-18 09:25:04 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:05 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:05 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:06 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:06 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:07 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:07 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:08 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:08 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:09 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:25:09 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:25:09 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:10 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-18 09:25:10 CEST LOG:  paquet de d?marrage incomplet
2014-07-18 09:25:14 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
 
2014-07-18 09:49:00 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:00 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:05 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:05 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:10 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:10 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:15 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:15 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:20 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:20 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:25 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:25 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:30 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:30 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:35 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:35 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:40 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:40 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:45 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-18 09:49:45 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.
2014-07-18 09:49:50 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente

Cette erreur il a fait en continue chaque 5 seconde je la voi apparaitre sur les logs

Sachant que cette même configuration marchait parfaitement avant que je ne fasse le failover !

#23 Re : Site PostgreSQL.fr » Problème avec failover » 17/07/2014 14:15:44

j'ai vérifier les droits tout est ok.
j'ai fait :

 chown -R postgres: /var/lib/postgresql/9.1/main/ et  chown -R postgres: /etc/postgresql/9.1/main 

Le meme problème survient.

2014-07-17 14:14:40 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente
2014-07-17 14:14:40 CEST D?TAIL:  L'identifiant du serveur principal est 6029142299729714430, l'identifiant du serveur en attente
        est 6036952324097693111.

#24 Re : Site PostgreSQL.fr » Problème avec failover » 17/07/2014 12:34:41

et quand je veux me connecter a postgres il ne veut pas :

root@vm3:/var/lib/postgresql/9.1/main# su - postgres 
postgres@vm3:~$ psql -lt
psql: FATAL:  le syst?me de bases de donn?es se lance
postgres@vm3:~$ 

#25 Re : Site PostgreSQL.fr » Problème avec failover » 17/07/2014 12:22:44

Bonjour ,
J'ai  fait tout ça mais rien du tout.
J'ai supprimer postgresql et je l'ai réinstaller.
J'ai remis les configuration qu'il faut pour la streaming replication et la connexion avec pgpool comme  avant.
le serveur démarre mais ne fait pas de replication, quand je regarde les log je trouve :

2014-07-17 12:18:52 CEST FATAL:  le syst?me de bases de donn?es se lance
2014-07-17 12:18:53 CEST FATAL:  l'identifiant du syst?me de bases de donn?es diff?re entre le serveur principal
        et le serveur en attente

Merci pour votre aide.

Pied de page des forums

Propulsé par FluxBB