Nach dem Six for Two- Beitrag können Sie möglicherweise nur eine Datei erstellen und dann mit dem Replikationssetup fortfahren. Im Wesentlichen handelt es sich jedoch um einen PostgresSQL-Fehler, bei dem diese Datei benötigt wird, obwohl sie nicht anwendbar ist oder per Post gelöscht wird Operation.
Wenn PostgreSQL einen neuen primären Server heraufstufen will, erstellt er eine Markierung der Timeline-Aufteilung in Form einer kleinen Textdatei, die im WAL-Dateiverzeichnis abgelegt wird. Diese Datei ermöglicht es, Point-in-Time-Recovery in einigen recht komplexen Failover- und Failback-Szenarien zu erreichen.
Es scheint also, dass Sie die Datei neu erstellen müssen. Eine sehr schöne Zusammenfassung der .history-Datei finden Sie im Postgres-Wiki. Da die Informationen jedoch in .pdf enthalten sind, ist die Indexierung schwieriger, sodass Sie möglicherweise Schwierigkeiten haben, das Dokument zu finden, wenn Sie nicht bereits wissen, dass es dort ist.
Aber wir werden nie wieder auf diese Zeitachse zurückgreifen, weil sie vor unserem Upgrade liegt. Alles, was wir zum Wiederherstellen einer verlorenen Datei benötigen, ist eine ausreichend große Anzahl. Und Sie können eine bekommen, indem Sie laufen:
# SELECT pg_current_xlog_location(); pg_current_xlog_location -------------------------- 1/38F70328 (1 row)
Erstellen Sie mit diesen Werten eine .history-Datei in Ihrem WAL-Verzeichnis, et voila. Die Replik kann sofort gestartet werden.
Erstellen Sie die Datei mit diesen (obigen) Ergebnissen, jedoch mit dem erwarteten Namen pro Fehler.
Weitere Ressourcen
Systemverwaltungsfunktionen
Name:
pg_current_xlog_location()
Rückgabetyp: Text
Beschreibung: Abrufen des aktuellen Speicherorts für das Transaktionsprotokoll
pg_current_xlog_location
Zeigt den aktuellen Speicherort für das Transaktionsprotokoll in demselben Format an, das von den obigen Funktionen verwendet wird. In ähnlicher Weise zeigt pg_current_xlog_insert_location den Einfügepunkt des aktuellen Transaktionsprotokolls an. Die Einfügemarke ist das "logische" Ende des Transaktionsprotokolls zu einem beliebigen Zeitpunkt, während der Schreibort das Ende dessen ist, was tatsächlich aus den internen Puffern des Servers ausgeschrieben wurde. Der Schreibspeicherort ist das Ende dessen, was von außerhalb des Servers untersucht werden kann, und ist normalerweise das, was Sie möchten, wenn Sie an der Archivierung von teilweise vollständigen Transaktionsprotokolldateien interessiert sind. Die Einfügemarke wird hauptsächlich für Server-Debugging-Zwecke zur Verfügung gestellt. Beide Operationen sind schreibgeschützt und erfordern keine Superuser-Berechtigungen.Sie können
pg_xlogfile_name_offset
den entsprechenden Namen der Transaktionsprotokolldatei und den Byte-Offset aus den Ergebnissen einer der oben genannten Funktionen extrahieren.Ebenso wird
pg_xlogfile_name
nur der Name der Transaktionsprotokolldatei extrahiert. Wenn sich der angegebene Transaktionsprotokollspeicherort genau an einer Grenze der Transaktionsprotokolldatei befindet, geben beide Funktionen den Namen der vorhergehenden Transaktionsprotokolldatei zurück. Dies ist normalerweise das gewünschte Verhalten beim Verwalten des Transaktionsprotokollarchivierungsverhaltens, da die vorherige Datei die letzte ist, die derzeit archiviert werden muss.