Die „Timeline-Verlaufsdatei“ zum Starten der Replikation kann nicht gefunden werden.

Die „Timeline-Verlaufsdatei“ zum Starten der Replikation kann nicht gefunden werden.

Ich verwende PostgreSQL 9.4 und versuche, die Replikation zum Laufen zu bringen.

Was ich mache, indem ich mich von derAnleitung im WikiUndDokumentation:

  1. SELECT pg_start_backup('clone', true);
  2. rsyncder Datenbank zur potenziellen Replik
  3. SELECT pg_stop_backup();
  4. rsyncdes pg_xlogOrdners zur angehenden Replik

Ich starte die Replik und es heißt:

LOG:  fetching timeline history file for timeline 3 from primary server
FATAL:  could not receive timeline history file from the primary server:
    ERROR:  could not open file "pg_xlog/00000003.history": No such file or directory

Natürlich suche ich auf beiden Servern nach der .historyDatei pg_xlog/, aber es gibt keine.

Ich überfliege die Dokumente und finde heraus, dass

Um das Backup nutzen zu können, müssen Sie alle WAL-Segmentdateien behalten, die während und nach dem Dateisystem-Backup generiert wurden. Um Ihnen dabei zu helfen, erstellt die Funktion pg_stop_backup eine Backup-Verlaufsdatei, die sofort im WAL-Archivbereich gespeichert wird. Diese Datei wird nach der ersten WAL-Segmentdatei benannt, die Sie für das Dateisystem-Backup benötigen. Wenn die anfängliche WAL-Datei beispielsweise 0000000100001234000055CD ist, wird die Backup-Verlaufsdatei etwa 0000000100001234000055CD.007C9330.backup heißen.

Es ist jedoch so, dass danach pg_stop_backup()immer noch nichts dergleichen in pg_xlog/oder sonst irgendwo zu finden ist.

Wo also bekomme ich diese „Timeline-Verlaufsdatei“?

Antwort1

Gemäß derSechs für ZweiPost: Möglicherweise können Sie einfach eine Datei erstellen und dann mit der Replikationseinrichtung fortfahren. Im Wesentlichen handelt es sich jedoch um einen PostgresSQL-Fehler, bei dem diese Datei benötigt wird, obwohl sie nicht anwendbar ist oder pro Vorgang gelöscht wird.

Notiz: Für Postgresql 10 und neuer wurde die Funktion umbenannt inpg_current_wal_lsn()

Wenn PostgreSQL einen neuen primären Server hochstuft, erstellt es einen Marker für die Zeitleistenaufteilung in Form einer kleinen Textdatei, die im WAL-Dateiverzeichnis abgelegt wird. Diese Datei ermöglicht eine Point-In-Time-Wiederherstellung in einigen recht komplexen Failover- und Failback-Szenarien.

Es scheint also, dass Sie die Datei neu erstellen müssen. Sie finden eine sehr schöne Zusammenfassung der .history-Datei im Postgres-Wiki. Da die Informationen jedoch im PDF-Format vorliegen, ist die Indizierung tendenziell schwieriger. Daher kann es sein, dass Sie das Dokument nicht finden, wenn Sie nicht bereits wissen, dass es dort ist.

Aber wir werden nie zu dieser Zeitleiste zurückkehren, da sie vor unserem Upgrade liegt. Um eine verlorene Datei wiederherzustellen, benötigen wir lediglich eine ausreichend gute Nummer. Und eine erhalten Sie, indem Sie Folgendes ausführen:

# SELECT pg_current_xlog_location();
 pg_current_xlog_location
--------------------------
 1/38F70328
(1 row)

Erstellen Sie in Ihrem WAL-Verzeichnis eine .history-Datei mit diesen Werten und voilà. Die Replik kann sofort gestartet werden.

Quelle

Erstellen Sie die Datei mit diesen (oben genannten) Ergebnissen, aber mit dem erwarteten Namen gemäß Fehler.


Weitere Ressourcen

  • Grundlegendes zu PostgreSQL-Zeitleisten

  • Systemadministrationsfunktionen

    Name: pg_current_xlog_location()

    Rückgabetyp: Text

    Beschreibung: Aktuellen Speicherort für das Schreiben des Transaktionsprotokolls abrufen

    pg_current_xlog_locationzeigt den aktuellen Schreibort des Transaktionsprotokolls im gleichen Format an, das von den obigen Funktionen verwendet wird. Ebenso zeigt pg_current_xlog_insert_location den aktuellen Einfügepunkt des Transaktionsprotokolls an. Der Einfügepunkt ist das „logische“ Ende des Transaktionsprotokolls zu jedem Zeitpunkt, während der Schreibort das Ende dessen ist, was tatsächlich aus den internen Puffern des Servers geschrieben wurde. Der Schreibort ist das Ende dessen, was von außerhalb des Servers untersucht werden kann, und ist normalerweise das, was Sie wollen, wenn Sie teilweise vollständige Transaktionsprotokolldateien archivieren möchten. Der Einfügepunkt wird hauptsächlich für Server-Debugging-Zwecke bereitgestellt. Dies sind beides schreibgeschützte Vorgänge und erfordern keine Superuser-Berechtigungen.

    Sie können verwenden, pg_xlogfile_name_offsetum den entsprechenden Transaktionsprotokolldateinamen und den Byte-Offset aus den Ergebnissen einer der oben genannten Funktionen zu extrahieren.

    Extrahiert in ähnlicher Weise pg_xlogfile_namenur den Namen der Transaktionsprotokolldatei. Wenn der angegebene Speicherort des Transaktionsprotokolls genau an der Grenze einer Transaktionsprotokolldatei liegt, geben beide Funktionen den Namen der vorhergehenden Transaktionsprotokolldatei zurück. Dies ist normalerweise das gewünschte Verhalten für die Verwaltung des Transaktionsprotokollarchivierungsverhaltens, da die vorhergehende Datei die letzte ist, die derzeit archiviert werden muss.

    Quelle

verwandte Informationen