[gelöst] pg_rewind funktioniert nicht in Script

Konfiguration des PostgreSQL Datenbankservers.
Antworten
hellfire
Neuer Benutzer
Beiträge: 3
Registriert: Do 3. Nov 2016, 15:18

[gelöst] pg_rewind funktioniert nicht in Script

Beitrag von hellfire »

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:

Code: Alles auswählen

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?
Zuletzt geändert von hellfire am Do 3. Nov 2016, 15:58, insgesamt 1-mal geändert.

hellfire
Neuer Benutzer
Beiträge: 3
Registriert: Do 3. Nov 2016, 15:18

Re: pg_rewind funktioniert nicht in Script

Beitrag von hellfire »

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.

hellfire
Neuer Benutzer
Beiträge: 3
Registriert: Do 3. Nov 2016, 15:18

Re: [gelöst] pg_rewind funktioniert nicht in Script

Beitrag von hellfire »

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

akretschmer
Erfahrener Benutzer
Beiträge: 7715
Registriert: So 29. Okt 2006, 13:35
Wohnort: Kaufbach, Sachsen, Germany, Germany
Kontaktdaten:

Re: [gelöst] pg_rewind funktioniert nicht in Script

Beitrag von akretschmer »

hellfire hat geschrieben: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.

hast Dir mal repmgr angeschaut? Das ist für sowas gedacht und läuft gut bei einer Vielzahl unserer Kunden.
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

Antworten