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 27/06/2012 01:19:21

MitsuTomoe
Membre

Réplication sur serveur dvpt

Bonjour,
pour tester la réplication avec postgres, j'aurais voulu utiliser notre serveur de dvpt comme standby.
Il y a très peu de màj en production (pour l'instant), donc la charge ne devrait pas être un problème.
Mais je me demande s'il est possible d'avoir une base de dvpt et une base de secours (du serveur de prod) au même endroit.
Faut-il lancer 2 serveurs pg ?
L'acces à la base de prod est dans recovery.conf, mais je ne vois pas comment le standby sait quelle est la base de secours ?
Des variables quelque part ? Ou la réplication se fait-elle au niveau du cluster ? Je n'ai pas encore tout bien compris...

Hors ligne

#2 27/06/2012 01:25:15

rjuju
Administrateur

Re : Réplication sur serveur dvpt

Bonjour,
la réplication interne de postgres se faisant sur l'instance entière, vous devrez configurer 2 serveurs sur la même machine. Cela se fait très bien, veillez juste à bien configurer la mémoire pour ne pas dépasser la quantité disponible et changer le port sur le nouveau serveur.
Et donc pour votre 2ème question comme dit plus haut c'est l'instance entière qui est répliquée, pas le choix dans les bases.

Dernière modification par rjuju (27/06/2012 01:25:58)

Hors ligne

#3 27/06/2012 11:06:33

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Merci beaucoup pour cet éclaircissement.

Hors ligne

#4 01/07/2012 22:55:34

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Ca marche ! J'ai ajusté shared_buffers pour les 2 clusters afin de ne pas épuiser les petits 2 Go du serveur de dvpt.

postgres@ks3001539:~$ ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
postgres 14272  0.2  0.6 170412 12432 ?        S    22:37   0:01 /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/secours -c config_file=/etc/postgresql/9.1/secours/postgresql.conf
postgres 14273  0.4  0.1 170468  3224 ?        Ss   22:37   0:03 postgres: startup process   recovering 000000010000000B00000013                                                                   
postgres 14274  0.0  0.1 170396  2648 ?        Ss   22:37   0:00 postgres: writer process                                                                                                         
postgres 14275  0.0  0.0  95628  1680 ?        Ss   22:37   0:00 postgres: stats collector process                                                                                                 
postgres 14296  0.2  1.3 513604 27732 ?        S    22:38   0:01 /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -c config_file=/etc/postgresql/9.1/main/postgresql.conf
postgres 14342  0.0  0.2 513792  5028 ?        Ss   22:38   0:00 postgres: writer process                                                                                                   
postgres 14343  0.0  0.0 513800  1688 ?        Ss   22:38   0:00 postgres: wal writer process                                                                                               
postgres 14344  0.0  0.1 514776  3256 ?        Ss   22:38   0:00 postgres: autovacuum launcher process                                                                                       
postgres 14345  0.0  0.0  95780  1996 ?        Ss   22:38   0:00 postgres: stats collector process                                                                                           
postgres 14414  0.0  0.1 175396  3404 ?        Ss   22:39   0:00 postgres: wal receiver process   streaming B/13A53988

Hors ligne

#5 02/07/2012 08:11:04

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Bonjour,
la réplication fonctionne parfaitement, mais je me pose des questions sur les procédures de reprise.
1) Le master ne fonctionne plus ==> je crée le fichier trigger sur le slave, qui est du coup promu nouveau master
2) Du temps se passe durant lequel des transactions ont lieu sur le secours
3) le master est prêt à redémarrer : que faire pour récupérer les transactions passées sur le secours ?
Configurer l'ancien master en standby, récupérer le répertoire data du secours, démarrer, puis le promouvoir comme maître ?
Je suis en 9.1.4 sur 2 serveurs Ubuntu 12.04 .

Merci de votre aide

Hors ligne

#6 02/07/2012 09:52:04

rjuju
Administrateur

Re : Réplication sur serveur dvpt

Il faut reconstruire le data de l'ancien master. Si vous avez la possibilité, le plus rapide serait surement un pg_start_bckup, rsync du data du nouveau maître puis pg_stop_backup. Si la taille de la base n'est pas trop importante, vous pouvez utiliser pg_basebackup sur l'ancien master qui reconstruira entièrement le data pour vous.

Hors ligne

#7 02/07/2012 09:54:59

Marc Cousin
Membre

Re : Réplication sur serveur dvpt

3) le master est prêt à redémarrer : que faire pour récupérer les transactions passées sur le secours ?

Il faut qu'il soit esclave du secours, ce qui lui permettra de récupérer les transactions manquantes. Ensuite, il faudra basculer sur lui, et reconstruire l'esclave. Dans ce genre de condition, un coup de rsync est souvent bien plus efficace qu'un pg_basebackup, étant donné le peu de données à rejouer sur la machine qu'on veut remonter comme esclave, alors que quelques secondes auparavant elle était maître.


Marc.

Hors ligne

#8 02/07/2012 10:19:43

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Merci à vous deux, je ferai une simulation de crash un de ces soirs.

Hors ligne

#9 04/07/2012 23:42:44

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Bonsoir,
En cherchant une solution d'automatisation du passage en mode secours (création du fichier failover), je suis tombé sur pgpool-II
et pgpooladmin . Connaissez-vous ces outils et sont-ils adaptés :
- pour faire du load balancing (select sur le secours)
- pour passer en secours sans intervention humaine ?
D'après le wiki, la version 3.2 encore en développement comprend un watchdog, ce qui était ma recherche initiale.
SInon, j'ai vu heartbeat, mais ça a l'air démesuré par rapport à mes besoins.

Hors ligne

#10 05/07/2012 10:02:11

Marc Cousin
Membre

Re : Réplication sur serveur dvpt

En théorie, oui. En pratique, pgpool est assez sensible à mettre en œuvre, on y rencontre fréquemment des bugs, surtout quand on essaye de mixer plusieurs modes: répartition de requête+failover par exemple.


Marc.

Hors ligne

#11 05/07/2012 10:41:52

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Si je laissais tomber le load balancing pour l'instant, que serait la solution la plus simple
pour créer automatiquement le fichier trigger en cas de défaillance du master ?
J'avais imaginé un shell dans crontab toutes les x mn, qui essaie de se connecter à la base de prod et crée
le fichier trigger en cas d'échec (+ envoi mail avec ssmtp). Qu'en pensez-vous ?

Hors ligne

#12 05/07/2012 10:55:53

kenrio
Membre

Re : Réplication sur serveur dvpt

Vous voulez faire un trigger pour empêcher les mise à jour si le fail over a été effectué ?

autant mettre slony tongue

Hors ligne

#13 05/07/2012 22:12:22

gleu
Administrateur

Re : Réplication sur serveur dvpt

Si, à la moindre mini-coupure réseau, vous provoquez un "promote" de l'esclave, vous n'avez pas fini de reconstruire votre esclave smile

heartbeat peut être une solution, mais j'avoue avoir peu confiance dans les solutions automatisées.


Guillaume.

Hors ligne

#14 06/07/2012 09:33:21

kenrio
Membre

Re : Réplication sur serveur dvpt

je suis d'accord avec Gleu, des fois il vaut mieux que tout soit gérer par l'homme ^^

Hors ligne

#15 06/07/2012 10:09:17

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Vous me conseilleriez plutôt de me contenter d'envoyer un mail ?
Pour l'instant, voici mon script :

#!/bin/sh
DATE=$(date +%Y-%m-%d-%H-%M)
msg=" $DATE  Base xxxx sur xx.xx.xx.xx ne répond pas"
rm -f /var/lib/postgresql/prod_ok.log
psql -h xx.xx.xx.xx xxx -f test_live.sql -q -o prod_ok.log
if grep -q "?column?"  /var/lib/postgresql/prod_ok.log
    then
        echo "$DATE : Prod OK"
    else
        echo "$DATE : Prod en panne"
        echo $msg|ssmtp xx@xx.fr xx@xx.fr
        touch /var/lib/postgresql/9.1/secours/failover
fi

Le script sql fait juste select 1 .

Hors ligne

#16 06/07/2012 10:11:05

kenrio
Membre

Re : Réplication sur serveur dvpt

et un vrai serveur de monitoring ?

Hors ligne

#17 06/07/2012 10:34:32

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Pour l'instant la société est en pleiin démarrage, je cherche une solution simple et peu coûteuse,
quitte à faire quelques compromis. Dans quelques mois, avec la montée en charge (et les rentrées financières correspondantes smile ),
nous pourrons faire mieux. Pour ma culture personnelle, un serveur de monitoring serait dédié à la surveillance du bon fonctionnement
du serveur de production ? Ce n'est pas un peu lourd ? Qu'est-ce que ça ferait de mieux que mes 10 lignes de script ?

Hors ligne

#18 06/07/2012 10:52:15

gleu
Administrateur

Re : Réplication sur serveur dvpt

Pour ma culture personnelle, un serveur de monitoring serait dédié à la surveillance du bon fonctionnement
du serveur de production ?

Oui, mais avec un seul serveur dans votre cas, ce n'est pas vraiment intéressant.

Ce n'est pas un peu lourd ?

Pas quand on a plusieurs serveurs à superviser. Quand on en a un ou deux, c'est un peu trop. Il vaut mieux dans ce cas installer munin.

Qu'est-ce que ça ferait de mieux que mes 10 lignes de script ?

Surveiller des tas d'autres problématiques que la simple indisponibilité d'un serveur.


Guillaume.

Hors ligne

#19 06/07/2012 10:53:43

kenrio
Membre

Re : Réplication sur serveur dvpt

bah un serveur de monitoring, ça check tout ce que vous lui demandez, postgres, cpu, dd, ram, ... envois de mail, avec des modules des sms, ça envois pas sur une erreur, mais sur un certain nombre, donc pas d'envois de mails pour rien...
Mais le script vous le mettez sur quel serveur ?

après c'est vrai que pour 2 serveurs ça fait beaucoup, mais un admin système doit savoir faire ça

Dernière modification par kenrio (06/07/2012 10:54:51)

Hors ligne

#20 06/07/2012 11:23:51

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Le script tourne sur le dvpt.
Pour l'instant nous avons 2 serveurs : dvpt et prod . J'ai mis le cluster de secours sur le serveur de dvpt
pour l'instant, mais c'est plus une démonstration de faisabilité qu'un vrai secours.
Il est prévu d'avoir un serveur dédié vers la rentrée, la montée en charge va se faire entre la fin juillet et début septembre.
Je suis de mon côté en pleine autoformation sur PostgreSQL et Ubuntu, en espérant être à la hauteur le moment venu.
Vivement qu'on ait besoin de 30 serveurs avec réplication en cascade smile !

Hors ligne

#21 06/07/2012 11:34:34

kenrio
Membre

Re : Réplication sur serveur dvpt

Je serais parti sur un centos avec un postgresql 9.1 à ta place.
Ubuntu pour du serveur c'est pas le mieux.

Hors ligne

#22 06/07/2012 13:28:51

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Pour l'instant ça marche nickel, et il y a postgresql 9.1.4 sur les deux.
Quelles sont les limitations/problèmes de Ubuntu 12.04 en serveur ?

Hors ligne

#23 06/07/2012 14:13:56

kenrio
Membre

Re : Réplication sur serveur dvpt

Perso je préfère centos pour ça liaison avec red hat tout simplement, chez HP ils font souvent des drivers pour redhat donc qui fonctionnent avec Centos.
Après je suppose que c'est une histoire de gout et de réputation.

pour le postgresql je confondais avec un autre topic en 8.4.

Hors ligne

#24 07/07/2012 18:49:43

MitsuTomoe
Membre

Re : Réplication sur serveur dvpt

Il n'y a pas eu vraiment d'étude scientifique pour le choix de l'OS . Les développeurs connaissaient Ubuntu, j'ai un lourd passé OpenVMS/RDB .
En cherchant un peu j'ai vu que le dvpt avait l'air dynamique sur Ubuntu, alors que centos est en standby pendant des mois
lorsqu'une nouvelle RHEL sort. Le projet d'entreprise se veut novateur et sans cesse remis en question pour bénéficier de
nouvelles technologies, ça m'a semblé coller. Ca fait 6 mois maintenant, et je me sens assez à l'aise avec Ubuntu, plus
trop envie de changer .

Hors ligne

Pied de page des forums