Openflow Connector for PostgreSQL-Verwaltung

Dieses Thema enthält wichtige Wartungshinweise und Best Practices für die Wartung des Openflow Connector for PostgreSQL beschrieben, wenn Änderungen an der PostgreSQL-Quelldatenbank vorgenommen werden. Darüber hinaus wird unter diesem Thema beschrieben, wie Sie die Tabellenreplikation neu starten und den Konnektor neu installieren.

Replikation der Tabellen neu starten

Eine Tabelle in FAILED-Status – z. B. aufgrund eines fehlenden Primärschlüssels oder einer nicht unterstützten Schemaänderung – wird nicht automatisch neu gestartet. Wenn eine Tabelle in einen FAILED-Status übergeht oder Sie die Replikation von Grund auf neu starten müssen, gehen Sie wie folgt vor, um die Tabelle zu entfernen und zur Replikation erneut hinzuzufügen.

Bemerkung

Wenn der Fehler durch ein Problem in der Quelltabelle verursacht wurde, z. B. durch einen fehlenden Primärschlüssel, beheben Sie dieses Problem in der Quelldatenbank, bevor Sie fortfahren.

  1. Entfernen Sie die Tabelle mit einer der folgenden Methoden aus der Replikation:

    • Fügen Sie die Tabelle zum Parameter Re-snapshot Table Exclusions hinzu, um ihn vorübergehend von der Replikation auszuschließen. Dies ist praktisch, wenn die Tabelle mit einem Included Table Regex übereinstimmt, den Sie nicht ändern möchten.

    • Entfernen Sie im Kontext des Datenaufnahmeparameters entweder die Tabelle aus Included Table Names oder ändern Sie Included Table Regex so, dass die Tabelle nicht mehr übereinstimmt.

  2. Überprüfen, ob die Tabelle entfernt wurde:

    1. Klicken Sie in der Openflow-Laufzeitoberfläche mit der rechten Maustaste auf eine Prozessorgruppe, und wählen Sie Controller Services.

    2. Suchen Sie in der Tabelle mit den Controllerdiensten die Zeile Table State Store, klicken Sie auf die drei vertikalen Punkte rechts von der Zeile, und wählen Sie dann View State aus.

    Wichtig

    Sie müssen warten, bis der Status der Tabelle vollständig aus dieser Liste entfernt wurde, bevor Sie fortfahren können. Fahren Sie nicht fort, bis diese Konfigurationsänderung abgeschlossen ist.

  3. Ziel bereinigen: Sobald der Status der Tabelle als „vollständig entfernt“ angezeigt wird, DROP Sie die Zieltabelle manuell in Snowflake. Beachten Sie, dass der Konnektor während der Snapshot-Phase keine vorhandene Zieltabelle überschreibt. Wenn die Tabelle noch existiert, schlägt die Replikation erneut fehl. Optional können die Journaltabelle und der Stream auch entfernt werden, wenn sie nicht mehr benötigt werden.

  4. Fügen Sie die Tabelle erneut hinzu, indem Sie die im ersten Schritt vorgenommene Änderung rückgängig machen: Entfernen Sie die Tabelle entweder aus Re-snapshot Table Exclusions oder fügen Sie sie wieder zu Included Table Names oder Included Table Regex hinzu. Der Konnektor erstellt dann einen neuen Snapshot der Tabelle.

  5. Neustart überprüfen: Überprüfen Sie den Table State Store unter Verwendung der zuvor angegebenen Anweisungen. Der Status der Tabelle sollte mit dem Status NEW angezeigt werden, dann in SNAPSHOT_REPLICATION übergehen und schließlich in INCREMENTAL_REPLICATION.

Upgrade von PostgreSQL

Das Aktualisieren des Konnektors erfordert jeweils einen anderen Ansatz, je nachdem, ob PostgreSQL auf die nächste Neben- oder Hauptversion aktualisiert wird.

Upgrades auf eine Nebenversion

  • Sind datensicher.

  • Erfordern keine Sonderbehandlung.

  • Erfordern, dass der Konnektor für die Dauer des Upgrades angehalten wird, um zu vermeiden, dass Konnektivitätsprobleme gemeldet werden.

  • Setzen die Replikation nach dem Upgrade ohne Datenverlust fort.

Upgrades auf eine Hauptversion

  • Erfordern, dass der PostgreSQL-Server Replikations-Slots löscht, einschließlich aller vom Konnektor verwendeten.

  • Können keine Replikations-Slots beibehalten oder auf die neue Version migrieren. Siehe auch Upgrades auf PostgresSQL Version 17 und höher.

  • Starten Sie die Replikation aller Tabellen aus der vorherigen Snapshot-Phase neu.

Um ein Upgrade auf eine Nebenversion durchzuführen, gehen Sie wie folgt vor:

  1. Stoppen Sie den Konnektor, einschließlich aller Prozessoren und Controller-Dienste.

  2. Führen Sie ein Upgrade von PostgreSQL durch.

  3. Starten Sie den Konnektor neu.

Um ein Upgrade auf eine Hauptversion durchzuführen, gehen Sie wie folgt vor:

  1. Entfernen Sie im Konnektor alle Tabellen aus der Replikation.

  2. Warten Sie, bis alle Warteschlangen im Konnektor leer sind.

  3. Stoppen Sie den Konnektor, einschließlich aller Prozessoren und Controller-Dienste.

  4. Öffnen Sie die Gruppe Incremental Load im Konnektor.

  5. Klicken Sie mit der rechten Maustaste auf den obersten Prozessor in der Gruppe, Read PostgreSQL CDC Stream, und wählen Sie View state aus.

  6. Klicken Sie auf Clear state.

  7. Klicken Sie auf Close.

  8. Führen Sie ein Upgrade von PostgreSQL durch.

  9. Starten Sie den Konnektor neu. Es wird ein neuer Replikations-Slot erstellt.

  10. Fügen Sie alle Tabellen erneut hinzu, um die Replikation zu starten.

Upgrades auf PostgresSQL Version 17 und höher

PostgreSQL 17 hat die Upgrade-Funktion dahingehend verbessert, dass beim Upgrade auf spätere Versionen wie von 17.1 » 18.0 keine Replikations-Slots mehr gelöscht werden müssen. Ein Upgrade auf PostgreSQL 17.0 oder höher von früheren Versionen (16 und früher) entfernt Replikations-Slots und sollte als Upgrade auf eine Hauptversion behandelt werden. Zukünftige Versionen von PostgreSQL können den Upgrade-Prozess möglicherweise noch weiter verbessern.

Konnektor erneut installieren

In diesem Abschnitt wird beschrieben, wie Sie den Konnektor erneut installieren. Dies deckt Situationen ab, in denen der neue Konnektor in derselben Laufzeitumgebung installiert wird oder wenn er in eine neue Laufzeitumgebung verschoben wird. Die Neuinstallation wird häufig in Verbindung mit Inkrementeller Replikation mit Snapshots verwendet.

Warnung

Damit der Konnektor weiterhin von derselben CDC Stream-Position replizieren kann, an der er vor der Neuinstallation angehalten wurde, muss die Quelldatenbank das WAL lange genug beibehalten, um die Zeit zwischen dem Anhalten des alten Konnektors und dem Starten des neuen Konnektors abzudecken. Stellen Sie sicher, dass der Parameter max_wal_size desPostgreSQL-Servers hoch genug ist, abhängig vom Datenverkehr, und beschränken Sie die Neuinstallationszeit auf ein Minimum.

Voraussetzungen

Überprüfen und notieren Sie die Kontextwerte der Konnektorparameter. Wenn Sie den Konnektor in derselben Laufzeit neu installieren, können Sie den vorhandenen Kontext wiederverwenden. Wenn sich die neue Instanz in einer anderen Laufzeitumgebung befindet, müssen Sie alle Parameter neu eingeben.

Für die erneute Installation des Konnektors haben Sie folgende Optionen:

  1. Schließen Sie die Verarbeitung aller in Übertragung befindlichen FlowFiles im bestehenden Konnektor ab und stoppen Sie dann den Konnektor.

    1. Melden Sie sich bei Snowsight an.

    2. Wählen Sie im Navigationsmenü die Option Ingestion » Openflow aus.

    3. Wählen Sie Launch Openflow aus.

    4. Wählen Sie im Bereich Openflow die Registerkarte Runtimes aus.

    5. Wählen Sie die Laufzeitumgebung aus, die den Konnektor enthält.

    6. Wählen Sie den Konnektor aus.

    7. Stoppen Sie den obersten Prozessor Set Tables for Replication in der Gruppe Snapshot Load.

    8. Stoppen Sie den obersten Prozessor Read PostgreSQL CDC Stream in der Gruppe Incremental Load.

    9. Wenn Sie den Wert des Parameters Merge Task Schedule CRON geändert haben, geben Sie ihn an * * * * * ? zurück, andernfalls werden die Warteschlangen erst bei der nächsten geplanten Ausführung geleert.

      Warten Sie, bis alle FlowFiles im Konnektor verarbeitet wurden und alle Warteschlangen leer sind. Wenn alle FlowFiles verarbeitet wurden, wird der Wert Queued für die Prozessorgruppe des Konnektors zu Null. Wenn sich noch Elemente in den Warteschlangen des ursprünglichen Konnektors befinden, kann es beim Starten des neuen Konnektors zu Datenlücken kommen.

    10. Stoppen Sie alle Prozessoren und Controller-Dienste im Konnektor.

  2. Suchen Sie den Namen des vom ursprünglichen Konnektor verwendeten Replikations-Slots, und kopieren Sie ihn, indem Sie den Status des obersten Prozessors in der Gruppe Incremental Load mit dem Namen Read PostgreSQL CDC Stream anzeigen. Der Name des Replikations-Slots wird unter dem Schlüssel replication.slot.name gespeichert. Kopieren Sie den Wert des Schlüssels in einen Texteditor.

  3. Erstellen Sie eine neue Instanz des Konnektors. Wenn Sie dieselbe Laufzeitumgebung wie der ursprüngliche Konnektor verwenden, können Sie die vorhandenen Parameterkontexte beibehalten und die Einstellungen wiederverwenden.

    Vorsicht

    Der bestehende Konnektor kann in der Laufzeit verbleiben und beeinträchtigt die neue Instanz nicht, solange sie angehalten bleibt.

  4. Wenn Sie in eine andere Laufzeitumgebung installieren oder die vorherigen Parameterkontexte gelöscht haben, geben Sie alle Konfigurationseinstellungen in die neuen Parameterkontexte ein, einschließlich der Tabellennamen und Muster, wie unter Einrichten von Openflow Connector for PostgreSQL beschrieben.

  5. Öffnen Sie den PostgreSQL Ingestion Parameters-Kontext, und setzen Sie den Parameter Ingestion Type auf incremental. Weitere Informationen zu den Problemen finden Sie unter Aktivieren der inkrementellen Replikation ohne Snapshots.

  6. Öffnen Sie den PostgreSQL Source Parameters-Kontext, und setzen Sie den Parameter Replication Slot Name auf den zuvor kopierten Wert.

  7. Starten Sie den neuen Konnektor.

Nutzungshinweise

Der neue Konnektor verwendet dieselben vorhandenen Zieltabellen, die vom ursprünglichen Konnektor erstellt wurden, erstellt jedoch neue Journaltabellen.