Stream wiederherstellen

Du kannst einen Stream, der dauerhaft fehlgeschlagen ist, wiederherstellen, ohne einen neuen Stream erstellen zu müssen. Geben Sie dazu die Position an, von der Datastream versucht, das Lesen von Änderungen aus der Quelle fortzusetzen.

Streamwiederherstellung – Übersicht

Bei einem laufenden Stream können einige nicht behebbare Fehler auftreten und der Status in FAILED_PERMANENTLY geändert werden. Solche Fehler verhindern, dass der Stream weiter ausgeführt wird, und können zu Datenverlusten führen.

Sie können einen dauerhaft fehlgeschlagenen Stream wiederherstellen, indem Sie ihn so einstellen, dass der Fehler ignoriert wird und die laufenden Ereignisse weiterhin gelesen werden, anstatt den Stream neu zu erstellen und die Verlaufsdaten aufzufüllen. Wenn Sie einen dauerhaft fehlgeschlagenen Stream wiederherstellen möchten, setzen Sie die Replikation zurück, um das Lesen an einer anderen Replikationsposition zu starten. Jeder unterstützte Quelltyp hat eine eigene Definition einer Replikationsposition:

  • Bei Oracle-Quellen ist eine Replikationsposition eine Redo-Logdatei in der Datenbank und die System Change Number (SCN) in dieser Datei.
  • Bei MySQL-Quellen ist eine Replikationsposition die binäre Logdatei der Datenbank (binlog) und die Position in dieser Datei.
  • Bei PostgreSQL-Quellen (einschließlich AlloyDB for PostgreSQL) ist die Replikationsposition die Logsequenznummer (LSN) im Replikationsslot. Während der Wiederherstellung beginnt der Stream mit dem Lesen der ersten LSN im Replikationsslot.

Zum Wiederherstellen eines Streams für eine MySQL- oder Oracle-Quelle haben Sie folgende Möglichkeiten:

  • Ab der aktuellen Position noch einmal versuchen (empfohlen): Wählen Sie diese Option aus, um mit dem Streaming ab der aktuellen Position zu versuchen, an der der Stream zuletzt fehlgeschlagen ist. Sie müssen zuerst die Protokolldatei reparieren oder aus der Sicherung wiederherstellen. Dies ist die empfohlene Option.

  • Aktuelle Position überspringen und ab der nächsten verfügbaren Position streamen: Wenn eine oder mehrere Logdateien fehlen, wählen Sie diese Option aus, um diese Dateien zu überspringen und das Streaming ab der ersten Position in der nachfolgenden verfügbaren Datei fortzusetzen. Die Änderungen aus den fehlenden Logdateien gehen verloren, können jedoch mit einem Backfill wiederhergestellt werden.

  • Aktuelle Position überspringen und ab der neuesten Position streamen: Wenn eine oder mehrere Logdateien fehlen, wählen Sie diese Option aus, um diese Dateien zu überspringen und das Streaming ab der neuesten Position in der aktuellen Logdatei fortzusetzen. Die Änderungen aus den fehlenden Logdateien gehen verloren, können jedoch mit einem Backfill wiederhergestellt werden.

  • Ab der gewünschten Streamingdatei und -position fortsetzen: Wählen Sie diese Option aus, um den Stream ab einer bestimmten Logdatei und ‐position fortzusetzen. Einige Änderungen können verloren gehen, wenn die angegebene Logposition sich nicht mit der verlorenen Logposition überschneidet oder unmittelbar darauf folgt. Sie können diese Änderungen durch einen Backfill wiederherstellen.

Zum Wiederherstellen eines Streams für eine PostgreSQL-Quelle müssen Sie den Namen des Replikationsslots angeben. Der Server verwendet diesen Replikationsslot, um Ereignisse an Datastream zu senden. Der Name des Replikationsslots kann mit dem Slot übereinstimmen, der für den fehlgeschlagenen Stream verwendet wurde, oder einen anderen Namen haben:

Alle Änderungsereignisse an der Quelle, die zwischen dem Verlust der Logposition und dem ersten LSN im neuen Replikationsslot aufgetreten sind, gehen verloren. Sie können diese Änderungen durch einen Backfill rückgängig machen.

Stream für eine MySQL- oder Oracle-Quelle wiederherstellen

So stellen Sie einen dauerhaft fehlgeschlagenen Stream wieder her:

  1. Rufen Sie in Google Cloud die Seite Streams auf.

    Zur Seite "Streams"

  2. Klicken Sie das Kästchen links neben dem Stream an, den Sie wiederherstellen möchten.

  3. Klicken Sie auf Wiederherstellen.

  4. Der Bereich Wiederherstellungsstrategie auswählen wird geöffnet. Wählen Sie eine Option aus. Wenn Sie Ab der gewünschten Streamingdatei und -position fortsetzen auswählen, geben Sie Folgendes ein:

    • Für eine MySQL-Quelle: der Logdateiname im Feld File name (Dateiname) und die Logposition im Feld Position. Wenn Sie keine Position angeben, wird der Stream ab der ersten Position in der angegebenen Logdatei fortgesetzt.
    • Für eine Oracle-Quelle: die System Change Number (SCN) im Feld System Change Number (SCN). Dies ist ein Pflichtfeld.
  5. Klicken Sie auf Anwenden.

  6. Wenn der Stream wiederhergestellt wurde, wird auf der Seite Streams in der Spalte Wiederhergestellt ein Zeitstempel angezeigt.

Stream für eine PostgreSQL-Quelle wiederherstellen

So stellen Sie einen dauerhaft fehlgeschlagenen Stream wieder her:

  1. Rufen Sie in Google Cloud die Seite Streams auf.

    Zur Seite "Streams"

  2. Klicken Sie das Kästchen links neben dem Stream an, den Sie wiederherstellen möchten.

  3. Klicken Sie auf Wiederherstellen.

  4. Der Bereich Neuen Replikationsslot definieren wird geöffnet.

  5. Geben Sie im Feld Name des Replikationsslots den Namen eines neuen Replikationsslots an, aus dem der Stream eine Wiederherstellung versucht. Wenn Sie den Replikationsslot mit demselben Namen neu erstellt haben oder den Slot wiederverwenden möchten, den Sie bei der Konfiguration der Quelle angegeben haben, können Sie dieses Feld leer lassen.

  6. Klicken Sie auf Anwenden.

  7. Wenn der Stream wiederhergestellt wurde, wird auf der Seite Streams in der Spalte Wiederhergestellt ein Zeitstempel angezeigt.

Auf der Seite Streamdetails kannst du auch dauerhaft fehlgeschlagene Streams wiederherstellen. Klicken Sie dazu auf Stream wiederherstellen, wenn Sie detaillierte Informationen zu Ihrem Stream anzeigen.

Streamwiederherstellung für eine MySQL-Quelle in einem manuellen Failover-Szenario verwenden

Sie können einen manuellen Failover ausführen und die Streamwiederherstellung verwenden, um zu vermeiden, dass Ihre Streams während einer Wartung oder beim Ausfall der primären Instanz von Grund auf neu erstellt werden. Im Allgemeinen unterstützt Datastream keine Failovers zu Replikaten, da sie die binlog-Kontinuität unterbrechen. Sie können jedoch den Stream mit den folgenden Schritten wiederherstellen und dafür sorgen, dass Ihre Änderungsdaten erfasst werden:

  1. Beenden Sie alle Schreibvorgänge an die primäre Instanz.
  2. Der Messwert für die Datenaktualität muss auf 0 festgelegt sein. Das bedeutet, dass Datastream alle Änderungen erfasst hat und es keine neuen Ereignisse zum Lesen aus der Quelle gibt. Weitere Informationen finden Sie unter Stream überwachen.
  3. Führen Sie ein Failover auf die neue Datenbankinstanz durch.
  4. Aktualisieren Sie bei Bedarf das Verbindungsprofil des Streams auf die neue Datenbankinstanz (z. B. müssen Sie möglicherweise den Hostnamen oder die IP-Adresse der Datenbank ändern). Weitere Informationen finden Sie unter Verbindungsprofile ändern.
  5. Stellen Sie den Stream von einer bestimmten Position auf der Failover-Instanz wieder her, um die CDC-Kontinuität zu gewährleisten.