MySQL-Daten in BigQuery laden

Wenn Sie wiederkehrende Datenübertragungen von MySQL zu BigQuery planen möchten, können Sie eine Übertragungskonfiguration erstellen, um anzugeben, welche Datenobjekte übertragen werden sollen und wie oft die Datenübertragung geplant werden soll. Nachdem Sie die Übertragungskonfiguration eingerichtet haben, überträgt der BigQuery Data Transfer Service die neuesten Daten nach dem angegebenen Zeitplan in eine BigQuery-Tabelle.

Informationen zur Funktionsweise einer MySQL-Übertragung finden Sie unter Einführung in MySQL-Datenübertragungen.

Beschränkungen

Für MySQL-Datenübertragungen gelten die folgenden Beschränkungen:

  • Die maximale Anzahl gleichzeitiger Verbindungen zu einer MySQL-Datenbank wird durch den MySQL-Konfigurationsparameter max_connections bestimmt. Standardmäßig ist dieser auf 151 Verbindungen festgelegt, kann aber bei Bedarf auf einen höheren Wert konfiguriert werden. Daher ist die Anzahl der gleichzeitigen Übertragungsvorgänge zu einer einzelnen MySQL-Datenbank auf diesen Höchstwert begrenzt. Diese Beschränkung bedeutet auch, dass die Anzahl gleichzeitiger Übertragungsjobs auf einen Wert begrenzt werden sollte, der kleiner als die maximale Anzahl gleichzeitiger Verbindungen ist, die von der MySQL-Datenbank unterstützt werden.
  • Eine einzelne Übertragungskonfiguration kann jeweils nur einen Datenübertragungsvorgang unterstützen. Wenn eine zweite Datenübertragung geplant ist, bevor die erste abgeschlossen ist, wird nur die erste Datenübertragung abgeschlossen. Alle anderen Datenübertragungen, die sich mit der ersten Übertragung überschneiden, werden übersprungen.
    • Um übersprungene Übertragungen innerhalb einer einzelnen Übertragungskonfiguration zu vermeiden, empfehlen wir, die Zeit zwischen großen Datenübertragungen zu verlängern, indem Sie die Option Wiederholungshäufigkeit konfigurieren.
  • Während einer Datenübertragung identifiziert der MySQL-Connector indizierte und partitionierte Schlüsselspalten, um Ihre Daten in parallelen Batches zu übertragen. Aus diesem Grund empfehlen wir, Primärschlüsselspalten anzugeben oder indizierte Spalten in Ihrer Tabelle zu verwenden, um die Leistung zu verbessern und die Fehlerrate bei Ihren Datenübertragungen zu reduzieren.
    • Wenn Sie indizierte oder Primärschlüssel-Einschränkungen haben, werden nur die folgenden Spaltentypen für die Erstellung paralleler Batches unterstützt:
      • INTEGER
      • TINYINT
      • SMALLINT
      • FLOAT
      • REAL
      • DOUBLE
      • NUMERIC
      • BIGINT
      • DECIMAL
      • DATE
    • MySQL-Datenübertragungen,bei denen keine Primärschlüssel- oder indizierten Spalten verwendet werden,können nicht mehr als 2.000.000 Datensätze pro Tabelle unterstützen.

Beschränkungen für inkrementelle Übertragungen

Für inkrementelle MySQL-Übertragungen gelten die folgenden Beschränkungen:

  • Sie können nur TIMESTAMP-Spalten als Watermark-Spalten auswählen.
  • Die inkrementelle Aufnahme wird nur für Assets mit gültigen Watermark-Spalten unterstützt.
  • Die Werte in einer Watermark-Spalte müssen monoton steigend sein.
  • Bei inkrementellen Übertragungen können keine Löschvorgänge in der Quelltabelle synchronisiert werden.
  • Eine einzelne Übertragungskonfiguration kann nur entweder die inkrementelle oder die vollständige Aufnahme unterstützen.
  • Sie können Objekte in der Liste asset nach der ersten inkrementellen Aufnahme nicht mehr aktualisieren.
  • Sie können den Schreibmodus in einer Übertragungskonfiguration nach der ersten inkrementellen Aufnahme nicht mehr ändern.
  • Sie können die Watermark-Spalte oder den Primärschlüssel nach der ersten inkrementellen Aufnahme nicht mehr ändern.
  • Die BigQuery-Zieltabelle wird mit dem angegebenen Primärschlüssel geclustert und unterliegt den Beschränkungen für geclusterte Tabellen.
  • Wenn Sie eine vorhandene Übertragungskonfiguration zum ersten Mal in den inkrementellen Aufnahmemodus aktualisieren, werden bei der ersten Datenübertragung nach dieser Aktualisierung alle verfügbaren Daten aus Ihrer Datenquelle übertragen. Bei allen nachfolgenden inkrementellen Datenübertragungen werden nur die neuen und aktualisierten Zeilen aus Ihrer Datenquelle übertragen.

  • Wir empfehlen, Indizes für die Watermark-Spalte zu erstellen. Dieser Connector verwendet Watermark-Spalten für Filter bei inkrementellen Übertragungen. Das Indexieren dieser Spalten kann die Leistung verbessern.

  • Bei einer inkrementellen Übertragung müssen Sie die aktualisierte Datentypzuordnung verwenden.

Hinweis

Erforderliche Rollen

Bitten Sie Ihren Administrator, Ihnen die BigQuery-Administrator (roles/bigquery.admin) IAM-Rolle für Ihr Projekt zu gewähren, um die Berechtigungen zu erhalten, die Sie zum Erstellen einer Datenübertragung mit dem BigQuery Data Transfer Service benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff auf Projekte, Ordner und Organisationen verwalten.

Diese vordefinierte Rolle enthält die Berechtigungen, die zum Erstellen einer Datenübertragung mit dem BigQuery Data Transfer Service erforderlich sind. Maximieren Sie den Abschnitt Erforderliche Berechtigungen , um die notwendigen Berechtigungen anzuzeigen, die erforderlich sind:

Erforderliche Berechtigungen

Die folgenden Berechtigungen sind erforderlich, um eine Datenübertragung mit dem BigQuery Data Transfer Service zu erstellen:

  • Berechtigungen für BigQuery Data Transfer Service:
    • bigquery.transfers.update
    • bigquery.transfers.get
  • BigQuery-Berechtigungen:
    • bigquery.datasets.get
    • bigquery.datasets.getIamPolicy
    • bigquery.datasets.update
    • bigquery.datasets.setIamPolicy
    • bigquery.jobs.create

Möglicherweise können Sie diese Berechtigungen auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

Weitere Informationen finden Sie unter Zugriff auf bigquery.admin gewähren.

Wenn Sie Benachrichtigungen zur Übertragungsausführung für Pub/Sub einrichten möchten, benötigen Sie die IAM-Berechtigung pubsub.topics.setIamPolicy (Identity and Access Management). Pub/Sub-Berechtigungen sind nicht erforderlich, wenn Sie nur E‑Mail-Benachrichtigungen einrichten. Weitere Informationen finden Sie unter Ausführungsbenachrichtigungen im BigQuery Data Transfer Service.

Netzwerkverbindungen

Wenn für die MySQL Datenbankverbindung keine öffentliche IP-Adresse verfügbar ist, müssen Sie einen Netzwerkanhang einrichten.

Eine detaillierte Anleitung zur erforderlichen Netzwerkeinrichtung finden Sie in den folgenden Dokumenten:

MySQL-Daten in BigQuery laden

Fügen Sie MySQL-Daten in BigQuery hinzu, indem Sie eine Übertragungskonfiguration mit einer der folgenden Optionen einrichten:

Console

  1. Rufen Sie die Seite Datenübertragungen auf.

    Zu „Datenübertragungen“

  2. Klicken Sie auf Übertragung erstellen.

  3. Wählen Sie im Abschnitt Quelltyp für Quelle die Option MySQL aus.

  4. Führen Sie im Abschnitt Details zur Datenquelle folgende Schritte aus:

    • Wählen Sie unter Netzwerkanhang einen vorhandenen Netzwerkanhang aus oder klicken Sie auf Netzwerkanhang erstellen. Weitere Informationen finden Sie im Abschnitt Netzwerkverbindungen in diesem Dokument.
    • Geben Sie unter Host den Hostnamen oder die IP-Adresse des MySQL-Datenbankservers ein.
    • Geben Sie unter Portnummer die Portnummer für den MySQL Datenbankserver ein.
    • Geben Sie unter Datenbankname den Namen der MySQL Datenbank ein.
    • Geben Sie unter Nutzername den Nutzernamen des MySQL Nutzers ein, der die MySQL-Datenbankverbindung initiiert.
    • Geben Sie unter Passwort das Passwort des MySQL -Nutzers ein, der die MySQL-Datenbankverbindung initiiert.
    • Wählen Sie für TLS-Modus eine Option aus dem Menü aus. Weitere Informationen zu TLS-Modi finden Sie unter TLS-Konfiguration.
    • Geben Sie für Trusted PEM Certificate (Zertifikat für vertrauenswürdigen PEM) das öffentliche Zertifikat der Zertifizierungsstelle ein, die das TLS-Zertifikat des Datenbankservers ausgestellt hat. Weitere Informationen finden Sie unter Zertifikat für vertrauenswürdigen Serverzertifikat (PEM).
    • Wählen Sie für Legacy-Zuordnung aktivieren true (Standard) aus, um die Legacy Datentypzuordnung zu verwenden. Wählen Sie false aus, um die aktualisierte Datentypzuordnung zu verwenden. Wenn Sie eine inkrementelle Übertragung durchführen, muss dieser Wert false sein. Weitere Informationen zu den Aktualisierungen der Datentyp zuordnung finden Sie unter 16. März, 2027.
    • Wählen Sie für Aufnahmetyp die Option Vollständig oder Inkrementell aus.
    • Klicken Sie unter Zu übertragende MySQL-Objekte auf Durchsuchen.

      Wählen Sie alle Objekte aus, die an das BigQuery Ziel-Dataset übertragen werden sollen. Sie können in diesem Feld auch manuell Objekte eingeben, die in die Datenübertragung aufgenommen werden sollen.

      • Wenn Sie Append als inkrementellen Schreibmodus ausgewählt haben, müssen Sie eine Spalte als Watermark-Spalte auswählen.
      • Wenn Sie Upsert als inkrementellen Schreibmodus gewählt haben, müssen Sie eine Spalte als Watermark-Spalte und darauf eine oder mehrere Spalten als Primärschlüssel auswählen.
  5. Geben Sie im Abschnitt Konfigurationsname für Übertragung für Anzeigename einen Namen für die Übertragung ein. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.

  6. Führen Sie im Abschnitt Zeitplanoptionen folgende Schritte aus:

    • Wählen Sie eine Wiederholungshäufigkeit aus. Wenn Sie die Option Stunden, Tage (Standard), Wochen oder Monate auswählen, müssen Sie auch eine Häufigkeit angeben. Sie können auch die Option Benutzerdefiniert auswählen, um eine genauere Wiederholungshäufigkeit festzulegen. Wenn Sie die Option On-demand auswählen, wird diese Datenübertragung nur ausgeführt, wenn Sie die Übertragung manuell auslösen.
    • Wählen Sie gegebenenfalls die Option Jetzt starten oder Zu festgelegter Zeit starten aus und geben Sie ein Startdatum und eine Laufzeit an.
  7. Wählen Sie im Abschnitt Zieleinstellungen für Dataset das Dataset aus, das Sie zum Speichern Ihrer Daten erstellt haben, oder klicken Sie auf Neues Dataset erstellen und erstellen Sie ein Dataset, das als Ziel-Dataset verwendet werden soll.

  8. Optional: Gehen Sie im Abschnitt Benachrichtigungsoptionen so vor:

    • Klicken Sie auf den Ein/Aus-Button E‑Mail-Benachrichtigungen, um E‑Mail-Benachrichtigungen zu aktivieren. Wenn Sie diese Option aktivieren, erhält der Übertragungsadministrator eine E‑Mail-Benachrichtigung, wenn ein Übertragungsvorgang fehlschlägt.
    • Klicken Sie auf den Ein/Aus-Button Pub/Sub-Benachrichtigungen, um Pub/Sub-Ausführungsbenachrichtigungen für Ihre Übertragung zu konfigurieren. Sie können Ihren Themen namen auswählen oder auf Thema erstellen klicken, um eines zu erstellen.
  9. Klicken Sie auf Speichern.

bq

Geben Sie den bq mk Befehl ein und geben Sie das Flag für die Übertragungserstellung --transfer_config an:

bq mk
    --transfer_config
    --project_id=PROJECT_ID
    --data_source=DATA_SOURCE
    --display_name=DISPLAY_NAME
    --target_dataset=DATASET
    --params='PARAMETERS'

Ersetzen Sie Folgendes:

  • PROJECT_ID (optional): Ihre Google Cloud Projekt-ID. Wenn das Flag --project_id nicht angegeben wird, um ein bestimmtes Projekt anzugeben, wird das Standardprojekt verwendet.
  • DATA_SOURCE: die Datenquelle, die mysql ist.
  • DISPLAY_NAME: der Anzeigename für die Datenübertragungs konfiguration. Der Übertragungsname kann ein beliebiger Wert sein, mit dem Sie die Übertragung identifizieren können, wenn Sie sie später ändern müssen.
  • DATASET: das Ziel-Dataset für die Datenübertragungs konfiguration.
  • PARAMETERS: die Parameter für die erstellte Übertragungs konfiguration im JSON-Format. Beispiel: --params='{"param":"param_value"}'. Im Folgenden finden Sie die Parameter für eine MySQL-Übertragung:

    • connector.networkAttachment (optional): der Name des Netzwerkanhangs, der eine Verbindung zur MySQL-Datenbank herstellen soll.
    • connector.database: der Name der MySQL-Datenbank.
    • connector.endpoint.host: der Hostname oder die IP-Adresse der Datenbank.
    • connector.endpoint.port: die Portnummer der Datenbank.
    • connector.authentication.username: der Nutzername des Datenbanknutzers.
    • connector.authentication.password: das Passwort des Datenbanknutzers. connector.connectionType
    • connector.connectionType (optional): der Verbindungstyp zur Bestimmung der Verbindungs-URL. Dies kann SERVICE, SID oder TNS sein. Wenn nicht angegeben, wird standardmäßig SERVICE verwendet.
    • connector.legacyMapping: auf true (Standard) festgelegt, um die Legacy Datentypzuordnung zu verwenden. Auf false festgelegt, um die aktualisierte Datentypzuordnung zu verwenden. Wenn Sie eine inkrementelle Übertragung durchführen, muss dieser Wert false sein. Weitere Informationen zu den Aktualisierungen der Datentyp zuordnung finden Sie unter 16. März, 2027.
    • connector.tls.mode: Geben Sie eine TLS-Konfiguration an, die für diese Übertragung verwendet werden soll:
      • ENCRYPT_VERIFY_CA_AND_HOST zum Verschlüsseln von Daten und Überprüfen der Zertifizierungsstelle und des Hostnamens
      • ENCRYPT_VERIFY_CA zum Verschlüsseln von Daten und Überprüfen nur der Zertifizierungsstelle
      • ENCRYPT_VERIFY_NONE nur für die Datenverschlüsselung
      • DISABLE für keine Verschlüsselung oder Überprüfung
    • connector.tls.trustedServerCertificate: (optional) Geben Sie ein oder mehrere PEM-codierte Zertifikate an. Nur erforderlich, wenn connector.tls.mode auf ENCRYPT_VERIFY_CA_AND_HOST oder ENCRYPT_VERIFY_CA festgelegt ist.
    • ingestionType: Geben Sie entweder full oder incremental an. Inkrementelle Übertragungen werden in der Vorschauunterstützt. Weitere Informationen finden Sie unter Vollständige oder inkrementelle Übertragungen.
    • writeMode: Geben Sie entweder WRITE_MODE_APPEND oder WRITE_MODE_UPSERT an.
    • watermarkColumns: Geben Sie Spalten in Ihrer Tabelle als Watermark-Spalten an. Dieses Feld ist für inkrementelle Übertragungen erforderlich.
    • primaryKeys: Geben Sie Spalten in Ihrer Tabelle als Primärschlüssel an. Dieses Feld ist für inkrementelle Übertragungen erforderlich.
    • assets: eine Liste der Namen der MySQL-Tabellen, die im Rahmen der Übertragung aus der MySQL-Datenbank übertragen werden sollen.

Mit dem folgenden Befehl wird beispielsweise eine MySQL-Übertragung mit dem Namen My Transfer erstellt:

bq mk
    --transfer_config
    --target_dataset=mydataset
    --data_source=mysql
    --display_name='My Transfer'
    --params='{"assets":["DB1/DEPARTMENT","DB1/EMPLOYEES"],
        "connector.authentication.username": "User1",
        "connector.authentication.password":"ABC12345",
        "connector.encryptionMode":"FULL",
        "connector.database":"DB1",
        "connector.endpoint.host":"54.74.220.23",
        "connector.endpoint.port":3306
        "ingestionType":"incremental",
        "writeMode":"WRITE_MODE_APPEND",
        "watermarkColumns":["createdAt","createdAt"],
        "primaryKeys":[['dep_id'], ['report_by','report_title']],
        "connector.tls.mode": "ENCRYPT_VERIFY_CA_AND_HOST",
        "connector.tls.trustedServerCertificate": "PEM-encoded certificate"}'

Wenn Sie bei einer inkrementellen Übertragung mehrere Assets angeben, entsprechen die Werte der Felder watermarkColumns und primaryKeys der Position der Werte im Feld assets. Im folgenden Beispiel entspricht dep_id der Tabelle DB1/USER1/DEPARTMENT, während report_by und report_title der Tabelle DB1/USER1/EMPLOYEES entsprechen.

      "primaryKeys":[['dep_id'], ['report_by','report_title']],
      "assets":["DB1/USER1/DEPARTMENT","DB1/USER1/EMPLOYEES"],
  

API

Verwenden Sie die projects.locations.transferConfigs.create Methode und geben Sie eine Instanz der TransferConfig Ressource an.

Wenn Sie die Übertragungskonfiguration speichern, löst der MySQL-Connector automatisch eine Übertragungsausführung gemäß Ihrer Zeitplanoption aus. Bei jeder Übertragungsausführung überträgt der MySQL-Connector alle verfügbaren Daten aus MySQL nach BigQuery.

Wenn Sie eine Datenübertragung außerhalb des regulären Zeitplans manuell ausführen möchten, können Sie eine Backfill-Ausführung starten.

Fehlerbehebung

Bei Problemen mit dem Einrichten von Datenübertragungen finden Sie weitere Informationen unter MySQL-Übertragungsprobleme.

Metadaten übertragen

Sie können den MySQL-Connector auch verwenden, um Metadaten in Knowledge Catalog zu übertragen. Weitere Informationen finden Sie unter MySQL-Metadaten in Knowledge Catalog laden.

Nächste Schritte