Witam,

Mam następująca konfigurację:

pgpool2 (ip 192.168.1.30): działa jako load balancer zapytań sql do backendów
postgresql1: (ip 192.168.1.31): jest masterem dla WAL (zapis/odczyt z bazy)
postgresql2: (ip 192.168.1.32): jest slave dla WAL
postgresql3: (ip 192.168.1.33): jest slave dla WAL

Pomiędzy postgresql'ami jest replikacja WAL (bez udziału pgpool), a wszystko spina pgpool2 który jest proxy dla klientów.
Ogólnie wszystko wygląda jak tutaj http://www.keyup.eu/en/blog/89-replication-and-load-balancing-with-postgresql-and-pgpool2 z tym że jest jeszcze jeden serwer postgresql.

Na tym etapie wszystko działa jak należy :)

Obecnie jestem na etapie pisania skryptu do wstawienia w 'failover_command'. Jeśli dobrze rozumiem taki skrypt powinien:

1. zrobić cokolwiek jeśli padnie master
2. przypadku 1.
  a) utworzyć plik trigera na nowym masterze
  b) zmienić adres mastera w pliku recovery.conf serwera slave.

Szukałem w internecie jakiegoś manuala do takiego przypadku ale znalazłem tylko gdy jest jeden slave.

Podczas wykonywanie tych kroków "z palca" replikacja sie rozjeżdża (postgresql2 zostaje nowym masterem ale nie replikuje sie poprawnie do postgresql3).
Jak należy wykonać to przełączenie żeby replikacja nadal działała?
Czy ktoś z was przerabiał coś takiego i mógłby mi podesłać skrypt na wzór?
PYTANIE DODATKOWE: Czy w etapie b) trzeba zrestartować usługę postgresa czy wystarczy przeładować?

Dzięki za pomoc

PS. Log z postgresql3 mówi:

2015-04-15 17:48:34 CEST [2837-1751] DZIENNIK:  ponownie rozpoczęto przesyłanie WAL na 0/1B000000 na linii czasu 1
2015-04-15 17:48:34 CEST [2837-1752] DZIENNIK:  replikacja zakończona przez serwer podstawowy
2015-04-15 17:48:34 CEST [2837-1753] SZCZEGĂ“ĹY:  OsiÄ…gniÄ™to koniec WAL na linii czasu 1 na 0/1B000090