La réplication a échoué; comment recommencer?


10

J'utilise Postgres 9.1.6 sur Ubuntu et j'ai une configuration de réplication en streaming entre un maître et un esclave. Tout s'est bien déroulé jusqu'à ce que la base de données tombe en panne et nous avons dû redémarrer les deux boîtes.

Maintenant, la réplication s'est arrêtée et lors de la vérification des journaux sur les deux cases, je vois ce message:

CDT FATAL: le segment WAL demandé 0000000100000224000000FA a déjà été supprimé

C'est le même segment encore et encore. D'après ma recherche sur Google, il semblerait que le serveur de réplication essaie de récupérer ce segment du maître, mais il n'est plus là. D'accord, mais comment contourner cela? Dois-je effectuer une nouvelle sauvegarde et rsync sur l'esclave? Existe-t-il un moyen facile de synchroniser l'esclave?

Réponses:


7

Oui, vous devrez donner à l'esclave une nouvelle sauvegarde de base (pour la réplication en streaming uniquement les étapes 1 à 4) du maître.

Votre problème est probablement survenu car la valeur de wal_keep_segments est trop faible. La valeur doit être suffisamment élevée pour que lorsque l'esclave est hors service pendant un certain temps, le maître ne commence pas à recycler les segments que l'esclave n'a pas encore traités.


1

Veuillez vérifier que les WAL requis se trouvent à l'emplacement à partir duquel vous effectuez la restauration pour la restauration initiale avant de connecter l'esclave à l'hôte principal en mode streaming.

Votre problème peut se produire lorsqu'un morve de biche de segment WAL existe à l'emplacement à partir duquel vous effectuez la restauration pour la récupération initiale.

Si tout va bien dans ce cas, vous devez vérifier la commande restore_command dans recovery.conf.


0

un autre travail consiste à faire wal backup_push à partir du primaire et à faire immédiatement un backip_fetch à partir de l'esclave de secours et à démarrer le secours.


2
Veuillez expliquer pourquoi ce processus fonctionne
RolandoMySQLDBA
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.