Stream wiederherstellen

Ein endgültig fehlgeschlagener Stream lässt sich wiederherstellen, ohne einen neuen Stream erstellen zu müssen. Dazu geben Sie die Position an, von der aus Datastream versucht, Änderungen aus der Quelle wieder zu lesen.

Streamwiederherstellung – Übersicht

Bei einem laufenden Stream können einige nicht behebbare Fehler auftreten und sein Status in FAILED_PERMANENTLY geändert werden. Solche Fehler verhindern die weitere Ausführung des Streams und können Datenverluste verursachen.

Sie können einen dauerhaft fehlerhaften Stream wiederherstellen, indem Sie ihn so einstellen, dass der Fehler ignoriert wird und die laufenden Ereignisse weiter gelesen werden, anstatt den Stream neu zu erstellen und die Verlaufsdaten zu füllen. Wenn Sie einen dauerhaft fehlgeschlagenen Stream wiederherstellen möchten, setzen Sie die Replikation zurück, um den Lesevorgang aus 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 eine Replikationsposition die Logsequenznummer (LSN) im Replikationsslot. Während der Wiederherstellung beginnt der Stream mit dem Lesen der ersten LSN im Replikationsslot.

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

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

  • Wiederholen ab der aktuellen Position (empfohlen): Wählen Sie diese Option aus, um das Streaming ab der aktuellen Position zu versuchen, an der der Stream zuletzt fehlgeschlagen ist. Sie müssen zuerst die Protokolldatei korrigieren 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. Sie können sie aber wiederherstellen, indem Sie einen Backfill ausführen.

  • 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 neuesten Logdatei fortzusetzen. Die Änderungen aus den fehlenden Logdateien gehen verloren. Sie können sie aber wiederherstellen, indem Sie einen Backfill ausführen.

  • 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 durch einen Backfill wiederherstellen.

Führen Sie die folgenden Schritte aus, um einen dauerhaft fehlgeschlagenen Stream für eine MySQL- oder Oracle-Quelle wiederherzustellen:

  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 (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änderungsnummer (SCN) im Feld System Change Number (SCN). Dies ist ein Pflichtfeld.
  5. Klicken Sie auf Anwenden.

  6. Wenn der Stream wiederhergestellt wird, wird auf der Seite Streams in der Spalte Wiederhergestellt 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 übereinstimmen, der für den fehlgeschlagenen Stream verwendet wird, oder einen anderen Wert:

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

Führen Sie die folgenden Schritte aus, um einen dauerhaft fehlerhaften Stream für eine PostgreSQL-Quelle wiederherzustellen:

  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 des 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 beim Konfigurieren der Quelle angegeben haben, können Sie dieses Feld leer lassen.

  6. Klicken Sie auf Anwenden.

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

Du kannst dauerhaft fehlgeschlagene Streams auch über die Seite Stream-Details wiederherstellen. Klicken Sie dazu auf Stream wiederherstellen, wenn Sie sich detaillierte Informationen zum Stream ansehen.

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

Sie können ein manuelles Failover ausführen und die Streamwiederherstellung verwenden, um zu vermeiden, dass Ihre Streams während der Wartung oder beim Ausfall der primären Instanz von Grund auf neu erstellt werden. Im Allgemeinen unterstützt Datastream keine Failovers auf Replikate, da diese die Binlog-Kontinuität beeinträchtigen. Sie können jedoch mit den folgenden Schritten den Stream 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 keine neuen Ereignisse aus der Quelle gelesen werden können. Weitere Informationen finden Sie unter Stream überwachen.
  3. Führen Sie einen Failover auf die neue Datenbankinstanz aus.
  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 in der Failover-Instanz wieder her, um CDC-Kontinuität sicherzustellen.