[gelöst] pg_rewind funktioniert nicht in Script

Hallo zusammen,

ich habe hier einen Postgres-Cluster(Master + HotStandBy) mit Postgres 9.6. auf CentOS 7. Ich habe mir ein Failover gescriptet, dass so grundsätzlich funktioniert. Das einzige Problem, dass ich noch habe, ist dass das pg_rewind nicht automatisch funktioniert. Wenn ich pg_rewind im Script per ssh ausführe, dann bekomme ich die Meldung:

ssh -oRequestTTY=yes postgres@meinserver.de pg_rewind --source-server='host=sourceserver port=5432 user=meinpgadmin password=password dbname=postgres' -D pgdirectory
Server divergierten bei WAL-Position 2/98 auf Zeitleiste 113
konnte Datei »/var/lib/pgsql/9.6/data/pg_xlog/000000720000000200000000« nicht öffnen: Datei oder Verzeichnis nicht gefunden
could not find previous WAL record at 2/98

Wenn ich das gleiche Kommando auf meinserver.de interaktiv ausführe(also per ssh-Kommando interaktiv oder per ssh-shell interaktiv), dann funktioniert alles wunderbar. Die WAL-Datei 000000720000000200000000 ist nicht da, aber der interaktive Aufruf findet dann 000000720000000200000000.partial und führt den Rewind durch.

Ich habe schon so einige Tests durch mit der Art des Aufrufes(mit su -l, mit sudo -i, mit screen), auch PGDATA und PATH hatte ich schon explizit gesetzt. Nichts hat geholfen.

Ich habe auch mal mit strace geschaut, was pg_rewind in der interaktiven Variante und in der gescripteten Variante tut. Bei der interaktiven Variante passiert viel mehr. Das interessante ist noch, dass der rewind manchmal auch funktioniert, meistens aber nicht.

Irgendwelche Ideen oder Ratschläge?

Ich habe jetzt nochmal eine Wartezeit von 5 Sekunden vor den pg_rewind eingebaut. Damit scheint es zu laufen. Vielleicht war der vorausgehende Shutdown noch nicht ganz abgeschlossen. Ich lasse den Failover gerade mal in Schleife laufen um zu sehen ob das zuverlässig geht. Bis jetzt sieht es gut aus.

Habe das jetzt mal 100x laufen lassen. Läuft 100%ig.

hast Dir mal repmgr angeschaut? Das ist für sowas gedacht und läuft gut bei einer Vielzahl unserer Kunden.