Vous n'êtes pas identifié(e).
Bonjour,
J'ai bien compris ce que vous avez dis, mais quand je fais ça manuellement ça ne marche pas.
je me met sur mon master et j'execute
rsync --exclude pg_xlog -av --delete /var/lib/postgresql/9.1/main/ root@192.17.30.35:/var/lib/postgresql/9.1/main/
le 192.17.30.35 c'est mon standby qui ne veut plus répliquer, la conf est bonne j'ai mon recovery.conf la conf postgresql est bonne.
quand je vois les log de ce standby il me donne :
2014-07-17 10:33:09 CEST FATAL: le timeline 1 du serveur principal ne correspond pas au timeline 3 de la
cible de restauration
ma config est :
postgres=# show pool_nodes;
node_id | hostname | port | status | lb_weight | role
---------+--------------+------+--------+-----------+---------
0 | 192.17.30.34 | 5432 | 2 | 0.333333 | primary
1 | 192.17.30.35 | 5432 | 3 | 0.333333 | standby
2 | 192.17.30.39| 5432 | 2 | 0.333333 | standby
Je vous remercie pour votre réponse.
Comment faire alors pour tenir le deuxième standby au courant ? comment faire pour avoir la même configuration qu'avant mais avec un nouveau maitre, tout en rallumant l'ancien maitre que j'avais coupé.
Sans le recovery.conf comment le nouveau maitre va savoir qu'il doit communiquer avec l'autre standby et l'ancien maitre que j'ai rallumer.
est ce possible après un failover de retrouver les mêmes propriétés qu'avant mais avec un nouveau maitre c'est a dire :
je fais un failover je rallume l'ancien maitre que j'ai fait tomber.Le nouveau maitre doit avoir les wal sender vers le deuxieme standby et l'ancien maitre que j'ai rallumé.
Et par rapport a pgpool2 est ce qu'il peut gérer tout ça car j'ai vu le pcp_promote_node .
Merci
Bonjour ,
Je viens de débuter avec postgresql, et j"ai un problème.
J'ai 4 machines sur lesquels j'ai installer Debian wheezy 7.1 , sur chaque une de ces machines j'ai installer des vm avec xen.
1 ere machine : j'ai installer pgpool dessus
2 eme machine : j'ai installer postgresql et c'est le serveur maitre
3eme machine : j'ai installer postgresql et c'est le serveur standby1
4eme machine : j'ai installer postgresql et c'est le serveur standby2
j'ai mis en place la réplication ça marche nickel, quand je fait un : ps -u postgres u
postgres 421 0.0 0.0 19484 1616 pts/0 S juil.09 0:00 -su
postgres 474 0.0 0.0 74772 2532 pts/0 S+ juil.09 0:00 /usr/lib/postgresql/9.1/bin/psql
postgres 11126 0.0 1.3 833020 41056 ? S 15:13 0:02 /usr/lib/postgresql/9.1/bin/postgres -D /var/lib/postgresql/9.1/main -c config_file=/etc/pos
postgres 11128 0.0 0.2 833376 7172 ? Ss 15:13 0:00 postgres: writer process
postgres 11129 0.0 0.0 833376 2240 ? Ss 15:13 0:00 postgres: wal writer process
postgres 11130 0.0 0.1 834364 3456 ? Ss 15:13 0:00 postgres: autovacuum launcher process
postgres 11131 0.0 0.0 73812 2216 ? Ss 15:13 0:00 postgres: stats collector process
postgres 11139 0.0 0.1 834356 3504 ? Ss 15:13 0:00 postgres: wal sender process replicator 192.17.30.35(60122) streaming 2/DBD84168
postgres 11139 0.0 0.1 834356 3504 ? Ss 15:13 0:00 postgres: wal sender process replicator 1992.17.30.39(60122) streaming 2/DBD84168
j'ai tester la réplication en créer une base sur le maitre, ca se réplique bien vers les deux esclaves ( les esclaves ne sont accessible qu'en lecture)
A ce moment là j'ai voulu faire le failover sur pgpool
donc j'ai créer un repertoire ou j'ai mis ce script là :
FAILED_NODE=$1
OLD_MASTER=$2
NEW_MASTER=$3
vm3='172.16.65.35'
vm5='172.16.65.39'
if test $FALLING_NODE -eq 0
then
ssh -T $vm3 touch /tmp/pgsql.trigger
ssh -T $vm5 "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/172.16.65.34/172.16.65.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
~
sans oublier de mettre le parametre (failover_command = '/var/lib/postgresql/bin/failover.sh %d %M %m') sur pgpool.conf
quand j'ai fait tomber le maitre /etc/init.d/postgresql stop
le standby1 est devenue maitre mais la réplication ne marchait pas à partir du standby, c'est a dire que quand je tape ps -u postgres u je n'obtient pas comme ce que j'avais dans le maitre c'est a dire :
postgres 11139 0.0 0.1 834356 3504 ? Ss 15:13 0:00 postgres: wal sender process replicator 192.17.30.35(60122) streaming 2/DBD84168
postgres 11139 0.0 0.1 834356 3504 ? Ss 15:13 0:00 postgres: wal sender process replicator 1992.17.30.39(60122) streaming 2/DBD84168
sur /var/lib/postgresql/p.1/main/ : il n'y avait plus de fichier recovery.conf mais un fichier recovery.done ( je n'ai pas trop compris ça )
j'ai voulu revenir à l'etat précedent sans réussite, donc j'ai supprimer postgresql et réinstaller mais tout n'a pas été supprimé et j'ai garder mes fichiers de conf de postgres a savoir postgresql.conf et recovery.conf que j'avais recréer puisque il y'avait la meme chose sur recovery.done
quand je redémarrer postgresql il ne voulait pas il me disait il y'a un autre processus qui écoute sur le meme port donc j'ai eteint ma vm et je l'ai redemarrer .
quand je redémarre postgres il se redémarre normalement mais quand je check la replication sur mon serveur maitre (comme à l'etat d'origine ) ça ne marche pas.
quand je voi les log du standby1 c'est marqué :
014-07-16 17:00:55 CEST LOG: instruction : SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
d.datcollate as "Collate",
d.datctype as "Ctype",
pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
2014-07-16 17:00:56 CEST LOG: instruction : SELECT d.datname as "Name",
pg_catalog.pg_get_userbyid(d.datdba) as "Owner",
pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding",
d.datcollate as "Collate",
d.datctype as "Ctype",
pg_catalog.array_to_string(d.datacl, E'\n') AS "Access privileges"
FROM pg_catalog.pg_database d
ORDER BY 1;
2014-07-16 17:00:59 CEST FATAL: le timeline 1 du serveur principal ne correspond pas au timeline 3 de la
cible de restauration
2014-07-16 17:01:04 CEST FATAL: le timeline 1 du serveur principal ne correspond pas au timeline 3 de la
cible de restauration
2014-07-16 17:01:09 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-07-16 17:01:14 CEST FATAL: le timeline 1 du serveur principal ne correspond pas au timeline 3 de la
cible de restauration
2014-07-16 17:01:19 CEST FATAL: le timeline 1 du serveur principal ne correspond pas au timeline 3 de la
cible de restauration
2014-07-16 17:01:24 CEST FATAL: le timeline 1 du serveur principal ne correspond pas au timeline 3 de la
cible de restauration
Merci,
Si vous voulez plus d'explications pour pouvoir m'aider je suis là