Änderungsstreams erstellen und verwalten

Auf dieser Seite wird beschrieben, wie Sie Spanner-Änderungsstreams erstellen, ändern und ansehen. Weitere Informationen finden Sie im Hilfeartikel Änderungsstreams.

Da Änderungsstreams Schemaobjekte sind, erstellen und verwalten Sie sie über dieselben DDL-gestützten Schemaaktualisierungen, die auch für andere Arten von Datenbankdefinitionsarbeiten wie das Erstellen von Tabellen oder das Hinzufügen von Indexen verwendet werden.

Spanner startet einen lang andauernden Vorgang, nachdem Sie eine DDL-Anweisung zur Schemaänderung gesendet haben, einschließlich derer, mit denen Änderungsstreams erstellt, geändert oder gelöscht werden. Nach Abschluss dieses lang andauernden Vorgangs beginnt ein neuer oder geänderter Änderungsstream damit, die durch die neue Konfiguration angegebenen Spalten oder Tabellen zu beobachten.

Änderungsstream erstellen

Zum Erstellen eines Änderungsstreams müssen Sie seinen Namen und die Schemaobjekte angeben, die er überwacht: entweder die gesamte Datenbank oder eine Liste bestimmter Tabellen und Spalten. Optional können Sie Folgendes angeben:

GoogleSQL

Die DDL-Syntax zum Erstellen eines Änderungsstreams mit GoogleSQL sieht so aus:

CREATE CHANGE STREAM change_stream_name
  [FOR column_or_table_watching_definition[, ... ] ]
  [
    OPTIONS (
      retention_period = timespan,
      value_capture_type = type,
      exclude_ttl_deletes = boolean,
      exclude_insert = boolean,
      exclude_update = boolean,
      exclude_delete = boolean
    )
  ]

PostgreSQL

Die DDL-Syntax zum Erstellen eines Änderungsstreams mit PostgreSQL sieht so aus:

CREATE CHANGE STREAM change_stream_name
  [FOR column_or_table_watching_definition[, ... ] ]
  [
    WITH (
      retention_period = timespan,
      value_capture_type = type,
      exclude_ttl_deletes = boolean,
      exclude_insert = boolean,
      exclude_update = boolean,
      exclude_delete = boolean
    )
  ]

Ein neuer Änderungsstream beginnt, die zugewiesenen Schemaobjekte zu beobachten, sobald der lang andauernde Vorgang abgeschlossen ist, der ihn erstellt hat.

Die folgenden Beispiele veranschaulichen das Erstellen von Änderungsstreams mit verschiedenen Konfigurationen.

Ganze Datenbank beobachten

Verwenden Sie das Schlüsselwort ALL, um einen Änderungsstream zu erstellen, der jede Datenänderung in den Tabellen einer Datenbank überwacht:

CREATE CHANGE STREAM EverythingStream
FOR ALL;

Die Konfiguration ALL beinhaltet alle zukünftigen Datentabellen und -spalten der Datenbank, sobald sie erstellt wurden. Sie enthält keine Ansichten, Informationsschematabellen oder andere Objekte, die keine normalen Datentabellen sind.

Bestimmte Tabellen beobachten

Wenn Sie den Bereich eines Änderungsstreams auf bestimmte Tabellen und nicht auf eine ganze Datenbank beschränken möchten, geben Sie eine Liste mit einer oder mehreren Tabellen an:

CREATE CHANGE STREAM SingerAlbumStream
FOR Singers, Albums;

Spanner aktualisiert Änderungsstreams, die ganze Tabellen beobachten, automatisch, um Schemaänderungen zu berücksichtigen, die sich auf diese Tabellen auswirken, z. B. hinzugefügte oder entfernte Spalten.

Bestimmte Spalten beobachten

Verwenden Sie die Syntax table(column_1[, column_2, ...]), um Änderungen an einer oder mehreren spezifischen Nicht-Schlüsselspalten in Tabellen zu beobachten, die Sie benennen:

CREATE CHANGE STREAM NamesAndTitles
FOR Singers(FirstName, LastName), Albums(Title);

Sie können hier keine Primärschlüsselspalten angeben, da jeder Änderungsstream immer die Primärschlüssel jeder Tabelle erfasst, die er beobachtet. Dadurch kann die geänderte Zeile bei jedem Datenänderungseintrag anhand ihres Primärschlüssels identifiziert werden.

Tabellen und Spalten in einem einzigen Stream beobachten

Sie können die Syntax für die Tabellen- und Spaltenbeobachtung aus den beiden vorherigen Beispielen in einem einzigen Änderungsstream kombinieren:

CREATE CHANGE STREAM NamesAndAlbums
FOR Singers(FirstName, LastName), Albums;

Längere Aufbewahrungsdauer festlegen

Wenn Sie eine Aufbewahrungsdauer für Änderungsstreamdaten angeben möchten, die länger als der Standardwert von einem Tag ist, legen Sie für retention_period einen Zeitraum von bis zu einer Woche fest, der entweder in Stunden (h) oder Tagen (d) ausgedrückt wird.

Zwei Beispiele:

GoogleSQL

CREATE CHANGE STREAM LongerDataRetention
FOR ALL
OPTIONS ( retention_period = '36h' );
CREATE CHANGE STREAM MaximumDataRetention
FOR ALL
OPTIONS ( retention_period = '7d' );

PostgreSQL

CREATE CHANGE STREAM LongerDataRetention
FOR ALL
WITH ( retention_period = '36h' );
CREATE CHANGE STREAM MaximumDataRetention
FOR ALL
WITH ( retention_period = '7d' );

Anderen Werterfassungstyp angeben

Wenn Sie einen anderen Werterfassungstyp für Änderungsstreams als OLD_AND_NEW_VALUES angeben möchten, legen Sie value_capture_type wie in den folgenden Beispielen auf NEW_VALUES oder NEW_ROW fest:

GoogleSQL

CREATE CHANGE STREAM NewRowChangeStream
FOR ALL
OPTIONS ( value_capture_type = 'NEW_ROW' );
CREATE CHANGE STREAM NewValuesChangeStream
FOR ALL
OPTIONS ( value_capture_type = 'NEW_VALUES' );

PostgreSQL

CREATE CHANGE STREAM NewRowChangeStream
FOR ALL
WITH ( value_capture_type = 'NEW_ROW' );
CREATE CHANGE STREAM NewValuesChangeStream
FOR ALL
WITH ( value_capture_type = 'NEW_VALUES' );

TTL-basierte Löschvorgänge filtern

Mit dem Filter exclude_ttl_deletes können Sie TTL-basierte Löschungen aus dem Bereich des Änderungsstreams filtern.

Weitere Informationen zur Funktionsweise dieses Filters finden Sie unter Filter zum Löschen basierend auf der Gültigkeitsdauer.

GoogleSQL

Verwenden Sie folgenden Code, um einen Änderungsstream mit dem Filter „TTL-basierte Löschungen“ zu erstellen:

CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (exclude_ttl_deletes = true)

Ersetzen Sie Folgendes:

  • CHANGE_STREAM_NAME: der Name des neuen Änderungsstreams

Im folgenden Beispiel wird ein Änderungsstream mit dem Namen NewFilterChangeStream erstellt, der alle TTL-basierten Löschvorgänge ausschließt:

CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_ttl_deletes = true)

PostgreSQL

Verwenden Sie folgenden Code, um einen Änderungsstream mit dem Filter „TTL-basierte Löschungen“ zu erstellen:

CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (exclude_ttl_deletes = true)

Ersetzen Sie Folgendes:

  • STREAM_NAME: der Name des neuen Änderungsstreams

Im folgenden Beispiel wird ein Änderungsstream mit dem Namen NewFilterChangeStream erstellt, der alle TTL-basierten Löschvorgänge ausschließt:

CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_ttl_deletes = true)

Informationen zum Hinzufügen oder Entfernen des Filters für TTL-basierte Löschungen zu einem vorhandenen Änderungsstream finden Sie unter TTL-basierte Löschfilter ändern. Sie können Ihre Änderungsstreamfilter prüfen, indem Sie sich die Definitionen des Änderungsstreams als DDL ansehen.

Nach Tabellenänderungstyp filtern

Filtern Sie eine oder mehrere dieser Tabellenänderungen aus dem Bereich des Änderungsstreams mithilfe der folgenden verfügbaren Filteroptionen:

  • exclude_insert: Alle INSERT Tabellenänderungen ausschließen
  • exclude_update: Alle UPDATE Tabellenänderungen ausschließen
  • exclude_delete: Alle DELETE Tabellenänderungen ausschließen

Weitere Informationen zur Funktionsweise dieser Filter finden Sie unter Filter für Tabellenänderungstypen.

GoogleSQL

Verwenden Sie folgenden Code, um einen Änderungsstream mit einem oder mehreren Filtern vom Typ „Tabellenänderung“ zu erstellen:

CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (MOD_TYPE_FILTER_NAME = true)

Ersetzen Sie Folgendes:

  • CHANGE_STREAM_NAME: der Name des neuen Änderungsstreams
  • MOD_TYPE_FILTER_NAME: der Filter, den Sie hinzufügen möchten: exclude_insert, exclude_update oder exclude_delete. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie diese durch Kommas.

Im folgenden Beispiel wird ein Änderungsstream mit dem Namen NewFilterChangeStream erstellt, der die Tabellenänderungstypen INSERT und UPDATE ausschließt:

CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_insert = true, exclude_update = true)

PostgreSQL

Verwenden Sie folgenden Code, um einen Änderungsstream mit einem oder mehreren Filtern vom Typ „Tabellenänderung“ zu erstellen:

CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (MOD_TYPE_FILTER_NAME = true)

Ersetzen Sie Folgendes:

  • CHANGE_STREAM_NAME: der Name des vorhandenen Änderungsstreams
  • MOD_TYPE_FILTER_NAME: der Filter, den Sie hinzufügen möchten: exclude_insert, exclude_update oder exclude_delete. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie diese durch Kommas.

Im folgenden Beispiel wird ein Änderungsstream mit dem Namen NewFilterChangeStream erstellt, der die Transaktionstypen für die Tabellenänderungen INSERT und UPDATE ausschließt:

CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
WITH (exclude_insert = true, exclude_update = true)

Informationen zum Hinzufügen oder Entfernen eines Tabellenänderungstyp-Filters zu einem vorhandenen Änderungsstream finden Sie unter Filter nach Tabellenänderungstyp ändern. Wenn Sie prüfen möchten, welche Filter vom Tabellenänderungstyp für den Änderungsstream vorhanden sind, können Sie sich die Definitionen des Änderungsstreams als DDL ansehen.

Änderungsstreams ändern

Verwenden Sie zum Ändern der Konfiguration eines Änderungsstreams die DDL-Anweisung ALTER CHANGE STREAM. Die Syntax ähnelt der von CREATE CHANGE STREAM. Sie können ändern, welche Spalten von einem Stream betrachtet werden, oder die Länge der Datenaufbewahrungsdauer ändern. Sie können das Monitoring auch komplett aussetzen, während die Datensätze zu Datenänderungen beibehalten werden.

Ändern, was bei einem Änderungsstream angesehen wird

In diesem Beispiel wird die gesamte Tabelle Songs dem zuvor konfigurierten Änderungsstream NamesAndAlbums hinzugefügt:

ALTER CHANGE STREAM NamesAndAlbums
SET FOR Singers(FirstName, LastName), Albums, Songs;

Spanner ersetzt nach Abschluss des lange laufenden Vorgangs, der die Definition des Änderungsstreams im Schema der Datenbank aktualisiert, das Verhalten des benannten Änderungsstreams durch die neue Konfiguration.

Datenaufbewahrungsdauer eines Änderungsstreams ändern

Zum Ändern der Zeitdauer, die ein Änderungsstream seine internen Datensätze aufbewahrt, legen Sie den retention_period in einer ALTER CHANGE STREAM-DDL-Anweisung fest.

In diesem Beispiel wird die Datenaufbewahrungsdauer an den zuvor erstellten NamesAndAlbums-Änderungsstream angepasst:

GoogleSQL

ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( retention_period = '36h' );

PostgreSQL

ALTER CHANGE STREAM NamesAndAlbums
SET ( retention_period = '36h' );

Werterfassungstyp eines Änderungsstreams ändern

Wenn Sie den Werterfassungstyp eines Änderungsstreams ändern möchten, legen Sie die value_capture_type-Klausel in einer DDL-Anweisung ALTER CHANGE STREAM fest.

In diesem Beispiel wird der Werterfassungstyp in NEW_VALUES geändert.

GoogleSQL

ALTER CHANGE STREAM NamesAndAlbums
SET OPTIONS ( value_capture_type = 'NEW_VALUES' );

PostgreSQL

ALTER CHANGE STREAM NamesAndAlbums
SET ( value_capture_type = 'NEW_VALUES' );

Filter für TTL-basierte Löschvorgänge ändern

Wenn Sie den Filter TTL-basierte Löschungen für einen Änderungsstream ändern möchten, legen Sie den Filter exclude_ttl_deletes in einer ALTER CHANGE STREAM-DDL-Anweisung fest. Hiermit können Sie den Filter Ihren vorhandenen Änderungsstreams hinzufügen oder daraus entfernen.

Weitere Informationen zur Funktionsweise dieser Filter finden Sie unter Filter zum Löschen gemäß der Gültigkeitsdauer.

Filter für TTL-basierte Löschungen einem vorhandenen Änderungsstream hinzufügen

GoogleSQL

Wenn Sie einem vorhandenen Änderungsstream den TTL-basierten Löschfilter hinzufügen möchten, setzen Sie den Filter so auf true:

ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)

Ersetzen Sie Folgendes:

  • CHANGE_STREAM_NAME: der Name des vorhandenen Änderungsstreams

Im folgenden Beispiel wird der Filter exclude_ttl_deletes einem vorhandenen Änderungsstream namens NewFilterChangeStream hinzugefügt, der alle TTL-basierten Löschvorgänge ausschließt:

ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)

Dadurch werden alle TTL-basierten Löschvorgänge aus dem Änderungsstream ausgeschlossen.

PostgreSQL

Wenn Sie einem vorhandenen Änderungsstream den TTL-basierten Löschfilter hinzufügen möchten, setzen Sie den Filter so auf True:

ALTER CHANGE STREAM STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = true)

Ersetzen Sie Folgendes:

  • STREAM_NAME: der Name des vorhandenen Änderungsstreams

Im folgenden Beispiel wird der Filter exclude_ttl_deletes einem vorhandenen Änderungsstream namens NewFilterChangeStream hinzugefügt:

ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = true)

Dadurch werden alle zukünftigen TTL-basierten Löschvorgänge aus dem Änderungsstream ausgeschlossen.

Filter für TTL-basierte Löschungen aus einem vorhandenen Änderungsstream entfernen

GoogleSQL

Wenn Sie den TTL-basierten Löschfilter für einen vorhandenen Änderungsstream entfernen möchten, setzen Sie den Filter so auf False:

ALTER CHANGE STREAM STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)

Ersetzen Sie Folgendes:

  • STREAM_NAME: der Name des neuen Änderungsstreams

Im folgenden Beispiel wird der Filter exclude_ttl_deletes aus einem vorhandenen Änderungsstream namens NewFilterChangeStream entfernt:

ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)

Dies schließt alle zukünftigen TTL-basierten Löschvorgänge im Änderungsstream ein.

Sie können den Filter auch auf null setzen, um den Filter für das TTL-basierte Löschen zu entfernen.

PostgreSQL

Wenn Sie den TTL-basierten Löschfilter für einen vorhandenen Änderungsstream entfernen möchten, setzen Sie den Filter so auf False:

ALTER CHANGE STREAM STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = false)

Ersetzen Sie Folgendes:

  • STREAM_NAME: der Name des neuen Änderungsstreams

Im folgenden Beispiel wird der Filter exclude_ttl_deletes aus einem vorhandenen Änderungsstream namens NewFilterChangeStream entfernt:

ALTER CHANGE STREAM NewFilterChangeStream FOR ALL
SET (exclude_ttl_deletes = false)

Dies schließt alle zukünftigen TTL-basierten Löschvorgänge im Änderungsstream ein.

Sie können den Filter auch auf null setzen, um den Filter für das TTL-basierte Löschen zu entfernen.

Filter nach Tabellenänderungstyp ändern

Wenn Sie die Filter des Tabellenänderungstyps für einen Änderungsstream ändern möchten, legen Sie den Filtertyp in einer ALTER CHANGE STREAM-DDL-Anweisung fest. Hiermit können Sie dem Änderungsstream einen neuen Filter hinzufügen oder einen vorhandenen Filter entfernen.

Filter für Tabellenänderungstyp zu einem vorhandenen Änderungsstream hinzufügen

GoogleSQL

Wenn Sie einem vorhandenen Änderungsstream einen oder mehrere neue Filter vom Typ „Tabellenänderungstyp“ hinzufügen möchten, setzen Sie den Filter so auf true:

ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET OPTIONS (MOD_TYPE_FILTER_NAME = true)

Ersetzen Sie Folgendes:

  • CHANGE_STREAM_NAME: durch den Namen des vorhandenen Änderungsstreams ersetzen
  • MOD_TYPE_FILTER_NAME: Ersetzen Sie sie durch den Filter, den Sie hinzufügen möchten: exclude_insert, exclude_update oder exclude_delete. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie diese durch Kommas.

Im folgenden Beispiel wird der Filter exclude_delete einem vorhandenen Änderungsstream namens NewFilterChangeStream hinzugefügt:

ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = true)

PostgreSQL

Wenn Sie einem vorhandenen Änderungsstream einen oder mehrere neue Filter vom Typ „Tabellenänderungstyp“ hinzufügen möchten, setzen Sie den Filter so auf true:

ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = true)

Ersetzen Sie Folgendes:

  • CHANGE_STREAM_NAME: durch den Namen des vorhandenen Änderungsstreams ersetzen
  • MOD_TYPE_FILTER_NAME: Ersetzen Sie sie durch den Filter, den Sie hinzufügen möchten: exclude_insert, exclude_update oder exclude_delete. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie diese durch Kommas.

Im folgenden Beispiel wird der Filter exclude_delete einem vorhandenen Änderungsstream namens NewFilterChangeStream hinzugefügt:

ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = true)

Filter für Tabellenänderungstyp aus einem vorhandenen Änderungsstream entfernen

GoogleSQL

Wenn Sie einen oder mehrere vorhandene Filter vom Typ Tabellenänderungstyp im Änderungsstream entfernen möchten, setzen Sie den Filter so auf false:

ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET OPTIONS (MOD_TYPE_FILTER_NAME = false)

Ersetzen Sie Folgendes:

  • CHANGE_STREAM_NAME: durch den Namen des vorhandenen Änderungsstreams ersetzen
  • MOD_TYPE_FILTER_NAME: durch den Filter ersetzen, den Sie entfernen möchten: exclude_insert, exclude_update oder exclude_delete. Wenn Sie mehrere Filter gleichzeitig entfernen, trennen Sie diese durch Kommas.

Im folgenden Beispiel wird der Filter exclude_delete aus einem vorhandenen Änderungsstream namens NewFilterChangeStream entfernt:

ALTER CHANGE STREAM NewFilterChangeStream
SET OPTIONS (exclude_delete = false)

Sie können einen Tabellenänderungsfilter auch entfernen, indem Sie den Filter auf den Standardwert zurücksetzen. Setzen Sie dazu den Filterwert auf null.

PostgreSQL

Wenn Sie einen oder mehrere vorhandene Filter vom Typ Tabellenänderungstyp im Änderungsstream entfernen möchten, setzen Sie den Filter so auf False:

ALTER CHANGE STREAM CHANGE_STREAM_NAME
SET (MOD_TYPE_FILTER_NAME = false)

Ersetzen Sie Folgendes:

  • CHANGE_STREAM_NAME: durch den Namen des vorhandenen Änderungsstreams ersetzen
  • MOD_TYPE_FILTER_NAME: Ersetzen Sie sie durch den Filter, den Sie hinzufügen möchten: exclude_insert, exclude_update oder exclude_delete. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie diese durch Kommas.

Im folgenden Beispiel wird der Filter exclude_delete aus einem vorhandenen Änderungsstream namens NewFilterChangeStream entfernt:

ALTER CHANGE STREAM NewFilterChangeStream
SET (exclude_delete = false)

Sie können einen Tabellenänderungsfilter auch entfernen, indem Sie den Filter auf den Standardwert zurücksetzen. Setzen Sie dazu den Filterwert auf null.

Änderungsstream aussetzen

Wenn Sie möchten, dass ein Änderungsstream seine Aktivität stoppt, aber seine internen Datensätze – zumindest für die Lebensdauer der Datenaufbewahrungsdauer – speichert, können Sie ihn so ändern, dass nichts beobachtet wird.

Dazu führen Sie die DDL-Anweisung ALTER CHANGE STREAM aus, die die Definition des Änderungsstreams durch die spezielle Wortgruppe DROP FOR ALL ersetzt. Beispiel:

ALTER CHANGE STREAM MyStream DROP FOR ALL;

Der Stream ist weiterhin in der Datenbank vorhanden, beobachtet jedoch keine Objekte und generiert keine weiteren Datenänderungseinträge. Die vorhandenen Änderungseinträge bleiben gemäß der Datenaufbewahrungsrichtlinie des Streams intakt.

Um einen angehaltenen Stream fortzusetzen, geben Sie eine weitere ALTER CHANGE STREAM-Anweisung mit der vorherigen Konfiguration aus.

Änderungsstream löschen

Wenn Sie einen Änderungsstream endgültig löschen möchten, geben Sie eine DROP CHANGE STREAM-Anweisung aus, die den Namen des Streams enthält:

DROP CHANGE STREAM NamesAndAlbums;

Spanner stoppt den Stream sofort, entfernt ihn aus dem Schema der Datenbank und löscht die Datensätze der Datenänderung.

Änderungsstreams auflisten und ansehen

Die Google Cloud Console bietet eine Weboberfläche zum Auflisten und Überprüfen der Änderungsstreamdefinitionen einer Datenbank. Sie können die Struktur von Änderungsstreams auch als entsprechende DDL-Anweisungen oder durch Abfragen des Informationsschemas der Datenbank ansehen.

Änderungsstreams mit der Google Cloud Console ansehen

So rufen Sie eine Liste der Änderungsstreams einer Datenbank und deren Definitionen auf:

  1. Rufen Sie in der Google Cloud Console die Seite „Spanner-Instanzen“ auf.

    Weiter zur Seite "Instanzen"

  2. Rufen Sie die entsprechende Instanz und Datenbank auf.

  3. Klicken Sie im Navigationsmenü auf Streams ändern.

Dadurch wird eine Liste aller Änderungsstreams dieser Datenbank angezeigt und die jeweilige Konfiguration wird zusammengefasst. Wenn Sie auf den Namen eines Streams klicken, werden weitere Details zu den Tabellen und Spalten angezeigt, die beobachtet werden.

Definitionen von Änderungsstreams als DDL ansehen

Das Aufrufen des Schemas einer Datenbank als DDL enthält Beschreibungen aller zugehörigen Änderungsstreams, wo sie als CREATE CHANGE STREAM-Anweisungen angezeigt werden.

  • Klicken Sie dazu in der Console auf der Seite der Datenbank in der Google Cloud Console auf den Link Entsprechende DDL anzeigen.

  • Verwenden Sie dazu den Befehl ddl describe der Google Cloud CLI über die Befehlszeile.

Informationsschema zu Änderungsstreams abfragen

Sie können das Informationsschema einer Datenbank direkt zu ihren Änderungsstreams abfragen. Die folgenden Tabellen enthalten die Metadaten, die die Namen von Änderungsstreams, die von ihnen beobachteten Tabellen und Spalten sowie ihre Aufbewahrungsdauer definieren:

Best Practices zum Ändern von Streams

Im Folgenden finden Sie einige Best Practices zum Konfigurieren und Verwalten von Änderungsstreams.

Separate Metadatendatenbank verwenden

Änderungsstreams verwenden eine Metadatendatenbank, um den internen Zustand beizubehalten. Die Metadatendatenbank kann mit der Datenbank, die die Änderungsstreams enthält, identisch sein oder sich von dieser unterscheiden. Wir empfehlen, eine separate Datenbank für den Metadatenspeicher zu erstellen.

Der Spanner-Connector für Änderungsstreams benötigt Lese-/Schreibberechtigungen für die Metadatendatenbank. Sie müssen diese Datenbank nicht mit einem Schema vorbereiten. Der Connector übernimmt dies für Sie.

Durch die Verwendung einer separaten Metadatendatenbank werden Komplexitäten beseitigt, die entstehen könnten, wenn dem Connector erlaubt wird, direkt in Ihre Anwendungsdatenbank zu schreiben:

  • Durch die Trennung der Metadatendatenbank von der Produktionsdatenbank mit dem Änderungsstream benötigt der Connector nur Leseberechtigungen für die Produktionsdatenbank.

  • Wenn Sie den Traffic des Connectors auf eine separate Metadatendatenbank beschränken, werden vom Connector selbst ausgeführte Schreibvorgänge nicht in den Produktionsänderungsstreams berücksichtigt. Das ist besonders relevant für Änderungsstreams, die die gesamte Datenbank überwachen.

Wenn keine separate Datenbank zum Speichern der Metadaten verwendet wird, sollten Sie die CPU-Auswirkungen des Änderungsstream-Connectors auf die Instanzen überwachen.

Benchmarks für neue Änderungsstreams erstellen und bei Bedarf Größe anpassen

Bevor Sie Ihrer Produktionsinstanz neue Änderungsstreams hinzufügen, sollten Sie ein Benchmarking einer realistischen Arbeitslast auf einer Staging-Instanz mit aktivierten Änderungsstreams in Betracht ziehen. So können Sie feststellen, ob Sie Ihrer Instanz Knoten hinzufügen müssen, um die Rechen- und Speicherkapazität zu erhöhen.

Führen Sie diese Tests aus, bis sich die CPU- und Speichermesswerte stabilisiert haben. Optimal sollte die CPU-Auslastung der Instanz unter den empfohlenen Höchstwerten bleiben und ihre Speichernutzung sollte das Speicherlimit der Instanz nicht überschreiten.

Verschiedene Regionen für das Load-Balancing verwenden

Wenn Sie Änderungsstreams in einer multiregionalen Instanzkonfiguration verwenden, sollten Sie die Verarbeitungspipelines in einer anderen Region als der standardmäßig führenden Region ausführen. Dies hilft, die Streaminglast auf Replikate zu verteilen, die nicht als Leader fungieren. Wenn Sie jedoch die geringstmögliche Streamingverzögerung gegenüber dem Load-Balancing priorisieren müssen, führen Sie die Streaminglast in der führenden Region aus.

Nächste Schritte