Streams verwalten

Mit der Datastream API können Sie Ihre Datenreplikations-Workflows über REST API-Aufrufe oder die Google Cloud CLI automatisieren. Sie können Streams erstellen, validieren, ändern und löschen oder Streams und Streamobjekte abrufen und auflisten.

Sie können Streams auch starten, pausieren, fortsetzen oder wiederherstellen, Objekt-Backfill verwalten, Aufgaben-Nebenläufigkeit anpassen und große Oracle-Objekte streamen. Weitere Informationen zur Befehlsreferenz finden Sie unter gcloud datastream streams. Eine detaillierte Anleitung finden Sie unter Datastream APIs verwenden.

Stream erstellen

In diesem Abschnitt erfahren Sie, wie Sie einen Stream erstellen, mit dem Daten von Ihrer Quelle an ein Ziel übertragen werden. Die folgenden Beispiele sind nicht vollständig, sondern heben bestimmte Funktionen von Datastream hervor. Verwenden Sie diese Beispiele zusammen mit der API-Referenzdokumentation für Datastream, um Ihren spezifischen Anwendungsfall zu berücksichtigen.

In diesem Abschnitt werden die folgenden Anwendungsfälle behandelt:

Beispiel 1: Bestimmte Objekte in BigQuery streamen

In diesem Beispiel lernen Sie Folgendes:

  • Von MySQL zu BigQuery streamen
  • Eine Reihe von Objekten in den Stream aufnehmen
  • Schreibmodus für den Stream als „Nur anhängen“ definieren
  • Alle im Stream enthaltenen Objekte füllen

Im Folgenden finden Sie eine Anfrage zum Abrufen aller Tabellen aus schema1 und zwei bestimmter Tabellen aus schema2: tableA und tableC. Die Ereignisse werden in ein Dataset in BigQuery geschrieben.

Die Anfrage enthält nicht den Parameter customerManagedEncryptionKey. Daher wird das interne Schlüsselverwaltungssystem von Google Cloud zum Verschlüsseln Ihrer Daten anstelle von CMEK verwendet.

Der Parameter backfillAll, der mit dem Ausführen des Backfills (oder Snapshots) verknüpft ist, wird auf ein leeres Wörterbuch ({}) gesetzt. Das bedeutet, dass Datastream die Verlaufsdaten aus allen im Stream enthaltenen Tabellen backfillt.

REST

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/us-central1/streams?streamId=mysqlCdcStream
{
  "displayName": "MySQL CDC to BigQuery",
  "sourceConfig": {
    "sourceConnectionProfileName": "/projects/myProjectId1/locations/us-central1/streams/mysqlCp",
    "mysqlSourceConfig": {
      "includeObjects": {
        "mysqlDatabases": [
          { "database": "schema1" },
          {
            "database": "schema2",
            "mysqlTables": [
              {
                "table": "tableA",
                "table": "tableC"
              }
            ]
          }
        ]
      },
    }
  },
  "destinationConfig": {
    "destinationConnectionProfileName": "BigQueryCp",
    "bigqueryDestinationConfig": {
      "sourceHierarchyDatasets": {
        "datasetTemplate": {
          "location": "us",
          "datasetIdPrefix": "prefix_"
        }
      },
      "dataFreshness": "900s"
    }
  },
  "backfillAll": {}
}

gcloud

Weitere Informationen zum Erstellen eines Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Beispiel 2: Bestimmte Objekte aus einem Stream mit einer PostgreSQL-Quelle ausschließen

In diesem Beispiel erfahren Sie, wie Sie:

  • Von PostgreSQL zu BigQuery streamen
  • Objekte aus dem Stream ausschließen
  • Objekte vom Backfill ausschließen

Der folgende Code zeigt eine Anfrage zum Erstellen eines Streams, der zum Übertragen von Daten aus einer PostgreSQL-Quelldatenbank an BigQuery verwendet wird. Wenn Sie einen Stream aus einer PostgreSQL-Quelldatenbank erstellen, müssen Sie in Ihrer Anfrage zwei zusätzliche PostgreSQL-spezifische Felder angeben:

  • replicationSlot: Ein Replikations-Slot ist eine Voraussetzung für die Konfiguration einer PostgreSQL-Datenbank für die Replikation. Sie müssen für jeden Stream einen Replikations-Slot erstellen.
  • publication: Eine Publikation ist eine Gruppe von Tabellen, aus denen Sie Änderungen replizieren möchten. Der Name der Publikation muss in der Datenbank vorhanden sein, bevor ein Stream gestartet wird. Die Publikation muss mindestens die Tabellen enthalten, die in der includeObjects-Liste des Streams angegeben sind.

Der Parameter backfillAll, der mit der Durchführung des Backfills (oder Snapshots) verknüpft ist, ist so festgelegt, dass eine Tabelle ausgeschlossen wird.

REST

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams?streamId=myPostgresStream
{
  "displayName": "PostgreSQL to BigQueryCloud Storage",
  "sourceConfig": {
    "sourceConnectionProfileName": "/projects/myProjectId1/locations/us-central1/connectionProfiles/postgresCp",
    "postgresqlSourceConfig": {
      "replicationSlot": "replicationSlot1",
      "publication": "publicationA",
      "includeObjects": {
        "postgresqlSchemas": {
          "schema": "schema1"
        }
      },
      "excludeObjects": {
        "postgresqlSchemas": [
          { "schema": "schema1",
        "postgresqlTables": [
          {
            "table": "tableA",
            "postgresqlColumns": [
              { "column": "column5" }
              ]
              }
            ]
          }
        ]
      }
    }
  },
  "destinationConfig": {
    "destinationConnectionProfileName": "BigQueryCp",
    "bigqueryDestinationConfig": {
      "dataFreshness": "900s",
      "sourceHierarchyDatasets": {
        "datasetTemplate": {
           "location": "us",
           "datasetIdPrefix": "prefix_"
        }
      }
    }
  },
  "backfillAll": {
    "postgresqlExcludedObjects": {
        "postgresqlSchemas": [
          { "schema": "schema1",
            "postgresqlTables": [
              { "table": "tableA" }
            ]
          }
        ]
      }
    }
  }

gcloud

Weitere Informationen zum Erstellen eines Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Beispiel 3: Schreibmodus „Nur anhängen“ für einen Stream angeben

Beim Streamen zu BigQuery können Sie den Schreibmodus definieren: merge oder appendOnly. Weitere Informationen finden Sie unter Schreibmodus konfigurieren.

Wenn Sie den Schreibmodus in Ihrer Anfrage zum Erstellen eines Streams nicht angeben, wird der Standardmodus merge verwendet.

Die folgende Anfrage zeigt, wie Sie den appendOnly-Modus definieren, wenn Sie einen MySQL-zu-BigQuery-Stream erstellen.

REST

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/us-central1/streams?streamId=appendOnlyStream
{
  "displayName": "My append-only stream",
  "sourceConfig": {
    "sourceConnectionProfileName": "/projects/myProjectId1/locations/us-central1/streams/mysqlCp",
    "mysqlSourceConfig": {
      "includeObjects": {
        "mysqlDatabases": [
          { "database": "myMySqlDb"
          }
        ]
      }
    }
  },
  "destinationConfig": {
    "destinationConnectionProfileName": "BigQueryCp",
    "bigqueryDestinationConfig": {
      "sourceHierarchyDatasets": {
        "datasetTemplate": {
          "location": "us",
          "datasetIdPrefix": "prefix_"
        }
      },
      "appendOnly": {}
    }
  },
  "backfillAll": {}
}

gcloud

Weitere Informationen zum Erstellen eines Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Beispiel 4: In ein anderes Projekt in BigQuery streamen

Wenn Sie Ihre Datastream-Ressourcen in einem Projekt erstellt haben, aber in ein anderes Projekt in BigQuery streamen möchten, können Sie dazu eine Anfrage wie die folgende verwenden.

Wenn Sie sourceHierarchyDatasets für Ihr Ziel-Dataset angeben, müssen Sie das Feld projectId ausfüllen.

Wenn Sie singleTargetDataset für Ihr Ziel-Dataset angeben, füllen Sie das Feld datasetId im Format projectId:datasetId aus.

REST

Für sourceHierarchyDatasets:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/us-central1/streams?streamId=crossProjectBqStream1
{
  "displayName": "My cross-project stream",
  "sourceConfig": {
    "sourceConnectionProfileName": "/projects/myProjectId1/locations/us-central1/streams/mysqlCp",
    "mysqlSourceConfig": {
      "includeObjects": {
        "mysqlDatabases": [
          { "database": "myMySqlDb"
          }
        ]
      }
    }
  },
  "destinationConfig": {
    "destinationConnectionProfileName": "BigQueryCp",
    "bigqueryDestinationConfig": {
      "sourceHierarchyDatasets": {
        "datasetTemplate": {
          "location": "us",
          "datasetIdPrefix": "prefix_"
        },
        "projectId": "myProjectId2"
      }
    }
  },
  "backfillAll": {}
}

Für singleTargetDataset:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/us-central1/streams?streamId=crossProjectBqStream2
{
  "displayName": "My cross-project stream",
  "sourceConfig": {
    "sourceConnectionProfileName": "/projects/myProjectId1/locations/us-central1/streams/mysqlCp",
    "mysqlSourceConfig": {
      "includeObjects": {
        "mysqlDatabases": [
          { "database": "myMySqlDb"
          }
        ]
      }
    }
  },
  "destinationConfig": {
    "destinationConnectionProfileName": "BigQueryCp",
    "bigqueryDestinationConfig": {
      "singleTargetDataset": {
        "datasetId": "myProjectId2:myDatasetId"
      },
    }
  },
  "backfillAll": {}
}

gcloud

Für sourceHierarchyDatasets:

  datastream streams create crossProjectBqStream1 --location=us-central1
  --display-name=my-cross-project-stream --source=source-cp --mysql-source-config=mysql_source_config.json
  --destination=destination-cp --bigquery-destination-config=source_hierarchy_cross_project_config.json
  --backfill-none
  

Der Inhalt der Konfigurationsdatei source_hierarchy_cross_project_config.json:

  {"sourceHierarchyDatasets": {"datasetTemplate": {"location": "us-central1", "datasetIdPrefix": "prefix_"}, "projectId": "myProjectId2"}}
  

Für singleTargetDataset:

  datastream streams create crossProjectBqStream --location=us-central1
  --display-name=my-cross-project-stream --source=source-cp --mysql-source-config=mysql_source_config.json
  --destination=destination-cp --bigquery-destination-config=single_target_cross_project_config.json
  --backfill-none
  

Der Inhalt der Konfigurationsdatei single_target_cross_project_config.json:

  {"singleTargetDataset": {"datasetId": "myProjectId2:myDatastetId"}}
  

Weitere Informationen zum Erstellen eines Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Beispiel 5: In ein Cloud Storage-Ziel streamen

In diesem Beispiel erfahren Sie, wie Sie:

  • Von Oracle zu Cloud Storage streamen
  • Satz von Objekten definieren, die in den Stream aufgenommen werden sollen
  • CMEK zum Verschlüsseln inaktiver Daten definieren

Die folgende Anfrage zeigt, wie Sie einen Stream erstellen, der die Ereignisse in einen Bucket in Cloud Storage schreibt.

In dieser Beispielanfrage werden die Ereignisse im JSON-Ausgabeformat geschrieben und alle 100 MB oder 30 Sekunden wird eine neue Datei erstellt. Dadurch werden die Standardwerte von 50 MB und 60 Sekunden überschrieben.

Für das JSON-Format können Sie:

  • Fügen Sie eine Unified Types-Schemadatei in den Pfad ein. Dadurch schreibt Datastream zwei Dateien in Cloud Storage: eine JSON-Datendatei und eine Avro-Schemadatei. Die Schemadatei hat denselben Namen wie die Datendatei, aber mit der Erweiterung .schema.

  • gzip-Komprimierung aktivieren, damit Datastream die Dateien komprimiert, die in Cloud Storage geschrieben werden.

Mit dem Parameter backfillNone wird in der Anfrage angegeben, dass nur laufende Änderungen ohne Backfill in das Ziel gestreamt werden.

In der Anfrage wird der Parameter für kundenverwaltete Verschlüsselungsschlüssel angegeben, mit dem Sie die Schlüssel steuern können, die zum Verschlüsseln inaktiver Daten in einem Google Cloud -Projekt verwendet werden. Der Parameter bezieht sich auf den CMEK, den Datastream zum Verschlüsseln von Daten verwendet, die von der Quelle zum Ziel gestreamt werden. Außerdem wird der Schlüsselbund für Ihren CMEK angegeben.

Weitere Informationen zu Schlüsselbunden finden Sie unter Cloud KMS-Ressourcen. Weitere Informationen zum Schutz Ihrer Daten mit Verschlüsselungsschlüsseln finden Sie unter Cloud Key Management Service (KMS).

REST

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams?streamId=myOracleCdcStream
{
  "displayName": "Oracle CDC to Cloud Storage",
  "sourceConfig": {
    "sourceConnectionProfileName": "/projects/myProjectId1/locations/us-central1/
    connectionProfiles/OracleCp",
    "oracleSourceConfig": {
      "includeObjects": {
        "oracleSchemas": [
          {
            "schema": "schema1"
          }
        ]
      }
    }
  },
  "destinationConfig": {
    "destinationConnectionProfileName": "GcsBucketCp",
    "gcsDestinationConfig": {
      "path": "/folder1",
      "jsonFileFormat": {
        "schemaFileFormat": "AVRO_SCHEMA_FILE"
      },
      "fileRotationMb": 100,
      "fileRotationInterval": 30
    }
  },
  "customerManagedEncryptionKey": "projects/myProjectId1/locations/us-central1/
  keyRings/myRing/cryptoKeys/myEncryptionKey",
  "backfillNone": {}
}

gcloud

Weitere Informationen zum Erstellen eines Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Beispiel 6: In eine Apache Iceberg-Tabelle streamen

In diesem Beispiel erfahren Sie, wie Sie einen Stream konfigurieren, um Daten aus einer MySQL-Datenbank in eine Apache Iceberg-Tabelle im append-only-Modus zu replizieren. Bevor Sie die Anfrage erstellen, müssen Sie die folgenden Schritte ausführen:

  • Sie benötigen einen Cloud Storage-Bucket, in dem Sie Ihre Daten speichern möchten.
  • Cloud-Ressourcenverbindung erstellen
  • Cloud-Ressourcenverbindung Zugriff auf den Cloud Storage-Bucket gewähren

Anschließend können Sie den Stream mit der folgenden Anfrage erstellen:

REST

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/us-central1/streams?streamId=mysqlIcebergStream
{
  "displayName": "MySQL to Apache Iceberg stream",
  "sourceConfig": {
    "sourceConnectionProfileName": "/projects/myProjectId1/locations/us-central1/streams/mysqlIcebergCp",
    "mysqlSourceConfig": {
      "includeObjects": {
        "mysqlDatabases": [
          {
            "database": "my-mysql-database"
          }
        ]
      }
    }
  },
  "destinationConfig": {
    "destinationConnectionProfileName": "projects/myProjectId1/locations/us-central1/connectionProfiles/my-bq-cp-id",
    "bigqueryDestinationConfig": {
      "blmtConfig": {
        "bucket": "my-gcs-bucket-name",
        "rootPath": "my/folder",
        "connectionName": "my-project-id.us-central1.my-bigquery-connection-name",
        "fileFormat": "PARQUET",
        "tableFormat": "ICEBERG"
        },
      "singleTargetDataset": {
        "datasetId": "my-project-id:my-bigquery-dataset-id"
      },
      "appendOnly": {}
    }
  },
  "backfillAll": {}
}

gcloud

datastream streams create mysqlIcebergStream --location=us-central1
--display-name=mysql-to-bl-stream --source=source --mysql-source-config=mysql_source_config.json
--destination=destination --bigquery-destination-config=bl_config.json
--backfill-none

Der Inhalt der Quellkonfigurationsdatei mysql_source_config.json:

{"excludeObjects": {}, "includeObjects": {"mysqlDatabases":[{"database":"my-mysql-database"}]}}

Der Inhalt der Konfigurationsdatei bl_config.json:

{ "blmtConfig": { "bucket": "my-gcs-bucket-name", "rootPath": "my/folder", "connectionName": "my-project-id.us-central1.my-bigquery-connection-name", "fileFormat": "PARQUET", "tableFormat": "ICEBERG" }, "singleTargetDataset": {"datasetId": "my-project-id:my-bigquery-dataset-id"}, "appendOnly": {} }

Terraform

resource "google_datastream_stream" "stream" {
  stream_id    = "mysqlBlStream"
  location     = "us-central1"
  display_name = "MySQL to Apache Iceberg stream"

  source_config {
    source_connection_profile = "/projects/myProjectId1/locations/us-central1/streams/mysqlBlCp"
    mysql_source_config {
      include_objects {
        mysql_databases {
          database = "my-mysql-database"
        }
      }
    }
  }

  destination_config {
    destination_connection_profile = "projects/myProjectId1/locations/us-central1/connectionProfiles/my-bq-cp-id"
    bigquery_destination_config {
      single_target_dataset {
        dataset_id = "my-project-id:my-bigquery-dataset-id"
      }
      blmt_config {
        bucket          = "my-gcs-bucket-name"
        table_format    = "ICEBERG"
        file_format     = "PARQUET"
        connection_name = "my-project-id.us-central1.my-bigquery-connection-name"
        root_path       = "my/folder"
      }
      append_only {}
    }
  }

  backfill_none {}
}
    

Beispiel 7: Stream aus MongoDB im strikten JSON-Modus

In diesem Beispiel konfigurieren Sie einen Stream, um Daten aus einer MongoDB-Quelle im strikten JSON-Modus in BigQuery zu replizieren.

Standardmäßig verwendet Datastream den kanonischen JSON-Modus (CANONICAL), um die Datentreue zu priorisieren. Wenn Ihre nachgelagerten Anwendungen mit Standard-JSON-Parsern kompatibel sein müssen, können Sie den strikten JSON-Modus (STRICT) angeben.

Beim Erstellen eines Streams aus einer MongoDB-Quelle:

  • Gültige Werte für jsonMode in der API sind CANONICAL (Standard) und STRICT.
  • In der gcloud CLI gibt es kein eigenständiges Flag für den JSON-Modus. Konfigurieren Sie stattdessen die MongoDB-Quelleinstellungen über eine Konfigurationsdatei, die an das Flag --mongodb-source-config übergeben wird.

REST

Legen Sie in der Datastream REST API jsonMode im sourceConfig.mongodbSourceConfig-Objekt auf "STRICT" fest:

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/streams?streamId=STREAM_ID
{
  "displayName": "STREAM_DISPLAY_NAME",
  "sourceConfig": {
    "sourceConnectionProfile": "projects/PROJECT_ID/locations/LOCATION/connectionProfiles/SOURCE_PROFILE",
    "mongodbSourceConfig": {
      "jsonMode": "STRICT",
      "includeObjects": {
        "databases": [
          {
            "database": "DATABASE_NAME",
            "collections": [
              {
                "collection": "COLLECTION_NAME"
              }
            ]
          }
        ]
      }
    }
  },
  "destinationConfig": {
    "destinationConnectionProfile": "projects/PROJECT_ID/locations/LOCATION/connectionProfiles/DEST_PROFILE",
    "bigqueryDestinationConfig": {
      "singleTargetDataset": {
        "datasetId": "PROJECT_ID:DATASET_ID"
      }
    }
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die ID Ihres Google Cloud -Projekts.
  • LOCATION: die Region, in der der Stream erstellt wird, z. B. us-central1.
  • STREAM_ID: die Kennung des Streams.
  • STREAM_DISPLAY_NAME: Ein nutzerfreundlicher Name für den Stream.
  • SOURCE_PROFILE: die Kennung des MongoDB-Quellverbindungsprofils.
  • DEST_PROFILE: die Kennung des Zielverbindungsprofils.
  • DATABASE_NAME: der Name der Datenbank im MongoDB-Quellcluster.
  • COLLECTION_NAME: der Name der Sammlung in der Datenbank.
  • DATASET_ID: die Kennung des Ziel-Datasets in BigQuery.

gcloud

So erstellen Sie einen Stream mit einer MongoDB-Quelle und dem strikten JSON-Modus mithilfe der gcloud CLI:

  1. Erstellen Sie eine Quellkonfigurationsdatei im JSON- oder YAML-Format, in der "jsonMode": "STRICT" und die zu replizierenden Objekte angegeben sind.

JSON-Konfigurationsdatei, z. B. mongo_source_config.json:

{
  "jsonMode": "STRICT",
  "includeObjects": {
    "databases": [
      {
        "database": "DATABASE_NAME",
        "collections": [
          {
            "collection": "COLLECTION_NAME"
          }
        ]
      }
    ]
  }
}

YAML-Konfigurationsdatei, z. B. mongo_source_config.yaml:

jsonMode: STRICT
includeObjects:
  databases:
    - database: DATABASE_NAME
      collections:
        - collection: COLLECTION_NAME
  1. Übergeben Sie die Konfigurationsdatei beim Erstellen des Streams an das Flag --mongodb-source-config:
gcloud datastream streams create STREAM_ID \
    --location=LOCATION \
    --display-name="STREAM_DISPLAY_NAME" \
    --source=projects/PROJECT_ID/locations/LOCATION/connectionProfiles/SOURCE_PROFILE \
    --destination=projects/PROJECT_ID/locations/LOCATION/connectionProfiles/DEST_PROFILE \
    --mongodb-source-config=mongo_source_config.json \
    --bigquery-destination-config=bigquery_destination_config.json

Der Inhalt der Konfigurationsdatei bigquery_destination_config.json:

{
  "singleTargetDataset": {
    "datasetId": "PROJECT_ID:DATASET_ID"
  }
}

Ersetzen Sie Folgendes:

  • STREAM_ID: die Kennung des Streams.
  • LOCATION: die Region, in der der Stream erstellt wird, z. B. us-central1.
  • STREAM_DISPLAY_NAME: Ein nutzerfreundlicher Name für den Stream.
  • PROJECT_ID: die ID Ihres Google Cloud -Projekts.
  • SOURCE_PROFILE: die Kennung des MongoDB-Quellverbindungsprofils.
  • DEST_PROFILE: die Kennung des Zielverbindungsprofils.
  • DATABASE_NAME: der Name der Datenbank im MongoDB-Quellcluster.
  • COLLECTION_NAME: der Name der Sammlung in der Datenbank.
  • DATASET_ID: die Kennung des Ziel-Datasets in BigQuery.

Weitere Informationen zum Erstellen eines Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Definition eines Streams validieren

Bevor Sie einen Stream erstellen, können Sie seine Definition validieren. So können Sie sicherstellen, dass alle Validierungsprüfungen bestanden werden und der Stream nach der Erstellung erfolgreich ausgeführt wird.

Dabei wird Folgendes geprüft:

  • Ob die Quelle ordnungsgemäß konfiguriert ist, damit Datastream Daten von ihr streamen kann.
  • Ob er sowohl mit der Quelle als auch mit dem Ziel verbunden werden kann.
  • Die End-to-End-Konfiguration des Streams.

Wenn Sie einen Stream validieren möchten, fügen Sie &validate_only=true vor dem Text der Anfrage in die URL ein:

POST "https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/streams?streamId=STREAM_ID&validate_only=true"

Nachdem Sie diese Anfrage gestellt haben, werden die Validierungsprüfungen angezeigt, die Datastream für Ihre Quelle und Ihr Ziel ausführt, und ob die Prüfungen bestanden werden oder fehlschlagen. Bei nicht bestandenen Validierungsprüfungen werden Informationen dazu angezeigt, warum die Prüfung fehlgeschlagen ist und wie sie das Problem beheben können.

Angenommen, Sie haben einen kundenverwalteten Verschlüsselungsschlüssel (CMEK), den Datastream zum Verschlüsseln von Daten verwenden soll, die von der Quelle zum Ziel gestreamt werden. Im Rahmen der Streamvalidierung prüft Datastream, ob der Schlüssel vorhanden ist und ob Datastream die Berechtigung hat, den Schlüssel zu verwenden. Wenn eine dieser Bedingungen nicht erfüllt ist, wird bei der Validierung des Streams die folgende Fehlermeldung zurückgegeben:

CMEK_DOES_NOT_EXIST_OR_MISSING_PERMISSIONS

Prüfen Sie, ob der von Ihnen angegebene Schlüssel vorhanden ist und das Datastream-Dienstkonto die Berechtigung cloudkms.cryptoKeys.get für den Schlüssel hat.

Nachdem Sie die entsprechenden Korrekturen vorgenommen haben, stellen Sie die Anfrage noch einmal, um sicherzustellen, dass alle Validierungsprüfungen bestanden wurden. Im vorherigen Beispiel gibt die CMEK_VALIDATE_PERMISSIONS-Prüfung keine Fehlermeldung mehr zurück, sondern hat den Status PASSED.

Informationen zu einem Stream abrufen

Der folgende Code zeigt eine Anfrage zum Abrufen von Informationen zu einem Stream. Zu diesen Daten gehören:

  • Der Name des Streams (eindeutige Kennung)
  • Ein nutzerfreundlicher Name für den Stream (Anzeigename)
  • Zeitstempel, die angeben, wann der Stream erstellt und zuletzt aktualisiert wurde
  • Informationen zu den Quell- und Zielverbindungsprofilen, die mit dem Stream verknüpft sind
  • Der Status des Streams

REST

GET https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/streams/STREAM_ID

Die Antwort sieht so aus:

{
  "name": "myOracleCdcStream",
  "displayName": "Oracle CDC to Cloud Storage",
  "createTime": "2019-12-15T15:01:23.045123456Z",
  "updateTime": "2019-12-15T15:01:23.045123456Z",
  "sourceConfig": {
    "sourceConnectionProfileName": "myOracleDb",
    "oracleSourceConfig": {
      "includeObjects": {
        "oracleSchemas": [
          {
            "schema": "schema1"
          },
          {
            "schema": "schema3",
            "oracleTables": [
              { "table": "tableA" },
              { "table": "tableC" }
            ]
          }
        ]
      }
    }
  },
  "destinationConfig": {
    "destinationConnectionProfileName": "myGcsBucket",
    "gcsDestinationConfig": {
      "path": "/folder1",
      "avroFileFormat": {},
      "fileRotationMb": 100,
      "fileRotationInterval": 60
    }
  },
  "state": "RUNNING"
  "customerManagedEncryptionKey": "projects/myProjectId1/locations/us-central1/
  keyRings/myRing/cryptoKeys/myEncryptionKey",
  "backfillAll": {}
}

gcloud

Weitere Informationen zur Verwendung von gcloud zum Abrufen von Informationen zu Ihrem Stream finden Sie in der Google Cloud SDK-Dokumentation.

Streams auflisten

Der folgende Code zeigt eine Anfrage zum Abrufen einer Liste aller Streams im angegebenen Projekt und am angegebenen Standort.

REST

GET https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams

gcloud

Weitere Informationen zum Abrufen von Informationen zu allen Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Objekte eines Streams auflisten

Der folgende Code zeigt eine Anfrage zum Abrufen von Informationen zu allen Objekten eines Streams.

REST

GET https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID/objects

gcloud

Weitere Informationen zur Verwendung von gcloud, um Informationen zu allen Objekten Ihres Streams abzurufen, finden Sie in der Google Cloud SDK-Dokumentation.

Die zurückgegebene Liste der Objekte sieht in etwa so aus:

REST

{
  "streamObjects": [
    {
      "name": "projects/myProjectId1/locations/us-central1/streams/myStream/
      objects/object1",
      "displayName": "employees.salaries",
      "backfillJob": {
        "state": "ACTIVE",
        "trigger": "AUTOMATIC",
        "lastStartTime": "2021-10-18T12:12:26.344878Z"
      },
      "sourceObject": {
        "mysqlIdentifier": {
          "database": "employees",
          "table": "salaries"
        }
      }
    },
    {
      "name": "projects/myProjectId1/locations/us-central1/streams/myStream/
      objects/object2",
      "displayName": "contractors.hours",
      "sourceObject": {
        "mysqlIdentifier": {
          "database": "contractors",
          "table": "hours"
        }
      }
    },
    {
      "name": "projects/myProjectId1/locations/us-central1/streams/myStream/
      objects/object3",
      "displayName": "employees.departments",
      "backfillJob": {
        "state": "COMPLETED",
        "trigger": "AUTOMATIC",
        "lastStartTime": "2021-10-18T11:26:12.869880Z",
        "lastEndTime": "2021-10-18T11:26:28.405653Z"
      },
      "sourceObject": {
        "mysqlIdentifier": {
          "database": "employees",
          "table": "departments"
        }
      }
    }
  ]
}

gcloud

Weitere Informationen zur Verwendung von gcloud zum Auflisten von Objekten eines Streams finden Sie in der Google Cloud SDK-Dokumentation.

Stream starten

Der folgende Code zeigt eine Anfrage zum Starten eines Streams.

Bei Verwendung des Parameters updateMask in der Anfrage müssen nur die von Ihnen angegebenen Felder im Text der Anfrage enthalten sein. Wenn Sie einen Stream starten möchten, ändern Sie den Wert im Feld state von CREATED in RUNNING.

REST

PATCH https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID?updateMask=state
{
  "state": "RUNNING"
}

gcloud

Weitere Informationen zum Starten des Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Stream pausieren

Der folgende Code zeigt eine Anfrage zum Anhalten eines ausgeführten Streams.

In diesem Beispiel ist für den Parameter updateMask das Feld state angegeben. Wenn Sie den Stream pausieren, ändern Sie seinen Status von RUNNING in PAUSED.

REST

PATCH https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID?updateMask=state
{
  "state": "PAUSED"
}

gcloud

Weitere Informationen zum Pausieren des Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Stream fortsetzen

Der folgende Code zeigt eine Anfrage zum Fortsetzen eines angehaltenen Streams.

In diesem Beispiel ist für den Parameter updateMask das Feld state angegeben. Wenn Sie den Stream fortsetzen, ändern Sie seinen Status vonPAUSED in RUNNING.

REST

PATCH https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID?updateMask=state
{
  "state": "RUNNING"
}

gcloud

Weitere Informationen zur Verwendung von gcloud zum Fortsetzen des Streams finden Sie in der Google Cloud SDK-Dokumentation.

Stream wiederherstellen

Sie können einen dauerhaft fehlgeschlagenen Stream mit der Methode RunStream wiederherstellen. Für jeden Quelldatenbanktyp gibt es eine eigene Definition der möglichen Stream-Wiederherstellungsvorgänge. Weitere Informationen finden Sie unter Stream wiederherstellen.

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

Die folgenden Codebeispiele zeigen Anfragen zum Wiederherstellen eines Streams für eine MySQL- oder Oracle-Quelle aus verschiedenen Logdateipositionen:

REST

Stream ab der aktuellen Position wiederherstellen. Dies ist die Standardoption:

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run

Stream ab der nächsten verfügbaren Position wiederherstellen:

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "nextAvailableStartPosition": {}
  }
}

Stream ab der neuesten Position wiederherstellen:

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "mostRecentStartPosition": {}
  }
}

Stream von einer bestimmten Position wiederherstellen (MySQL-Binlog-basierte Replikation):

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "mysqlLogPosition": {
        "logFile": "NAME_OF_THE_LOG_FILE"
        "logPosition": POSITION
      }
    }
  }
}

Ersetzen Sie Folgendes:

  • NAME_OF_THE_LOG_FILE: Der Name der Logdatei, aus der Sie den Stream wiederherstellen möchten.
  • POSITION: Die Position in der Logdatei, von der aus Sie den Stream wiederherstellen möchten. Wenn Sie den Wert nicht angeben, stellt Datastream den Stream ab dem Anfang der Datei wieder her.

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/myStreamId1:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "mysqlLogPosition": {
        "logFile": "binlog.001"
        "logPosition": 4
      }
    }
  }
}

Stream ab einer bestimmten Position wiederherstellen (MySQL-GTID-basierte Replikation):

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "mysqlGtidPosition": {
        "gtidSet": "GTID_SET"
      }
    }
  }
}

Ersetzen Sie GTID_SET durch eine oder mehrere einzelne GTIDs oder GTID-Bereiche, aus denen Sie den Stream wiederherstellen möchten.

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/myStreamId1:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "mysqlGtidPosition": {
        "gtidSet": "22cc56f5-3862-379a-9af5-051c59baef9d:1-561143685:561143688-591036613,b8d7df02-832b-32b9-bec7-2018806b76f6:1-3"
      }
    }
  }
}

Stream ab einer bestimmten Position wiederherstellen (Oracle):

POST https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/streams/[stream-id]:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "oracleScnPosition": {
        "scn": scn
      }
    }
  }
}
Ersetzen Sie scn durch die System Change Number (SCN) in der Redo-Logdatei, aus der Sie den Stream wiederherstellen möchten. Dieses Feld muss ausgefüllt werden.

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/myStreamId1:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "oracleScnPosition": {
        "scn": 234234
      }
    }
  }
}

Weitere Informationen zu den verfügbaren Wiederherstellungsoptionen finden Sie unter Stream wiederherstellen.

gcloud

Das Wiederherstellen eines Streams mit gcloud wird nicht unterstützt.

Stream für eine PostgreSQL-Quelle wiederherstellen

Das folgende Codebeispiel zeigt eine Anfrage zum Wiederherstellen eines Streams für eine PostgreSQL-Quelle. Während der Wiederherstellung beginnt der Stream mit dem Lesen der ersten Logsequenznummer (LSN) im Replikationsslot, der für den Stream konfiguriert ist.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "nextAvailableStartPosition": {}
  }
}

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/myStreamId1:run

Wenn Sie den Replikationsslot ändern möchten, aktualisieren Sie den Stream zuerst mit dem neuen Namen des Replikationsslots:

PATCH https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID?updateMask=sourceConfig.postgresqlSourceConfig.replicationSlot
{
  "sourceConfig": {
    "postgresqlSourceConfig": {
      "replicationSlot": "NEW_REPLICATION_SLOT_NAME"
    }
  }
}

gcloud

Das Wiederherstellen eines Streams mit gcloud wird nicht unterstützt.

Stream für eine SQL Server-Quelle wiederherstellen

Die folgenden Codebeispiele zeigen Beispielanfragen zum Wiederherstellen eines Streams für eine SQL Server-Quelle.

REST

Stream ab der ersten verfügbaren Position wiederherstellen:

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/mySqlServerStreamId:run

Stream ab einer bevorzugten Logsequenznummer wiederherstellen:

POST https://datastream.googleapis.com/v1/projects/[project-id]/locations/
[location]/streams/[stream-id]:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "sqlServerLsnPosition": {
        "lsn": lsn
      }
    }
  }
}

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/mySqlServerStreamId:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "sqlServerLsnPosition": {
        "lsn": 0000123C:0000BA78:0004
      }
    }
  }
}

gcloud

Das Wiederherstellen eines Streams mit gcloud wird nicht unterstützt.

Stream an einer bestimmten Position starten oder fortsetzen

Sie können einen Stream starten oder einen pausierten Stream von einer bestimmten Position für MySQL-, Oracle- und SQL Server-Quellen fortsetzen. Dies kann nützlich sein, wenn Sie einen Backfill mit einem externen Tool durchführen oder CDC von einer von Ihnen angegebenen Position aus starten möchten:

  • Für eine MySQL-Quelle müssen Sie eine Binlog-Position oder einen GTID-Satz angeben.
  • Bei einer Oracle-Quelle müssen Sie eine System Change Number (SCN) in der Redo-Log-Datei angeben.
  • Für eine SQL Server-Quelle müssen Sie eine Logsequenznummer (LSN) in einer Änderungstabelle angeben.

Der folgende Code zeigt Beispielanfragen zum Starten oder Fortsetzen eines bereits erstellten Streams an einer bestimmten Position.

Stream von einer bestimmten Binlog-Position (MySQL) starten oder fortsetzen:

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "mysqlLogPosition": {
        "logFile": "NAME_OF_THE_LOG_FILE"
        "logPosition": POSITION
      }
    }
  }
}

Ersetzen Sie Folgendes:

  • NAME_OF_THE_LOG_FILE: Der Name der Logdatei, von der Sie den Stream starten möchten.
  • POSITION: Die Position in der Logdatei, ab der Sie den Stream starten möchten. Wenn Sie den Wert nicht angeben, beginnt Datastream mit dem Lesen am Anfang der Datei.

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/myStreamId1:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "mysqlLogPosition": {
        "logFile": "binlog.001"
        "logPosition": 2
      }
    }
  }
}

gcloud

Das Starten oder Fortsetzen eines Streams an einer bestimmten Position mit gcloud wird nicht unterstützt. Informationen zum Starten oder Fortsetzen eines Streams mit gcloud finden Sie in der Cloud SDK-Dokumentation.

Stream von einem bestimmten GTID-Satz (MySQL) starten oder fortsetzen:

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "mysqlGtidPosition": {
        "gtidSet": "GTID_SET"
      }
    }
  }
}

Ersetzen Sie GTID_SET durch eine oder mehrere einzelne GTIDs oder GTID-Bereiche, von denen Sie den Stream starten oder fortsetzen möchten.

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/myStreamId1:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "mysqlGtidPosition": {
        "gtidSet": "22cc56f5-3862-379a-9af5-051c59baef9d:1-561143685:561143688-591036613,b8d7df02-832b-32b9-bec7-2018806b76f6:3-7"
      }
    }
  }
}

gcloud

Das Starten oder Fortsetzen eines Streams an einer bestimmten Position mit gcloud wird nicht unterstützt. Informationen zum Starten oder Fortsetzen eines Streams mit gcloud finden Sie in der Cloud SDK-Dokumentation.

Stream ab einer bestimmten System Change Number in der Redo-Logdatei (Oracle) starten oder fortsetzen:

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "oracleScnPosition": {
        "scn": scn
      }
    }
  }
}
Ersetzen Sie scn durch die System Change Number (SCN) in der Redo-Log-Datei, ab der Sie den Stream starten möchten. Dieses Feld muss ausgefüllt werden.

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/myStreamId1:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "oracleScnPosition": {
        "scn": 123123
      }
    }
  }
}

gcloud

Das Starten oder Fortsetzen eines Streams an einer bestimmten Position mit gcloud wird nicht unterstützt. Informationen zum Starten eines Streams mit gcloud finden Sie in der Cloud SDK-Dokumentation.

Stream ab einer bestimmten Logsequenznummer (SQL Server) starten oder fortsetzen:

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "sqlServerLsnPosition": {
        "lsn": "lsn"
      }
    }
  }
}

Ersetzen Sie lsn durch die Logsequenznummer in der Änderungstabelle, ab der Sie den Stream starten möchten. Dieses Feld muss ausgefüllt werden.

Beispiel:

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams/myStreamId1:run
{
  "cdcStrategy": {
    "specificStartPosition": {
      "sqlServerLsnPosition": {
        "lsn": "0000123C0000BA780004"
      }
    }
  }
}

Weitere Informationen finden Sie in der Referenzdokumentation zur Datastream API.

gcloud

Das Starten oder Fortsetzen eines Streams an einer bestimmten Position mit gcloud wird nicht unterstützt. Informationen zum Starten eines Streams mit gcloud finden Sie in der Cloud SDK-Dokumentation.

Stream ändern

Der folgende Code zeigt eine Anfrage zum Aktualisieren der Dateirotationskonfiguration eines Streams, um die Datei alle 75 MB oder 45 Sekunden zu rotieren.

In diesem Beispiel werden für den Parameter updateMask die Felder fileRotationMb und fileRotationInterval angegeben, die durch die Flags destinationConfig.gcsDestinationConfig.fileRotationMb bzw. destinationConfig.gcsDestinationConfig.fileRotationInterval dargestellt sind.

REST

PATCH https://datastream.googleapis.com/v1/projects/myProjectId1/locations/us-central1/streams/myStream?updateMask=destinationConfig.gcsDestinationConfig.
fileRotationMb,destinationConfig.gcsDestinationConfig.fileRotationInterval
{
  "destinationConfig": {
    "gcsDestinationConfig": {
      "fileRotationMb": 75,
      "fileRotationInterval": 45
    }
  }
}

Der folgende Code zeigt eine Anfrage zum Einfügen einer Unified Types-Schemadatei in den Pfad der Dateien, die Datastream in Cloud Storage schreibt. Daher schreibt Datastream zwei Dateien: eine JSON-Datendatei und eine Avro-Schemadatei.

In diesem Beispiel ist das Feld jsonFileFormat, dargestellt durch das Flag destinationConfig.gcsDestinationConfig.jsonFileFormat.

PATCH https://datastream.googleapis.com/v1/projects/myProjectId1/locations/us-central1/streams/myStream?updateMask=destinationConfig.gcsDestinationConfig.
jsonFileFormat
{
  "destinationConfig": {
    "gcsDestinationConfig": {
      "jsonFileFormat" {
        "schemaFileFormat": "AVRO_SCHEMA_FILE"
      }  
    }
  }
}

Der folgende Code zeigt eine Anfrage an Datastream, um vorhandene Daten sowie laufende Änderungen an den Daten aus der Quelldatenbank in das Ziel zu replizieren.

Im Abschnitt oracleExcludedObjects des Codes werden die Tabellen und Schemas aufgeführt, die nicht für das Backfill in das Ziel verwendet werden dürfen.

Für dieses Beispiel werden alle Tabellen und Schemas außer tableA in schema3 ausgefüllt.

PATCH https://datastream.googleapis.com/v1/projects/myProjectId1/locations/us-central1/streams/myStream?updateMask=backfillAll
{
  "backfillAll": {
    "oracleExcludedObjects": {
      "oracleSchemas": [
        {
          "schema": "schema3",
          "oracleTables": [
            { "table": "tableA" }
          ]
        }
      ]
    }
  }
}  

gcloud

Weitere Informationen zur Verwendung von gcloud zum Ändern des Streams finden Sie in der Google Cloud SDK-Dokumentation.

Backfill für ein Objekt eines Streams initiieren

Ein Stream in Datastream kann ein Backfill auf Verlaufsdaten ausführen und laufende Änderungen an ein Ziel streamen. Laufende Änderungen werden immer von einer Quelle an ein Ziel gestreamt. Sie können jedoch festlegen, ob Verlaufsdaten gestreamt werden sollen.

Wenn Sie möchten, dass Verlaufsdaten von der Quelle an das Ziel gestreamt werden, verwenden Sie den Parameter backfillAll.

Mit Datastream können Sie auch Verlaufsdaten nur für bestimmte Datenbanktabellen streamen. Verwenden Sie dazu den Parameter backfillAll und schließen Sie die Tabellen aus, für die Sie keine Verlaufsdaten abrufen möchten.

Wenn nur laufende Änderungen an das Ziel gestreamt werden sollen, verwenden Sie den Parameter backfillNone. Wenn Sie möchten, dass Datastream einen Snapshot aller vorhandenen Daten von der Quelle zum Ziel streamt, müssen Sie den Backfill für die Objekte, die diese Daten enthalten, manuell initiieren.

Ein weiterer Grund zum Initiieren eines Backfills für ein Objekt ist, wenn die Daten zwischen der Quelle und dem Ziel nicht synchron sind. Beispielsweise kann ein Nutzer versehentlich Daten im Ziel löschen und die Daten gehen nun verloren. In diesem Fall dient das Initiieren des Backfills für das Objekt als "Rücksetzungsmechanismus", da alle Daten auf einmal an das Ziel gestreamt werden. Folglich werden die Daten zwischen der Quelle und dem Ziel synchronisiert.

Bevor Sie den Backfill für ein Objekt eines Streams initiieren können, müssen Sie Informationen zum Objekt abrufen.

Jedes Objekt hat einen OBJECT_ID, der das Objekt eindeutig identifiziert. Mit OBJECT_ID starten Sie den Backfill für den Stream.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID/objects/OBJECT_ID:startBackfillJob

gcloud

Weitere Informationen zur Verwendung von gcloud, um den Backfill für ein Objekt Ihres Streams zu initiieren, finden Sie in der Google Cloud SDK-Dokumentation.

Backfill für ein Objekt eines Streams beenden

Nach dem Initialisieren eines Backfills für ein Objekt eines Streams können Sie den Backfill für das Objekt beenden. Wenn ein Nutzer beispielsweise ein Datenbankschema ändert, können das Schema oder die Daten beschädigt sein. Da dieses Schema oder die Daten nicht an das Ziel gestreamt werden sollen, beenden Sie den Backfill für das Objekt.

Sie können den Backfill für ein Objekt auch zum Load-Balancing beenden. Datastream kann mehrere Backfills parallel ausführen. Dies kann eine zusätzliche Last für die Quelle bedeuten. Wenn die Last erheblich ist, beenden Sie den Backfill für jedes Objekt und initiieren dann den Backfill für die Objekte nacheinander.

Bevor Sie den Backfill für ein Objekt eines Streams beenden können, müssen Sie eine Anfrage stellen, um Informationen zu allen Objekten eines Streams abzurufen. Jedes zurückgegebene Objekt hat eine OBJECT_ID, die das Objekt eindeutig identifiziert. Mit OBJECT_ID beenden Sie den Backfill für den Stream.

REST

POST https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID/objects/OBJECT_ID:stopBackfillJob

gcloud

Weitere Informationen zum Beenden des Backfills für ein Objekt Ihres Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Maximale Anzahl gleichzeitiger CDC-Aufgaben ändern

Der folgende Code zeigt, wie Sie die maximale Anzahl gleichzeitiger Change Data Capture-Aufgaben (CDC) für einen MySQL-Stream auf 7 festlegen.

In diesem Beispiel ist für den Parameter updateMask das Feld maxConcurrentCdcTasks angegeben. Wenn Sie den Wert auf 7 setzen, ändern Sie die maximale Anzahl gleichzeitiger CDC-Aufgaben vom vorherigen Wert auf 7. Sie können Werte von 0 bis 50 (einschließlich) verwenden. Wenn Sie den Wert nicht definieren oder auf 0 setzen, wird für den Stream die Standardeinstellung des Systems von 5 Aufgaben festgelegt.

REST

PATCH https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID?updateMask=sourceConfig.mysqlSourceConfig.maxConcurrentCdcTasks
{
  "sourceConfig": {
    "mysqlSourceConfig": {
      "maxConcurrentCdcTasks": "7"
      }
    }  
}

gcloud

Weitere Informationen zur Verwendung von gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Maximale Anzahl gleichzeitiger Backfill-Aufgaben ändern

Der folgende Code zeigt, wie Sie die maximale Anzahl gleichzeitiger Backfill-Aufgaben für einen MySQL-Stream auf 25 festlegen.

In diesem Beispiel ist für den Parameter updateMask das Feld maxConcurrentBackfillTasks angegeben. Wenn Sie den Wert auf 25 festlegen, ändern Sie die maximale Anzahl gleichzeitiger Backfill-Aufgaben vom vorherigen Wert auf 25. Sie können Werte von 0 bis 50 (einschließlich) verwenden. Wenn Sie den Wert nicht definieren oder auf 0 setzen, wird für den Stream die Standardeinstellung des Systems von 16 Aufgaben festgelegt.

REST

PATCH https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/
streams/STREAM_ID?updateMask=sourceConfig.mysqlSourceConfig.maxConcurrentBackfillTasks
{
  "sourceConfig": {
    "mysqlSourceConfig": {
      "maxConcurrentBackfillTasks": "25"
      }
    }  
}

gcloud

Weitere Informationen zur Verwendung von gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Streaming großer Objekte für Oracle-Quellen aktivieren

Sie können das Streaming großer Objekte wie großer binärer Datenobjekte (BLOB), großer Zeichenobjekte (CLOB) und großer nationaler Zeichenobjekte (NCLOB) für Streams mit Oracle-Quellen aktivieren. Mit dem Flag streamLargeObjects können Sie große Objekte sowohl in neue als auch in vorhandene Streams einfügen. Das Flag wird auf Stream-Ebene festgelegt. Sie müssen die Spalten der Datentypen für große Objekte nicht angeben.

Im folgenden Beispiel wird gezeigt, wie Sie einen Stream erstellen, mit dem Sie große Objekte streamen können.

REST

POST https://datastream.googleapis.com/v1/projects/myProjectId1/locations/
us-central1/streams?streamId=myOracleLobStream
{
  "displayName": "Oracle LOB stream",
  "sourceConfig": {
    "sourceConnectionProfileName": "/projects/myProjectId1/locations/us-central1/connectionProfiles/OracleCp",
    "oracleSourceConfig": {
      "includeObjects": {
        "oracleSchemas": [
          {
            "schema": "schema1",
            "oracleTables": [
              {
                "table": "tableA",
                "oracleColumns": [
                  {
                    "column": "column1,column2"
                  }
                ]
              }
            ]
          }
        ]
      },
      "excludeObjects": {},
      "streamLargeObjects": {}
    }
  }
}

gcloud

Weitere Informationen zum Aktualisieren eines Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Stream löschen

Der folgende Code zeigt eine Anfrage zum Löschen eines Streams.

REST

DELETE https://datastream.googleapis.com/v1/projects/PROJECT_ID/locations/
LOCATION/streams/STREAM_ID

gcloud

Weitere Informationen zum Löschen eines Streams mit gcloud finden Sie in der Google Cloud SDK-Dokumentation.

Nächste Schritte