MySQL-Daten migrieren

In diesem Dokument wird beschrieben, wie Sie eine Live-Datenmigration von einer MySQL-Quellinstanz zu Spanner mit minimaler Ausfallzeit durchführen. Dazu verwenden Sie Terraform, um Dataflow und Datastream bereitzustellen.

Nachdem Sie die Live-Datenmigration durchgeführt haben und sicher sind, dass alle Daten übertragen wurden, Sie Ihren Code und Ihre Abhängigkeiten migriert und die Tests abgeschlossen haben, können Sie Ihre Anwendung so umstellen, dass sie Cloud Spanner anstelle Ihrer MySQL-Quelldatenbank verwendet.

Nachdem Sie die Spanner-Zieldatenbank erstellt haben, können Sie eine Live-Datenmigration durchführen. Sie müssen ein kompatibles Schema in Ihrer Zieldatenbank erstellen, bevor Sie Daten migrieren.

Funktionsweise

Die Live-Datenmigration besteht aus den folgenden zwei Phasen:

  • Backfill-Migration:

    • Bei der Backfill-Migration liest Dataflow vorhandene Daten aus Ihrer MySQL-Quelldatenbank und migriert sie in die Spanner-Zieldatenbank. Sie müssen eine Dataflow-Vorlage für die Bulk-Migration verwenden, um die Daten von Ihrer MySQL-Quellinstanz nach Spanner zu verschieben.
    • Wenn die Backfill-Migration eine Zeile nicht in Spanner schreiben kann, wird diese Zeile in ein DLQ-Verzeichnis (Dead-Letter-Warteschlange) in einem Cloud Storage-Bucket geschrieben. Sie können die Backfill-Migration so konfigurieren, dass sie versucht, diese Zeilen noch einmal in Spanner zu schreiben.
  • Migration von Change Data Capture (CDC):

    • Diese Phase läuft parallel zur Backfill-Migration und erfasst Änderungen, die in der MySQL-Quellinstanz in Echtzeit auftreten. Diese Änderungen werden dann nach Abschluss der Backfill-Migration auf Spanner angewendet.
    • Sie müssen Datastream verwenden, um Änderungen in Ihrer MySQL-Quellinstanz in Echtzeit zu erfassen und in einen Cloud Storage-Bucket zu schreiben.
    • Nach Abschluss der Backfill-Migration müssen Sie Dataflow verwenden, um die CDC-Daten aus dem Cloud Storage-Bucket in Spanner zu verschieben. Wenn Dataflow aus irgendeinem Grund eine Zeile nicht in Spanner schreiben kann, wird diese Zeile in ein DLQ-Verzeichnis in einem anderen Cloud Storage-Bucket geschrieben. Bei der CDC-Migration wird das Schreiben der Zeilen aus dem DLQ-Verzeichnis in Spanner automatisch wiederholt.

Live-Datenmigration planen

Sie müssen die Netzwerkinfrastruktur konfigurieren, die erforderlich ist, damit Daten zwischen Ihrer MySQL-Quellinstanz, Datastream, Dataflow, Cloud Storage-Buckets und der Spanner-Zieldatenbank übertragen werden können. Wir empfehlen, für eine sichere Migration eine private Netzwerkverbindung zu konfigurieren. Je nach den Compliance-Anforderungen Ihrer Organisation müssen Sie möglicherweise öffentliche oder private Netzwerkverbindungen konfigurieren. Weitere Informationen zur Datastream-Konnektivität finden Sie unter Netzwerkverbindungsoptionen.

Für die Planung der Live-Datenmigration muss der Netzwerkadministrator Ihrer Organisation möglicherweise die folgenden Aufgaben ausführen:

  • Verwenden Sie die Standard-VPC oder erstellen Sie eine neue VPC in Ihrem Projekt mit den folgenden Anforderungen:
    • Die MySQL-Quellinstanz muss in dieser VPC verfügbar sein. Möglicherweise müssen Sie in dieser VPC eine Firewallregel für ausgehenden Traffic und in der VPC, in der sich die MySQL-Quellinstanz befindet, eine Firewallregel für eingehenden Traffic erstellen.
    • Datastream, Dataflow, Cloud Storage-Buckets und die Spanner-Zieldatenbank müssen in dieser VPC verfügbar sein.
    • Sie müssen eine Zulassungsliste für Ihre MySQL-Quellinstanz erstellen, um Verbindungen von der VPC zuzulassen.
  • Bestimmen Sie einen IP-Adressbereich in der VPC, den Datastream verwenden kann, und weisen Sie ihn zu.
  • Erstellen Sie in der VPC ein Subnetzwerk, das Dataflow für die Backfill-Migration verwenden kann.
  • Erstellen Sie ein Subnetzwerk in der VPC für Dataflow, um die CDC-Migration später abzuschließen.

So führen Sie eine Live-Datenmigration durch:

  1. CDC-Migration einrichten
  2. Backfill-Migration ausführen
  3. Führen Sie die CDC-Migration nach Abschluss der Backfill-Migration durch.
  4. CDC-Fehler im Blick behalten und beheben
  5. CDC-Migration abschließen

Für die Live-Datenmigration müssen Sie eine erhebliche Anzahl von Ressourcen bereitstellen und verwalten. Spanner bietet zwei Terraform-Beispielvorlagen für jede Phase der Live-Datenmigration.

Die Vorlage für die Live-Migration führt die CDC-Migration in zwei Phasen aus:

  • Richten Sie die CDC-Migration zu einem Cloud Storage-Bucket mit Datastream ein. Sie können eine Terraform-Variable verwenden, um zu verhindern, dass die Vorlage die Dataflow-Jobs erstellt.
  • Migrieren Sie die CDC-Daten mit Dataflow aus dem Cloud Storage-Bucket zu Spanner. Sie dürfen diese Phase erst ausführen, wenn die Backfill-Migration mit der Terraform-Vorlage für die Backfill-Migration abgeschlossen ist.

Mit der Terraform-Vorlage für die Backfill-Migration wird die Backfill-Migration von Ihrer MySQL-Quellinstanz zu Spanner durchgeführt.

Hinweis

  • Prüfen Sie, ob Terraform in Ihrer lokalen Shell installiert ist.
  • Erstellen Sie ein Dienstkonto, um die Live-Datenmigration auszuführen. Weitere Informationen zum Erstellen eines Dienstkontos finden Sie unter Dienstkonten erstellen.
  • Bitten Sie Ihren Administrator, dem Dienstkonto die folgenden IAM-Rollen für Ihr Projekt zuzuweisen, damit das Dienstkonto die erforderlichen Berechtigungen zum Ausführen einer Live-Migration hat:

    Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

    Diese vordefinierten Rollen enthalten die Berechtigungen, die zum Ausführen einer Live-Migration erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen, um die notwendigen Berechtigungen anzuzeigen:

    Erforderliche Berechtigungen

    Die folgenden Berechtigungen sind erforderlich, um eine Live-Migration durchzuführen:

    • compute.globalAddresses.create
    • compute.globalAddresses.createInternal
    • compute.globalAddresses.createInternal
    • compute.globalAddresses.delete
    • compute.globalAddresses.deleteInternal
    • compute.globalAddresses.get
    • compute.globalOperations.get
    • compute.networks.addPeering
    • compute.networks.get
    • compute.networks.listPeeringRoutes
    • compute.networks.removePeering
    • compute.networks.use
    • compute.routes.get
    • compute.routes.list
    • compute.subnetworks.get
    • compute.subnetworks.list
    • dataflow.jobs.cancel
    • dataflow.jobs.create
    • dataflow.jobs.updateContents
    • datastream.connectionProfiles.create
    • datastream.connectionProfiles.delete
    • datastream.privateConnections.create
    • datastream.privateConnections.delete
    • datastream.streams.create
    • datastream.streams.delete
    • datastream.streams.update
    • iam.roles.get
    • iam.serviceAccounts.actAs
    • pubsub.subscriptions.create
    • pubsub.subscriptions.delete
    • pubsub.topics.attachSubscription
    • pubsub.topics.create
    • pubsub.topics.delete
    • pubsub.topics.getIamPolicy
    • pubsub.topics.setIamPolicy
    • resourcemanager.projects.setIamPolicy
    • storage.buckets.create
    • storage.buckets.delete
    • storage.buckets.update
    • storage.objects.delete

    Ihr Administrator kann dem Dienstkonto möglicherweise auch diese Berechtigungen mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erteilen.

CDC-Migration einrichten

Spanner bietet eine Terraform-Vorlage zum Einrichten der CDC und zum späteren Abschließen der CDC-Migration. Sie können eine Terraform-Variable verwenden, um zu verhindern, dass die Vorlage die Dataflow-Jobs erstellt. Mit der Terraform-Vorlage werden die folgenden Ressourcen bereitgestellt und verwaltet, um die CDC-Migration einzurichten:

  • Private Datastream-Verbindung: Eine private Datastream-Verbindung wird in Ihrer konfigurierten VPC bereitgestellt.

  • Datastream-Quellverbindungsprofil: Ein Verbindungsprofil, mit dem Datastream eine Verbindung zu Ihrer MySQL-Quellinstanz herstellen kann.

  • Cloud Storage-Bucket: Ein Cloud Storage-Bucket, in den Datastream die Daten schreibt.

  • Ziel-Datastream-Verbindungsprofil: Mit diesem Verbindungsprofil kann Datastream eine Verbindung zum Cloud Storage-Bucket herstellen und Daten in den Bucket schreiben.

  • Datastream-Stream: Ein Datastream-Stream, der Daten aus Ihrer MySQL-Quellinstanz liest und in den Cloud Storage-Bucket schreibt, wie in den Verbindungsprofilen definiert.

  • Pub/Sub-Thema und ‑Abo: Der Cloud Storage-Bucket sendet Objektbenachrichtigungen an das Pub/Sub-Thema und Dataflow nutzt das Pub/Sub-Abo, um Daten in Spanner zu schreiben.

  • Cloud Storage-Bucket-Benachrichtigungen: Eine Cloud Storage-Bucket-Benachrichtigung, die im Pub/Sub-Thema veröffentlicht wird.

CDC-Terraform-Konfiguration vorbereiten

Sie können die Terraform-Vorlage so vorbereiten, dass sie Dataflow-Variablenkonfigurationen enthält, aber die Erstellung von Dataflow-Jobs deaktivieren:

common_params = {
  project = "PROJECT_ID"
  region  = "GCP_REGION"
}
datastream_params = {
  mysql_host = "MYSQL_HOST_IP_ADDRESS"
  mysql_username = "MYSQL_USERNAME"
  mysql_password = "MYSQL_PASSWORD"
  mysql_port     = 3306
  mysql_database = {
    database = "DATABASE_NAME"
  }
  private_connectivity = {
    vpc_name = "VPC_NAME"
    range = "RESERVED_RANGE"
  }
}
dataflow_params = {
  skip_dataflow = false
  enable_backfill = false
  template_params = {
    spanner_database_id = "SPANNER_DATABASE_ID"
    spanner_instance_id = "SPANNER_INSTANCE_ID"
  }
  runner_params = {
    max_workers = 10
    num_workers = 4
    on_delete   = "cancel"
    network     = "VPC_NETWORK"
    subnetwork  = "SUBNETWORK_NAME"
  }
}

Ersetzen Sie Folgendes:

  • PROJECT_ID: die Projekt-ID von Google Cloud .
  • GCP_REGION: die Google Cloud Region, in der Sie den Dataflow-Job ausführen möchten.
  • MYSQL_HOST_IP_ADDRESS: die IP-Adresse Ihrer MySQL-Quellinstanz.
  • MYSQL_USERNAME: Der Nutzername für Ihre MySQL-Quellinstanz.
  • MYSQL_PASSWORD: das Passwort für Ihre MySQL-Quellinstanz.
  • DATABASE_NAME: Der Name der MySQL-Quelldatenbank in der Instanz.
  • VPC_NAME: Der Name einer vorhandenen VPC, die von Datastream verwendet wird.
  • RESERVED_RANGE: der IP-Adressbereich in der VPC, den Sie für Datastream reserviert haben.
  • SPANNER_DATABASE_ID: die ID der Cloud Spanner-Zieldatenbank.
  • SPANNER_INSTANCE_ID: die ID der Spanner-Zielinstanz.
  • VPC_NETWORK: Der Name einer vorhandenen VPC, die von Dataflow verwendet wird.
  • SUBNETWORK_NAME: der Name des zugewiesenen Subnetzwerks in der VPC, in dem Dataflow Worker erstellt.

CDC-Terraform-Vorlage ausführen

Führen Sie die Terraform-Vorlage aus, um die CDC-Migration durchzuführen:

  1. Initialisieren Sie Terraform mit dem folgenden Befehl:

      terraform init
    

  2. Validieren Sie die Terraform-Dateien mit dem folgenden Befehl:

      terraform plan --var-file=terraform_simple.tfvars
    

  3. Führen Sie die Terraform-Konfiguration mit dem folgenden Befehl aus:

      terraform apply --var-file=terraform_simple.tfvars
    

    Die Terraform-Konfiguration erzeugt eine Ausgabe ähnlich der folgenden:

    Outputs:
    resource_ids = {
      "datastream_source_connection_profile" = "source-mysql-thorough-wombat"
      "datastream_stream" = "mysql-stream-thorough-wombat"
      "datastream_target_connection_profile" = "target-gcs-thorough-wombat"
      "gcs_bucket" = "live-migration-thorough-wombat"
      "pubsub_subscription" = "live-migration-thorough-wombat-sub"
      "pubsub_topic" = "live-migration-thorough-wombat"
    }
    resource_urls = {
      "datastream_source_connection_profile" = "https://console.cloud.google.com/datastream/connection-profiles/locations/us-central1/instances/source-mysql-thorough-wombat?project=your-project-here"
      "datastream_stream" = "https://console.cloud.google.com/datastream/streams/locations/us-central1/instances/mysql-stream-thorough-wombat?project=your-project-here"
      "datastream_target_connection_profile" = "https://console.cloud.google.com/datastream/connection-profiles/locations/us-central1/instances/target-gcs-thorough-wombat?project=your-project-here"
      "gcs_bucket" = "https://console.cloud.google.com/storage/browser/live-migration-thorough-wombat?project=your-project-here"
      "pubsub_subscription" = "https://console.cloud.google.com/cloudpubsub/subscription/detail/live-migration-thorough-wombat-sub?project=your-project-here"
      "pubsub_topic" = "https://console.cloud.google.com/cloudpubsub/topic/detail/live-migration-thorough-wombat?project=your-project-here"
    }
    

Datastream streamt die CDC jetzt in einen Cloud Storage-Bucket. Sie müssen die Backfill-Migration durchführen und die CDC-Migration später abschließen.

Backfill-Migration durchführen

Cloud Spanner bietet eine Terraform-Vorlage für die Backfill-Migration. Mit der Terraform-Vorlage wird die folgende Ressource bereitgestellt und verwaltet:

  • Dataflow-Job: Der Dataflow-Job, der aus der MySQL-Quellinstanz liest und in die Spanner-Zieldatenbank schreibt.

Terraform-Konfiguration für die Backfill-Migration vorbereiten

job_name = "JOB_NAME"
project = "PROJECT_ID"
region = "GCP_REGION"
working_directory_bucket = "WORKING_DIRECTORY_BUCKET"
working_directory_prefix = "WORKING_DIRECTORY_PREFIX"
source_config_url = "SOURCE_CONFIG_URL"
username = "USERNAME"
password = "PASSWORD"
instance_id = "SPANNER_INSTANCE_ID"
database_id  = "SPANNER_DATABASE_ID"
spanner_project_id = "SPANNER_PROJECT_ID"

Ersetzen Sie Folgendes:

  • JOB_NAME: der Name des Dataflow-Jobs.
  • PROJECT_ID: Die Google Cloud Projekt-ID, in der der Dataflow-Job ausgeführt wird.
  • GCP_REGION: die Google Cloud Region, in der Sie den Dataflow-Job ausführen möchten.
  • WORKING_DIRECTORY_BUCKET: Der Cloud Storage-Bucket zum Hochladen der Sitzungsdatei und zum Erstellen des Ausgabeverzeichnisses.
  • WORKING_DIRECTORY_PREFIX: das Cloud Storage-Bucket-Präfix für das Dataflow-Arbeitsverzeichnis.
  • SOURCE_CONFIG_URL: die IP-Adresse Ihrer MySQL-Quellinstanz.
  • USERNAME: der Nutzername Ihrer MySQL-Quellinstanz.
  • PASSWORD: das Passwort Ihrer MySQL-Quellinstanz.
  • SPANNER_INSTANCE_ID: die ID der Ziel-Spanner-Instanz.
  • SPANNER_DATABASE_ID: die ID der Ziel-Spanner-Datenbank.
  • SPANNER_PROJECT_ID: die Projekt-ID, in der sich Ihre Cloud Spanner-Instanz befindet. Diese Projekt-ID kann sich von dem Projekt unterscheiden, in dem Sie Dataflow ausführen.

Terraform-Vorlage für die Backfill-Migration ausführen

So führen Sie die Backfill-Migration durch:

  1. Initialisieren Sie Terraform mit dem folgenden Befehl:

      terraform init
    

  2. Validieren Sie die Terraform-Dateien mit dem folgenden Befehl:

      terraform plan --var-file=terraform_simple.tfvars
    

  3. Führen Sie die Terraform-Konfiguration mit dem folgenden Befehl aus:

      terraform apply --var-file=terraform_simple.tfvars
    

    Die Terraform-Konfiguration erzeugt eine Ausgabe, die in etwa so aussieht:

    Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
    Outputs:
    dataflow_job_id = [
      "2024-06-05_00_41_11-4759981257849547781",
    ]
    dataflow_job_url = [
      "https://console.cloud.google.com/dataflow/jobs/gcp-region/2024-06-05_00_41_11-4759981257849547781",
    ]
    

Wenn bei der Backfill-Migration eine Zeile nicht in Spanner geschrieben werden kann, wird sie in ein Verzeichnis für unzustellbare Nachrichten in einem Cloud Storage-Bucket geschrieben.

Sie können versuchen, diese Zeilen aus dem Verzeichnis der Dead-Letter-Warteschlange noch einmal in Spanner zu schreiben, bevor Sie die CDC-Migration abschließen.

Führen Sie den folgenden Befehl aus, um das Schreiben dieser Zeilen aus dem Dead-Letter-Warteschlangenverzeichnis in Spanner noch einmal zu versuchen, bevor Sie die CDC-Migration abschließen:

gcloud dataflow flex-template run JOB_NAME \
    --project=PROJECT_ID \
    --region=GCP_REGION \
    --template-file-gcs-location=gs://dataflow-templates/latest/flex/Cloud_Datastream_to_Spanner \
    --additional-experiments=use_runner_v2 \
    --parameters inputFilePattern=INPUT_FILE_PATTERN,\
      streamName="ignore",\
      datastreamSourceType=SOURCE_TYPE,\
      instanceId=INSTANCE_ID,databaseId=DATABASE_ID,sessionFilePath=SESSION_FILE_PATH,\
      deadLetterQueueDirectory=DLQ_DIRECTORY,\
      runMode="retryDLQ"

Ersetzen Sie Folgendes:

  • JOB_NAME: der Name des Dataflow-Jobs.
  • PROJECT_ID: Die Google Cloud Projekt-ID, in der der Dataflow-Job ausgeführt wird.
  • GCP_REGION: die Google Cloud Region, in der Sie den Dataflow-Job ausführen möchten.
  • INPUT_FILE_PATTERN: der Cloud Storage-Bucket-Speicherort des Eingabedateimusters.
  • SOURCE_TYPE: der Typ der Quelldatenbank (z. B. mysql).
  • INSTANCE_ID: die ID der Cloud Spanner-Zielinstanz.
  • DATABASE_ID: die ID der Ziel-Cloud Spanner-Datenbank.
  • SESSION_FILE_PATH: Der Cloud Storage-Pfad zur Sitzungsdatei, die vom Spanner-Migrationstool generiert wurde.
  • DLQ_DIRECTORY: der Cloud Storage-Pfad zum Stammverzeichnis der Dead-Letter-Warteschlange, das die Fehlerdateien enthält, die noch einmal verarbeitet werden sollen (z. B. gs://MIGRATION_BUCKET/ENV/SERVICE/cdc/DB_SCHEMA/).

CDC-Migration ausführen

Nach Abschluss der Backfill-Migration können Sie die CDC mit Dataflow zu Spanner migrieren. Der Dataflow-Job übernimmt die Änderungsereignisse aus dem Cloud Storage-Bucket und schreibt sie in Spanner.

Um die CDC-Migration durchzuführen, ändern Sie den Wert des Terraform-Parameters skip_dataflow in false und führen Sie die Terraform-Vorlage für die Live-Migration noch einmal aus.

Führen Sie die Terraform-Konfiguration mit dem folgenden Befehl aus:

      terraform apply --var-file=terraform_simple.tfvars
    

CDC-Fehler im Blick behalten und beheben

Wenn Ihr Streaming-Dataflow-Job während der Live-Change Data Capture-Replikation (CDC) von MySQL zu Spanner kein Änderungsereignis in Spanner schreiben kann, wird der Fehler in eine von zwei Fehlerkategorien eingeteilt und der Datensatz in ein DLQ-Verzeichnis im Cloud Storage-Bucket deadLetterQueueDirectory geschrieben:

  • Wiederholbare Fehler: Vorübergehende Fehler, die unter anderem Folgendes umfassen:

    • Fehler wegen überschrittener Spanner-Frist
    • Verstöße gegen Fremdschlüssel- und verschachtelte Tabelleneinschränkungen. Dies kann passieren, wenn eine untergeordnete Zeile aufgrund von Netzwerkfehlern oder paralleler Verarbeitung vor ihrer übergeordneten Zeile ankommt.

    Dataflow schreibt diese Ereignisse in ein retry/-DLQ-Verzeichnis und wiederholt sie innerhalb derselben Pipeline, bis sie erfolgreich sind oder das maximale Wiederholungslimit überschritten wird.

  • Schwerwiegende Fehler: Dauerhafte Fehler, die nicht durch automatisierte Wiederholungsversuche behoben werden können, darunter:

    • Fehler bei der Datentypkonvertierung
    • Verstöße gegen eindeutige Indexe
    • Ausnahmen in benutzerdefinierten Transformations-JARs

    Dataflow schreibt diese Ereignisse in ein severe/-DLQ-Verzeichnis und erhöht den benutzerdefinierten Zähler Total permanent errors.

Da schwerwiegende Fehler nicht durch automatisierte Wiederholungsversuche behoben werden können, entfernt Dataflow diese fehlgeschlagenen Ereignisse aus dem aktiven Replikationsstream und speichert sie im Verzeichnis severe/. Wenn Sie nichts unternehmen, fehlen diese Datensätze in Ihrer Ziel-Spanner-Datenbank. Behalten Sie den Total permanent errors-Zähler und das severe/-Verzeichnis während der Live-Migration im Blick, damit Sie fehlgeschlagene Änderungsereignisse beheben und wiedergeben können, bevor Sie die Anwendungsübergabe starten.

Der benutzerdefinierte Dataflow-Zähler Total permanent errors ist ein kumulativer Messwert, der die Gesamtzahl der schwerwiegenden Fehler erfasst, die seit dem Start des Streamingjobs aufgetreten sind. Wenn Sie fehlgeschlagene Datensätze mit einem DLQ-Wiederholungsjob noch einmal abspielen und auflösen, wird dieser Zähler in Ihrer ursprünglichen Streamingpipeline nicht verringert. Daher ist Ihr Cloud Storage-Verzeichnis für schwerwiegende DLQ-Fehler (gs://.../severe/) die maßgebliche Quelle dafür, ob unbehandelte Fehler vorhanden sind.

Fehlgeschlagene Datensätze wiedergeben

Wenn fehlgeschlagene Datensätze in Ihrem Verzeichnis für schwerwiegende DLQ-Fehler angezeigt werden, prüfen Sie die JSON-Fehlerdateien in Cloud Storage, ermitteln Sie die Ursache und beheben Sie das zugrunde liegende Problem in Spanner (z. B. durch manuelles Einfügen fehlender übergeordneter Datensätze oder Aktualisieren von Schemaüberschreibungszuordnungen).

Wenn Sie korrigierte DLQ-Datensätze noch einmal in Spanner einfügen möchten, starten Sie einen neuen Dataflow-Job mit einem der folgenden DLQ-Wiederholungsmodi:

  • retryDLQ-Modus: Führen Sie diesen Modus als Batchjob zusammen mit Ihrer aktiven Streamingpipeline aus, um Fehlerdateien im Verzeichnis severe/ zu verarbeiten, ohne die Live-CDC-Replikation zu unterbrechen.
  • retryAllDLQ-Modus: Wenn Ihre reguläre Streamingpipeline beendet wird, verwenden Sie diesen Modus, um sowohl das Verzeichnis retry/ als auch das Verzeichnis severe/ zu verarbeiten. Führen Sie retryAllDLQ nicht gleichzeitig mit einer aktiven Pipeline aus, da dies zu Dateikonflikten und Verarbeitungskonflikten führt.

Führen Sie den folgenden Befehl aus, um einen DLQ-Wiederholungsjob mit der gcloud CLI zu starten:

gcloud dataflow flex-template run RETRY_JOB_NAME \
    --project=PROJECT_ID \
    --region=GCP_REGION \
    --template-file-gcs-location=gs://dataflow-templates/latest/flex/Cloud_Datastream_to_Spanner \
    --additional-experiments=use_runner_v2 \
    --parameters streamName="ignore",\
datastreamSourceType=SOURCE_TYPE,\
instanceId=INSTANCE_ID,databaseId=DATABASE_ID,sessionFilePath=SESSION_FILE_PATH,\
deadLetterQueueDirectory=DLQ_DIRECTORY,\
runMode="retryDLQ"

Ersetzen Sie Folgendes:

  • RETRY_JOB_NAME: der Name des Dataflow-DLQ-Wiederholungsjobs.
  • PROJECT_ID: Die Google Cloud -Projekt-ID, in der der Dataflow-Job ausgeführt wird.
  • GCP_REGION: die Google Cloud Region, in der Sie den Dataflow-Job ausführen möchten.
  • SOURCE_TYPE: der Typ der Quelldatenbank (z. B. mysql).
  • INSTANCE_ID: die ID der Cloud Spanner-Zielinstanz.
  • DATABASE_ID: die ID der Ziel-Cloud Spanner-Datenbank.
  • SESSION_FILE_PATH: Der Cloud Storage-Pfad zur Sitzungsdatei, die vom Spanner-Migrationstool generiert wurde.
  • DLQ_DIRECTORY: der Cloud Storage-Pfad zum Stammverzeichnis der Dead-Letter-Warteschlange, das die Fehlerdateien enthält, die noch einmal verarbeitet werden sollen (z. B. gs://MIGRATION_BUCKET/ENV/SERVICE/cdc/DB_SCHEMA/).

CDC-Migration abschließen

Nachdem fast alle Daten aus dem Cloud Storage-Bucket in Spanner geschrieben wurden, beenden Sie die Schreibvorgänge in der MySQL-Quellinstanz, damit die verbleibenden Änderungen in Spanner geschrieben werden können.

Dies führt zu einer kurzen Ausfallzeit, während Spanner die MySQL-Quellinstanz einholt. Nachdem alle Änderungen in Spanner geschrieben wurden, kann Ihre Anwendung Spanner als Datenbank verwenden.

Eine detaillierte Schritt-für-Schritt-Anleitung zum Pausieren von Anwendungsschreibvorgängen, zum Leeren von In-Flight-Daten und zum Ausführen der Anwendungsübertragung finden Sie unter Übertragung von MySQL ausführen.

Nächste Schritte