Stream wiederherstellen

Sie können einen Stream, der dauerhaft fehlgeschlagen ist, wiederherstellen, ohne einen neuen Stream erstellen zu müssen. Dazu geben Sie die Position an, ab der Datastream versucht, das Lesen von Änderungen aus der Quelle fortzusetzen.

Streamwiederherstellung – Übersicht

Bei einem laufenden Stream können nicht behebbare Fehler auftreten, die den Status in FAILED_PERMANENTLY ändern. Solche Fehler verhindern, dass der Stream fortgesetzt wird, und können zu Datenverlusten führen.

Sie können einen Stream, der dauerhaft fehlgeschlagen ist, wiederherstellen, indem Sie festlegen, dass der Fehler ignoriert und die laufenden Ereignisse weiter gelesen werden, anstatt den Stream neu zu erstellen und die Verlaufsdaten zu ergänzen. Wenn Sie einen dauerhaft fehlgeschlagenen Stream wiederherstellen möchten, setzen Sie die Replikation zurück, damit das Lesen an einer anderen Replikationsposition beginnt. Für jeden unterstützten Quelltyp gibt es eine eigene Definition für eine Replikationsposition:

  • Bei Oracle-Quellen ist eine Replikationsposition eine Redo-Logdatei in der Datenbank und die Systemänderungsnummer (SCN) in dieser Datei.
  • Bei MySQL-Quellen ist die Replikationsposition die binäre Protokolldatei (Binlog) der Datenbank und die Position in dieser Datei.
  • Bei SQL Server-Quellen ist die Replikationsposition die Logsequenznummer (LSN) in den Transaktionslogs oder Änderungstabellen.
  • Bei PostgreSQL-Quellen (einschließlich AlloyDB for PostgreSQL) ist die Replikationsposition die Log-Sequenznummer (LSN) im Replikationsslot. Während der Wiederherstellung beginnt der Stream mit dem Lesen bei der ersten LSN im Replikationsslot.

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

Sie haben folgende Möglichkeiten, einen Stream für eine MySQL- oder Oracle-Quelle wiederherzustellen:

  • Ab der aktuellen Position noch einmal versuchen (empfohlen): Wählen Sie diese Option aus, um den Stream ab der aktuellen Position fortzusetzen, an der der Stream zuletzt fehlgeschlagen ist. Sie müssen die Logdatei zuerst reparieren oder aus einer 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 aber durch einen 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 aktuellsten Logdatei fortzusetzen. Die Änderungen aus den fehlenden Logdateien gehen verloren, können aber durch einen 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 ihr nicht unmittelbar folgt. Sie können diese Änderungen mit einem Backfill wiederherstellen.

So stellen Sie einen dauerhaft fehlgeschlagenen Stream für eine MySQL- oder Oracle-Quelle wieder her:

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

    Zur Seite „Streams“

  2. Klicken Sie in der Zeile mit dem Namen des Streams, den Sie wiederherstellen möchten, auf Wiederherstellen.

  3. 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:

    • Bei einer MySQL-Quelle: den Protokolldateinamen im Feld Dateiname und die Protokollposition im Feld Position. Wenn Sie keine Position angeben, wird der Stream ab der ersten Position in der angegebenen Protokolldatei fortgesetzt.
    • Bei einer Oracle-Quelle: die System Change Number (SCN) im Feld System Change Number (SCN). Dieses Feld ist Pflicht.
  4. Klicken Sie auf Anwenden.

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

Stream für eine PostgreSQL-Quelle wiederherstellen

Wenn Sie einen Stream für eine PostgreSQL-Quelle wiederherstellen möchten, 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 identisch sein, der für den fehlgeschlagenen Stream verwendet wurde, oder sich davon unterscheiden:

  • Wenn der neue Replikationsslot einen anderen Namen hat, geben Sie diesen Namen in Datastream an.
  • Wenn Sie keinen Namen für den Replikationsslot angeben, verwendet Datastream den Namen, der in der Quellkonfiguration angegeben ist.

    Weitere Informationen zu Replikationsslots finden Sie unter PostgreSQL-Quelldatenbank konfigurieren.

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 mit einem Backfill wiederherstellen.

So stellen Sie einen dauerhaft fehlgeschlagenen Stream für eine PostgreSQL-Quelle wieder her:

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

    Zur Seite „Streams“

  2. Klicken Sie in der Zeile mit dem Namen des Streams, den Sie wiederherstellen möchten, auf Wiederherstellen.

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

  4. Geben Sie im Feld Name des Replikationsslots den Namen eines neuen Replikationsslots an, aus dem der Stream einen Wiederherstellungsversuch unternimmt. 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.

  5. Klicken Sie auf Anwenden.

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

Sie können dauerhaft fehlgeschlagene Streams auch auf der Seite Streamdetails wiederherstellen. Klicken Sie dazu in den Details zum Stream auf Stream wiederherstellen.

Stream für eine SQL Server-Quelle wiederherstellen

Sie haben folgende Möglichkeiten, einen Stream für eine SQL Server-Quelle wiederherzustellen:

  • Ab der ersten verfügbaren Position fortsetzen: Wählen Sie diese Option aus, wenn das Log abgeschnitten wurde oder Datensätze aus den Änderungstabellen fehlen und Sie den Stream ab dem ersten verfügbaren Ereignis fortsetzen möchten. Die fehlenden Ereignisse gehen verloren, können aber durch einen Backfill wiederhergestellt werden.

  • Ab der gewünschten Logsequenznummer (LSN) fortsetzen: Wählen Sie diese Option aus, um den Stream ab einer bestimmten LSN in den Transaktionslogs oder Änderungstabellen fortzusetzen. Einige Ereignisse gehen möglicherweise verloren, wenn die angegebene LSN sich nicht mit der letzten LSN, die Datastream abrufen konnte, überschneidet oder nicht direkt auf diese folgt. Sie können diese Ereignisse durch einen Backfill wiederherstellen.

    Die LSN in den Transaktionsprotokollen und Änderungstabellen enthält 20 hexadezimalstellige Zeichen. Bei Transaktionsprotokollen wird sie jedoch durch ein Trennzeichen getrennt. Beispiel:

    • LSN in Transaktionsprotokollen: 0000123C:0000BA78:0004
    • LSN in Änderungstabellen: 0000123C0000BA780004

So stellen Sie einen dauerhaft fehlgeschlagenen Stream für eine SQL Server-Quelle wieder her:

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

    Zur Seite „Streams“

  2. Klicken Sie in der Zeile mit dem Namen des Streams, den Sie wiederherstellen möchten, auf Wiederherstellen.

  3. Der Bereich Wiederherstellungsstrategie auswählen wird geöffnet. Wählen Sie eine Option aus.

  4. Klicken Sie auf Anwenden.

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

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

Sie können ein manuelles Failover ausführen und die Streamwiederherstellung verwenden, um zu vermeiden, dass Ihre Streams bei Wartung oder Ausfall der primären Instanz neu erstellt werden müssen. Im Allgemeinen unterstützt Datastream keine Failover zu Replikas, da dadurch die Binlog-Kontinuität unterbrochen wird. Sie können jedoch so vorgehen, um den Stream wiederherzustellen und dafür zu 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 gibt, die aus der Quelle gelesen werden können. Weitere Informationen finden Sie unter Streams überwachen.
  3. Failover auf die neue Datenbankinstanz.
  4. Aktualisieren Sie bei Bedarf das Verbindungsprofil des Streams auf die neue Datenbankinstanz. Möglicherweise müssen Sie beispielsweise den Datenbank-Hostnamen oder die Datenbank-IP-Adresse ändern. Weitere Informationen finden Sie unter Verbindungsprofile ändern.
  5. Stellen Sie den Stream von einer bestimmten Position in der Failover-Instanz wieder her, um die CDC-Kontinuität zu gewährleisten.

Nächste Schritte