Auf dieser Seite wird beschrieben, wie Sie Spanner-Änderungsstreams erstellen, ändern und ansehen. Weitere Informationen zu Änderungsstreams
Da es sich bei Änderungsstreams um Schemaobjekte handelt, werden sie über dieselben DDL-gesteuerten Schemaaktualisierungen erstellt und verwaltet, die auch für andere Arten der Datenbankdefinition, z. B. das Erstellen von Tabellen oder das Hinzufügen von Indexen, verwendet werden.
Spanner startet einen lang andauernden Vorgang, nachdem Sie eine schemaändernde DDL-Anweisung gesendet haben, einschließlich der DDL-Anweisung, die zum Erstellen, Ändern oder Löschen von Änderungsstreams verwendet wird. 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
Um einen Änderungsstream zu erstellen, müssen Sie seinen Namen und die Schemaobjekte angeben, die er überwacht: entweder die gesamte Datenbank oder eine Liste bestimmter Tabellen und Spalten. Sie können optional Folgendes angeben:
- Aufbewahrungsdauer, um die standardmäßige Aufbewahrungsdauer von einem Tag zu überschreiben
- Werterfassungstyp, um den Standardwert Erfassungstyp
OLD_AND_NEW_VALUES
zu überschreiben. - Filter für TTL-basierte Löschungen, wenn Sie TTL-basierte Löschungen aus Ihren Änderungsstreams herausfiltern möchten
Tabellenänderungen ausschließen, um alle Tabellenänderungen vom Typ
INSERT
,UPDATE
oderDELETE
auszuschließen
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.
Gesamte Datenbank beobachten
Um einen Änderungsstream zu erstellen, der jede Datenänderung in den Tabellen einer Datenbank beobachtet, verwenden Sie das Schlüsselwort ALL
:
CREATE CHANGE STREAM EverythingStream
FOR ALL;
Die ALL
-Konfiguration schließt implizit alle zukünftigen Datentabellen und -spalten der Datenbank ein, sobald sie erstellt wurden. Ansichten, Informationsschematabellen oder andere Objekte sind in der Regel nicht enthalten.
Bestimmte Tabellen beobachten
Wenn Sie den Geltungsbereich eines Änderungsstreams auf bestimmte Tabellen statt 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 automatisch Änderungsstreams, die ganze Tabellen beobachten, um Schemaänderungen widerzuspiegeln, 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üsselbasierten Spalten 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 beobachteten Tabelle verfolgt. Dadurch kann jeder Datensatz für Datenänderung die geänderte Zeile anhand ihres Primärschlüssels identifizieren.
Tabellen und Spalten in einem Stream beobachten
Sie können die Tabellen- und Spaltenüberwachungssyntax 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 die Standardeinstellung von einem Tag ist, legen Sie für retention_period
einen Zeitraum von bis zu einer Woche fest. Sie können entweder Stunden (h
) oder Tage (d
) angeben.
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 den Änderungsstream als OLD_AND_NEW_VALUES
angeben möchten, legen Sie für value_capture_type
entweder NEW_VALUES
oder NEW_ROW
fest, wie in den folgenden Beispielen gezeigt:
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 für Gültigkeitsdauer-basierte Löschvorgänge.
GoogleSQL
So erstellen Sie einen Änderungsstream mit dem TTL-basierten Löschfilter:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (exclude_ttl_deletes = true)
Ersetzen Sie Folgendes:
- CHANGE_STREAM_NAME: der Name Ihres neuen Änderungsstreams
Im folgenden Beispiel wird ein Änderungsstream namens NewFilterChangeStream
erstellt, der alle TTL-basierten Löschvorgänge ausschließt:
CREATE CHANGE STREAM NewFilterChangeStream FOR ALL
OPTIONS (exclude_ttl_deletes = true)
PostgreSQL
So erstellen Sie einen Änderungsstream mit dem TTL-basierten Löschfilter:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (exclude_ttl_deletes = true)
Ersetzen Sie Folgendes:
- STREAM_NAME: der Name Ihres neuen Änderungsstreams
Im folgenden Beispiel wird ein Änderungsstream namens 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 TTL-basierten Löschfilters in einem vorhandenen Änderungsstream finden Sie unter TTL-basierte Löschfilter ändern. Sie können die Filter für den Änderungsstream 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
: AlleINSERT
-Tabellenänderungen ausschließenexclude_update
: AlleUPDATE
-Tabellenänderungen ausschließenexclude_delete
: AlleDELETE
-Tabellenänderungen ausschließen
Weitere Informationen zur Funktionsweise dieser Filter finden Sie unter Filter für Tabellenänderungstypen.
GoogleSQL
So erstellen Sie einen Änderungsstream mit einem oder mehreren Tabellenänderungstyp-Filtern:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
OPTIONS (MOD_TYPE_FILTER_NAME = true)
Ersetzen Sie Folgendes:
- CHANGE_STREAM_NAME: der Name Ihres neuen Änderungsstreams
- MOD_TYPE_FILTER_NAME ist der Filter, den Sie hinzufügen möchten:
exclude_insert
,exclude_update
oderexclude_delete
. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie die einzelnen Filter durch Kommas.
Im folgenden Beispiel wird ein Änderungsstream namens 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
So erstellen Sie einen Änderungsstream mit einem oder mehreren Tabellenänderungstyp-Filtern:
CREATE CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
WITH (MOD_TYPE_FILTER_NAME = true)
Ersetzen Sie Folgendes:
- CHANGE_STREAM_NAME: der Name Ihres vorhandenen Änderungsstreams
- MOD_TYPE_FILTER_NAME ist der Filter, den Sie hinzufügen möchten:
exclude_insert
,exclude_update
oderexclude_delete
. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie die einzelnen Filter durch Kommas.
Im folgenden Beispiel wird ein Änderungsstream namens NewFilterChangeStream
erstellt, der die Transaktionstypen 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 Filters für Tabellenänderungstyp in einem vorhandenen Änderungsstream finden Sie unter Filter nach Tabellenänderungstyp ändern. Sie können prüfen, welche Filter für Tabellenänderungstypen für Ihren Änderungsstream vorhanden sind, indem Sie sich die Definitionen des Änderungsstreams als DDL ansehen.
Änderungsstream ändern
Verwenden Sie die DDL-Anweisung ALTER CHANGE STREAM
, um die Konfiguration eines Änderungsstreams zu ändern. Sie verwendet eine ähnliche Syntax wie CREATE CHANGE STREAM
. Sie können ändern, welche Spalten ein Stream beobachtet, oder die Länge der Aufbewahrungsdauer ändern. Sie können die Überwachung auch aussetzen und gleichzeitig die Änderungseinträge von Daten beibehalten.
Anpassen, was sich ein Änderungsstream ansieht
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 das Verhalten des benannten Änderungsstreams nach Abschluss des lang andauernden Vorgangs, durch den die Definition des Änderungsstreams im Datenbankschema aktualisiert wird, durch die neue Konfiguration.
Aufbewahrungsdauer für Daten eines Änderungsstreams ändern
Wenn Sie ändern möchten, wie lange die internen Datensätze eines Änderungsstreams aufbewahrt werden, legen Sie retention_period
in einer DDL-Anweisung ALTER CHANGE STREAM
fest.
In diesem Beispiel wird die Aufbewahrungsdauer für den zuvor erstellten Änderungsstream NamesAndAlbums
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 ALTER CHANGE STREAM
-DDL-Anweisung fest.
In diesem Beispiel wird der Werterfassungstyp auf 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öschvorgänge für einen Änderungsstream ändern möchten, legen Sie den Filter exclude_ttl_deletes
in einer DDL-Anweisung ALTER CHANGE STREAM
fest. Damit können Sie den Filter vorhandenen Änderungsstreams hinzufügen oder ihn daraus entfernen.
Weitere Informationen zur Funktionsweise dieser Filter finden Sie unter Filter für Gültigkeitsdauer-basierte Löschvorgänge.
Filter für TTL-basierte Löschungen einem vorhandenen Änderungsstream hinzufügen
GoogleSQL
Wenn Sie den TTL-basierten Löschfilter einem vorhandenen Änderungsstream hinzufügen möchten, legen Sie den Filter so auf true
fest:
ALTER CHANGE STREAM CHANGE_STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = true)
Ersetzen Sie Folgendes:
- CHANGE_STREAM_NAME: der Name Ihres 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 den TTL-basierten Löschfilter einem vorhandenen Änderungsstream hinzufügen möchten, legen Sie den Filter so auf True
fest:
ALTER CHANGE STREAM STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = true)
Ersetzen Sie Folgendes:
- STREAM_NAME: der Name Ihres 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, legen Sie den Filter so auf False
fest:
ALTER CHANGE STREAM STREAM_NAME FOR ALL
SET OPTIONS (exclude_ttl_deletes = false)
Ersetzen Sie Folgendes:
- STREAM_NAME: der Name Ihres 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 TTL-basierte Löschungen zu entfernen.
PostgreSQL
Wenn Sie den TTL-basierten Löschfilter für einen vorhandenen Änderungsstream entfernen möchten, legen Sie den Filter so auf False
fest:
ALTER CHANGE STREAM STREAM_NAME FOR ALL
SET (exclude_ttl_deletes = false)
Ersetzen Sie Folgendes:
- STREAM_NAME: der Name Ihres 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 TTL-basierte Löschungen zu entfernen.
Filter nach Tabellenänderungstyp ändern
Wenn Sie die Filter für Tabellenänderungstypen für einen Änderungsstream ändern möchten, legen Sie den Filtertyp in einer DDL-Anweisung ALTER CHANGE STREAM
fest. Damit können Sie dem Änderungsstream einen neuen Filter hinzufügen oder einen vorhandenen Filter daraus entfernen.
Filter für Tabellenänderungstyp einem vorhandenen Änderungsstream hinzufügen
GoogleSQL
Wenn Sie einem vorhandenen Änderungsstream einen oder mehrere neue Filter für Tabellenänderungstypen hinzufügen möchten, legen Sie den Filter so auf true
fest:
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
oderexclude_delete
. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie die einzelnen Filter 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 für Tabellenänderungstypen hinzufügen möchten, legen Sie den Filter so auf true
fest:
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
oderexclude_delete
. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie die einzelnen Filter 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 des Tabellenänderungstyps aus dem Ä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: Ersetzen Sie sie durch den Filter, den Sie entfernen möchten:
exclude_insert
,exclude_update
oderexclude_delete
. Wenn Sie mehrere Filter gleichzeitig entfernen, trennen Sie sie 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 ihn auf den Standardwert zurücksetzen. Legen Sie dazu den Filterwert auf null
fest.
PostgreSQL
Wenn Sie einen oder mehrere vorhandene Filter des Tabellenänderungstyps aus dem Ä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
oderexclude_delete
. Wenn Sie mehrere Filter gleichzeitig hinzufügen, trennen Sie die einzelnen Filter 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 ihn auf den Standardwert zurücksetzen. Legen Sie dazu den Filterwert auf null
fest.
Änderungsstream aussetzen
Wenn Sie möchten, dass ein Änderungsstream seine Aktivitäten anhält, aber seine internen Datensätze aufbewahrt – zumindest für die Dauer der Aufbewahrungsdauer, können Sie ihn so ändern, dass er keine Daten mehr beobachtet.
Geben Sie dazu die DDL-Anweisung ALTER CHANGE STREAM
aus, die die Definition des Änderungsstreams durch die spezielle Formulierung 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 Datensätze zu Datenänderungen. Die vorhandenen Änderungsdatensätze bleiben gemäß der Datenaufbewahrungsrichtlinie des Streams intakt.
Geben Sie eine weitere ALTER CHANGE STREAM
-Anweisung mit der vorherigen Konfiguration aus, um einen gesperrten Stream fortzusetzen.
Änderungsstream löschen
Wenn Sie einen Änderungsstream endgültig löschen möchten, geben Sie eine DROP CHANGE STREAM
-Anweisung mit dem Namen des Streams aus:
DROP CHANGE STREAM NamesAndAlbums;
Spanner stoppt den Stream sofort, entfernt ihn aus dem Schema der Datenbank und löscht seine Datenänderungseinträge.
Änderungsstreams auflisten und ansehen
Die Google Cloud Console bietet eine Weboberfläche zum Auflisten und Prüfen der Änderungsstreamdefinitionen einer Datenbank. Sie können sich 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:
Rufen Sie in der Google Cloud Console die Seite mit den Spanner-Instanzen auf.
Rufen Sie die entsprechende Instanz und Datenbank auf.
Klicken Sie im Navigationsmenü auf Streams ändern.
Dadurch wird eine Liste aller Änderungsstreams dieser Datenbank angezeigt und deren Konfiguration zusammengefasst. Wenn Sie auf den Namen eines Streams klicken, werden weitere Details zu den beobachteten Tabellen und Spalten angezeigt.
Definitionen von Änderungsstreams als DDL ansehen
Wenn Sie das Schema einer Datenbank als DDL ansehen, enthält es Beschreibungen aller zugehörigen Änderungsstreams, in denen sie als CREATE CHANGE STREAM
-Anweisungen angezeigt werden.
Klicken Sie dazu über die Console auf der Seite der Datenbank in der Google Cloud Console auf den Link Entsprechende DDL anzeigen.
Verwenden Sie dazu über die Befehlszeile den Befehl
ddl describe
der Google Cloud CLI.
Informationsschema zu Änderungsstreams abfragen
Sie können das Informationsschema einer Datenbank zu ihren Änderungsstreams direkt abfragen. Die folgenden Tabellen enthalten die Metadaten, mit denen die Namen von Änderungsstreams, die Tabellen und Spalten, die sie beobachten, sowie ihre Aufbewahrungsdauer definiert:
Best Practices für Änderungsstreams
Im Folgenden finden Sie einige Best Practices zum Konfigurieren und Verwalten von Änderungsstreams.
Separate Metadatendatenbank verwenden
Änderungsstreams verwenden eine Metadatendatenbank, um den internen Status aufrechtzuerhalten. Die Metadatendatenbank kann mit der Datenbank identisch sein, die die Änderungsstreams enthält, oder sich von ihr unterscheiden. Wir empfehlen, eine separate Datenbank zum Speichern von Metadaten zu erstellen.
Der Connector für Spanner-Änderungsstreams benötigt Lese-/Schreibberechtigungen für die Metadatendatenbank. Sie müssen diese Datenbank nicht mit einem Schema vorbereiten. Der Connector übernimmt dies.
Durch die Verwendung einer separaten Metadatendatenbank werden Komplexitäten vermieden, die dadurch entstehen, dass der Connector direkt in die Anwendungsdatenbank schreiben kann:
Durch die Trennung der Metadatendatenbank von der Produktionsdatenbank durch den Änderungsstream benötigt der Connector nur Leseberechtigungen für die Produktionsdatenbank.
Wenn Sie den Traffic des Connectors auf eine separate Metadatendatenbank beschränken, werden Schreibvorgänge, die vom Connector selbst ausgeführt werden, nicht in die Änderungsstreams in der Produktion aufgenommen. Dies ist besonders relevant für Änderungsstreams, die die gesamte Datenbank beobachten.
Wenn keine separate Datenbank zum Speichern der Metadaten verwendet wird, empfiehlt es sich, die CPU-Auswirkungen des Änderungsstream-Connectors auf die Instanzen zu beobachten.
Benchmarks für neue Änderungsstreams ansehen und bei Bedarf die Größe anpassen
Bevor Sie Ihrer Produktionsinstanz neue Änderungsstreams hinzufügen, sollten Sie eine realistische Arbeitslast für eine Staging-Instanz mit aktivierten Änderungsstreams vergleichen. Auf diese Weise können Sie bestimmen, 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. Idealerweise sollte die CPU-Auslastung der Instanz unter den empfohlenen Höchstwerten bleiben und die 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 bei der Verteilung der Streaminglast auf Replikate, 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
Verwenden Sie Vorlagen, um einen Änderungsstream schnell mit BigQuery, Cloud Storage oder Pub/Sub zu verbinden.