Stream wiederherstellen

Sie können einen Stream, bei dem ein dauerhafter Fehler aufgetreten ist, wiederherstellen, ohne einen neuen Stream erstellen zu müssen. Dazu geben Sie die Position an, ab der Datastream versucht, Änderungen aus der Quelle weiterzulesen.

Übersicht über die Streamwiederherstellung

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

Sie können einen Stream, bei dem ein dauerhafter Fehler aufgetreten ist, wiederherstellen, indem Sie den Fehler ignorieren und die laufenden Ereignisse weiterlesen, 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 sie ab einer anderen Replikationsposition gelesen wird. Jeder unterstützte Quelltyp hat seine eigene Definition der 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 (binlog) der Datenbank und die Position in dieser Datei (für die auf binlog basierende Replikation) oder eine Gruppe globaler Transaktions-IDs, die als GTID-Satz bezeichnet wird (für die auf GTID basierende Replikation, die nur in der Datastream API unterstützt wird).
  • Bei SQL Server-Quellen ist eine Replikationsposition die Logsequenznummer (LSN) in den Transaktionslogs oder Änderungstabellen.
  • Bei PostgreSQL-Quellen (einschließlich AlloyDB for PostgreSQL) ist eine Replikationsposition die Log-Sequenznummer (Log Sequence Number, LSN) im Replikationsslot. Während der Wiederherstellung beginnt der Stream mit dem Lesen ab der ersten LSN im Replikationsslot.
  • Bei MongoDB-Quellen ist eine Replikationsposition ein Zeitstempel im MongoDB-Vorgangsprotokoll (oplog).

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

Wenn Sie einen Stream für eine MySQL- (binlog-basierte Replikation) oder Oracle-Quelle wiederherstellen möchten, haben Sie folgende Möglichkeiten:

  • Ab der aktuellen Position noch einmal versuchen (empfohlen): Wählen Sie diese Option aus, um das Streaming ab der aktuellen Position fortzusetzen, an der es 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. Diese Änderungen können durch einen Backfill wiederhergestellt werden.

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

  1. Rufen Sie in Google Clouddie Seite Streams auf.

    Zur Seite „Streams“

  2. Klicke in der Zeile mit dem Namen des Streams, den du wiederherstellen möchtest, 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 Logdateinamen im Feld Dateiname und die Logposition im Feld Position. Wenn Sie die Position nicht angeben, wird der Stream ab der ersten Position in der angegebenen Logdatei fortgesetzt.
    • Bei einer Oracle-Quelle: die System Change Number (SCN) im Feld System Change Number (SCN). Dieses Feld muss ausgefüllt werden.
  4. Klicken Sie auf Übernehmen.

  5. Wenn der Stream wiederhergestellt wurde, 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 Namen des Slots für den fehlgeschlagenen Stream identisch sein oder sich davon unterscheiden:

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

    Weitere Informationen zu Replikations-Slots 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. Diese Änderungen können durch einen Backfill wiederhergestellt werden.

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

  1. Rufen Sie in Google Clouddie Seite Streams auf.

    Zur Seite „Streams“

  2. Klicke in der Zeile mit dem Namen des Streams, den du wiederherstellen möchtest, 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 beim Konfigurieren der Quelle angegeben haben, können Sie dieses Feld leer lassen.

  5. Klicken Sie auf Übernehmen.

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

Sie können dauerhaft fehlgeschlagene Streams auch auf der Seite Streamdetails wiederherstellen. Klicken Sie dazu auf Stream wiederherstellen, wenn Sie sich detaillierte Informationen zu Ihrem Stream ansehen.

Stream für eine SQL Server-Quelle wiederherstellen

Sie haben die folgenden 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 einige 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 Transaktionslogs und Änderungstabellen enthält 20 hexadezimale Zeichen, wird in Transaktionslogs jedoch durch ein Trennzeichen getrennt. Beispiel:

    • LSN in Transaktionslogs: 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 Clouddie Seite Streams auf.

    Zur Seite „Streams“

  2. Klicke in der Zeile mit dem Namen des Streams, den du wiederherstellen möchtest, auf Wiederherstellen.

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

  4. Klicken Sie auf Übernehmen.

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

Stream für eine MongoDB-Quelle wiederherstellen

Die Streamwiederherstellung für MongoDB-Quellen ist über die Datastream API verfügbar. Sie haben die folgenden Möglichkeiten, einen MongoDB-Stream wiederherzustellen:

  • Letzte Startposition: Wählen Sie diese Option aus, wenn Sie den Stream ab dem aktuellen Zeitstempel im MongoDB-Oplog fortsetzen möchten. Die fehlenden Ereignisse gehen verloren, können aber durch einen Backfill wiederhergestellt werden.

  • Bestimmte Startposition: Wählen Sie diese Option aus, um den Stream ab einem ausgewählten Zeitstempel fortzusetzen. Der Zeitstempel, den Sie in Ihrer Anfrage verwenden, muss gültig sein. Das bedeutet, dass er nicht früher als die früheste im MongoDB-Oplog verfügbare Position und nicht in der Zukunft liegen darf.

Informationen zum Erstellen einer Anfrage zum Wiederherstellen eines MongoDB-Streams finden Sie in der Referenzdokumentation zur Datastream API.

Informationen zum MongoDB-Vorgangslog finden Sie in der MongoDB-Dokumentation.

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

Sie können ein manuelles Failover durchführen und die Streamwiederherstellung verwenden, um zu vermeiden, dass Sie Ihre Streams während der Wartung oder bei einem Ausfall der primären Instanz von Grund auf neu erstellen müssen. Im Allgemeinen unterstützt Datastream keine Failover auf Replikate, da dadurch die Kontinuität des Binlog unterbrochen wird. Sie können jedoch die folgenden Schritte ausführen, 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 Datenaktualitätsmesswert muss auf 0 festgelegt sein. Das bedeutet, dass im Datastream alle Änderungen erfasst wurden und keine neuen Ereignisse aus der Quelle gelesen werden müssen. Weitere Informationen finden Sie unter Stream überwachen.
  3. Führen Sie ein Failover auf die neue Datenbankinstanz aus.
  4. Aktualisieren Sie bei Bedarf das Verbindungsprofil des Streams für die neue Datenbankinstanz. Möglicherweise müssen Sie beispielsweise den Datenbank-Hostname oder die IP-Adresse ändern. Weitere Informationen finden Sie unter Verbindungsprofile ändern.
  5. Stellen Sie den Stream an einer bestimmten Position in der Failover-Instanz wieder her, um die CDC-Kontinuität zu gewährleisten.

Nächste Schritte