Backfill für die Objekte eines Streams verwalten

Mit dem Backfill in Datastream können Sie einen Snapshot von Verlaufsdaten aus Ihren Quellobjekten in Ihr Ziel laden, während gleichzeitig Change Data Capture ausgeführt wird. Sie können einen vollständigen oder teilweisen Backfill manuell initiieren, wenn Sie beim Konfigurieren der Quelle nicht Verlaufsdaten-Backfill ausgewählt haben. Wenn Sie einen Backfill initiieren, können Sie auch Zielobjekte neu synchronisieren, falls Daten versehentlich gelöscht wurden.

Während ein Stream ausgeführt wird, können Sie den Objektstatus überwachen und einen aktiven Backfill jederzeit beenden. Wenn Sie einen Vorgang beenden, wird verhindert, dass beschädigte Schemas oder Daten repliziert werden. Außerdem können Sie parallele Aufgaben nacheinander ausführen, um die Quelllast zu reduzieren.

Objektstatus

Die verschiedenen Status im Lebenszyklus des Initiierens und Beendens des Backfills für ein Objekt sind:

  • Kein Status (in der Benutzeroberfläche als - dargestellt): Gründe für diesen Status sind:

    • Der Stream wurde nicht gestartet.
    • Das Kästchen Verlaufsdaten-Backfill wurde nicht ausgewählt (der Backfill ist also als manuell definiert).
    • Das Objekt ist explizit von automatisch Backfills ausgeschlossen.
    • Der Stream ist so konfiguriert, dass zukünftige Tabellen enthalten sind. Wenn dies der Fall ist, wird für neue Tabellen, die der Quelle hinzugefügt werden, keine automatische Backfill-Aufgabe erstellt, da neue Tabellen in der Regel keine Verlaufsdaten für den Backfill enthalten.
  • Pending: Der Backfill für das Objekt wurde noch nicht gestartet.

  • Active: Der Backfill für das Objekt ist im Gange.

  • Completed: Der Backfill für das Objekt ist abgeschlossen.

  • Stopped: Der Backfill für das Objekt wird beendet. Wenn der Backfill für das Objekt noch einmal initiiert wird, streamt Datastream alle vorhandenen Daten, die mit dem Objekt verknüpft sind, von der Quelle zum Ziel.

  • Failed: Der Backfill für das Objekt ist fehlgeschlagen und muss noch einmal initiiert werden.

Backfill initiieren

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

    Zur Seite „Streams“

  2. Klicken Sie auf den Stream, der Objekte enthält, für die Sie einen Backfill initiieren möchten.

  3. Klicken Sie auf den Tab Objekte.

  4. Klicken Sie das Kästchen für jedes Objekt an, für das Sie die Backfill-Funktion initiieren möchten.

  5. Klicken Sie auf Backfill initiieren.

  6. Wenn Sie nur ein Objekt ausgewählt haben, klicken Sie im Dialogfeld auf OBJEKT-BACKFILL STARTEN. Wenn Sie mehrere Objekte ausgewählt haben, klicken Sie auf OBJEKT-BACKFILLS STARTEN.

    Datastream startet den Backfill für die ausgewählten Objekte und der Status der einzelnen Objekte ändert sich von Pending zu Active und dann zu Completed. Wenn ein Objekt den Status Completed hat, bedeutet das, dass Datastream alle Daten für das Objekt gelesen hat, die Daten aber möglicherweise noch in das Ziel geladen werden.

Teilweisen Backfill initiieren

Zusätzlich zu vollständigen Backfills können Sie einen partiellen Backfill ausführen, um eine bestimmte Teilmenge von Daten aus der Quelle in das Ziel zu laden. Dazu geben Sie eine SQL-WHERE-Klausel als benutzerdefinierten Filter an.

Datastream unterstützt den teilweisen Backfill für die folgenden Quellen:

  • SQL Server
  • Spanner
  • Oracle
  • PostgreSQL
  • MySQL

So initiieren Sie einen teilweisen Backfill:

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

    Zur Seite „Streams“

  2. Klicken Sie auf den Stream, der Objekte enthält, für die Sie einen Backfill initiieren möchten.

  3. Klicken Sie auf den Tab Objekte.

  4. Wählen Sie das Objekt aus, für das Sie den Backfill initiieren möchten.

  5. Klicken Sie auf Backfill initiieren.

  6. Markieren Sie im angezeigten Bereich das Kästchen Benutzerdefinierten Filter aktivieren.

  7. Geben Sie die SQL-WHERE-Klausel ein. Beispiel: product_id > 12 AND timestamp = '2025-01-06T22:00:00.00'.

  8. Klicken Sie auf Backfill initiieren.

Datastream validiert den Filter. Wenn die Validierung fehlschlägt, wird über dem Editor eine Fehlermeldung angezeigt. Wenn die Validierung erfolgreich ist, startet Datastream den Backfill-Job.

Unterstützte Syntax für benutzerdefinierte Filter

Wenn Sie einen benutzerdefinierten Filter angeben, unterstützt Datastream eine grundlegende Teilmenge der SQL-WHERE-Klauselsyntax. Zu den unterstützten Elementen gehören:

  • Logische Operatoren: AND, OR
  • Vergleichsoperatoren: =, <, >, <=, >=, !=
  • Bedingungen: IN, NOT IN, IS NULL, IS NOT NULL
  • Gruppierung: Klammern () zum Definieren von Bedingungsgruppen
  • Werte:

    • Strings: Text in einfachen Anführungszeichen, z. B. 'value',
    • Zahlen: Ganzzahlen (123), Dezimalzahlen (123.45), negative Zahlen (-10) und Zahlen mit Exponenten (1.2e3).
    • Boolesche Werte: TRUE oder FALSE (Groß- und Kleinschreibung beachten).
  • IDs:

    • Qualifizierung: Spaltennamen können vollständig qualifiziert werden, indem Punkte verwendet werden, um das Schema oder die Tabelle anzugeben, z. B. myColumn, myTable.myColumn oder mySchema.myTable.myColumn.
    • Nicht in Anführungszeichen gesetzte Kennungen: Sie können Buchstaben, Ziffern und Unterstriche enthalten und müssen mit einem Buchstaben oder Unterstrich beginnen. Die Berücksichtigung der Groß-/Kleinschreibung bei Spalten- oder Tabellennamen hängt von der Zieldatenbank ab.
    • Kennungen in doppelten Anführungszeichen: müssen in doppelte Anführungszeichen (") gesetzt werden.

Einschränkungen bei teilweisem Backfill

Bestimmte Anweisungen, Operatoren und Schlüsselwörter sind explizit verboten und ihre Verwendung führt zu einem Fehler. Dazu gehören:

  • Kommentare wie -- oder /* */.
  • Funktionen, z. B. UPPER(column) und NOW().
  • Arithmetische Ausdrücke, z. B. column + 1 > 10.
  • Der Operator LIKE. Platzhalter wie % oder _ werden mit LIKE nicht unterstützt.
  • Der Operator BETWEEN. Verwenden Sie stattdessen >= und <=.
  • Unterabfragen, z. B. (SELECT ...) in der WHERE-Klausel.
  • CASE-Anweisungen, z. B. CASE WHEN ... END.
  • Spaltenvergleiche, z. B. column1 = column2. Vergleiche müssen mit Literalen erfolgen.
  • DATE und TIME sind spezifische Typen oder Funktionen.
  • Array- oder JSON-spezifische Operatoren.
  • Explizite Umwandlung: z. B. CAST(column AS INT).

Backfill beenden

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

    Zur Seite „Streams“

  2. Klicken Sie auf den Stream mit den Objekten, für die Sie den Backfill beenden möchten.

  3. Klicken Sie auf den Tab Objekte.

  4. Klicken Sie das Kästchen für jedes Objekt an, für das Sie den Backfill beenden möchten.

  5. Klicken Sie auf Backfill beenden.

  6. Wenn Sie nur ein Objekt ausgewählt haben, klicken Sie im Dialogfeld auf Backfill für Objekt beenden. Wenn Sie mehrere Objekte ausgewählt haben, klicken Sie auf Backfills für Objekte beenden.

    Datastream beendet den Backfill für die ausgewählten Objekte und der Status der einzelnen Objekte ändert sich in Stopped.

    Wenn ein Objekt diesen Status hat, wird der Backfill für das Objekt beendet. Wenn der Backfill für das Objekt noch einmal initiiert wird, streamt Datastream alle vorhandenen Daten, die mit dem Objekt verknüpft sind, von der Quelle zum Ziel.

Nächste Schritte