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_connectionsbestimmt. 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:
INTEGERTINYINTSMALLINTFLOATREALDOUBLENUMERICBIGINTDECIMALDATE
- 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.
- Wenn Sie indizierte oder Primärschlüssel-Einschränkungen haben, werden nur die folgenden Spaltentypen für die Erstellung paralleler Batches unterstützt:
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
assetnach 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
- Erstellen Sie einen Nutzer in der MySQL-Datenbank.
- Überprüfen Sie, ob Sie alle erforderlichen Aktionen ausgeführt haben, damit Sie den BigQuery Data Transfer Service aktivieren können.
- Erstellen Sie ein BigQuery-Dataset zum Speichern Ihrer Daten.
- Prüfen Sie, ob Sie die erforderlichen Rollen haben, um die Aufgaben in diesem Dokument auszuführen.
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:
- Wenn Sie Daten aus Cloud SQL übertragen, lesen Sie den Artikel Zugriff auf Cloud SQL-Instanzen konfigurieren.
- Wenn Sie Daten aus AWS übertragen, siehe Einrichten des AWS-Google Cloud VPN und des Netzwerkanhangs.
- Wenn Sie Daten aus Azure übertragen, lesen Sie den Artikel Azure-Google Cloud VPN und Netzwerkanhang einrichten.
MySQL-Daten in BigQuery laden
Fügen Sie MySQL-Daten in BigQuery hinzu, indem Sie eine Übertragungskonfiguration mit einer der folgenden Optionen einrichten:
Console
Rufen Sie die Seite Datenübertragungen auf.
Klicken Sie auf Übertragung erstellen.
Wählen Sie im Abschnitt Quelltyp für Quelle die Option MySQL aus.
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.
- Wenn Sie Inkrementell (Vorschau) auswählen, wählen Sie für Schreibmodus entweder Append oder Upsert aus. Weitere Informationen zu den verschiedenen Schreibmodi finden Sie unter Vollständige oder inkrementelle Übertragungen.
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.
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.
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.
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.
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.
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_idnicht angegeben wird, um ein bestimmtes Projekt anzugeben, wird das Standardprojekt verwendet. - DATA_SOURCE: die Datenquelle, die
mysqlist. - 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.connectionTypeconnector.connectionType(optional): der Verbindungstyp zur Bestimmung der Verbindungs-URL. Dies kannSERVICE,SIDoderTNSsein. Wenn nicht angegeben, wird standardmäßigSERVICEverwendet.connector.legacyMapping: auftrue(Standard) festgelegt, um die Legacy Datentypzuordnung zu verwenden. Auffalsefestgelegt, um die aktualisierte Datentypzuordnung zu verwenden. Wenn Sie eine inkrementelle Übertragung durchführen, muss dieser Wertfalsesein. 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_HOSTzum Verschlüsseln von Daten und Überprüfen der Zertifizierungsstelle und des HostnamensENCRYPT_VERIFY_CAzum Verschlüsseln von Daten und Überprüfen nur der ZertifizierungsstelleENCRYPT_VERIFY_NONEnur für die DatenverschlüsselungDISABLEfür keine Verschlüsselung oder Überprüfung
connector.tls.trustedServerCertificate: (optional) Geben Sie ein oder mehrere PEM-codierte Zertifikate an. Nur erforderlich, wennconnector.tls.modeaufENCRYPT_VERIFY_CA_AND_HOSToderENCRYPT_VERIFY_CAfestgelegt ist.ingestionType: Geben Sie entwederfulloderincrementalan. Inkrementelle Übertragungen werden in der Vorschauunterstützt. Weitere Informationen finden Sie unter Vollständige oder inkrementelle Übertragungen.writeMode: Geben Sie entwederWRITE_MODE_APPENDoderWRITE_MODE_UPSERTan.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 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
- Lesen Sie eine Übersicht über den BigQuery Data Transfer Service.
- Informationen zum Verwalten von Übertragungen, einschließlich des Abrufs von Informationen zu einer Übertragungskonfiguration, des Auflistens von Übertragungskonfigurationen und des Aufrufs des Ausführungsverlaufs der Übertragung
- Informationen zum Laden von Daten mit BigQuery Omni-Vorgängen