Kopieren von Daten aus MySQL mithilfe von Azure Data Factory oder Synapse Analytics
GILT FÜR: Azure Data Factory Azure Synapse Analytics
Tipp
Testen Sie Data Factory in Microsoft Fabric, eine All-in-One-Analyselösung für Unternehmen. Microsoft Fabric deckt alle Aufgaben ab, von der Datenverschiebung bis hin zu Data Science, Echtzeitanalysen, Business Intelligence und Berichterstellung. Erfahren Sie, wie Sie kostenlos eine neue Testversion starten!
In diesem Artikel wird beschrieben, wie Sie die Copy-Aktivität in Azure Data Factory- und Azure Synapse Analytics-Pipelines verwenden, um Daten aus einer MySQL-Datenbank zu kopieren. Er baut auf dem Artikel zur Übersicht über die Kopieraktivität auf, der eine allgemeine Übersicht über die Kopieraktivität enthält.
Hinweis
Verwenden Sie zum Kopieren von Daten aus dem bzw. in den Azure Database for MySQL-Dienst den speziellen Azure Database for MySQL-Connector.
Wichtig
Der MySQL-Connector mit der empfohlenen Treiberversion bietet eine verbesserte native MySQL-Unterstützung. Wenn Sie den Connector mit der Legacytreiberversion verwenden, führen Sie ein Upgrade vor dem 31. Oktober 2024 durch. Ausführliche Informationen zum Unterschied zwischen der Legacyversion und der empfohlenen Version finden Sie in diesem Abschnitt.
Unterstützte Funktionen
Für den MySQL-Connector werden die folgenden Funktionen unterstützt:
Unterstützte Funktionen | IR |
---|---|
Kopieraktivität (Quelle/-) | ① ② |
Lookup-Aktivität | ① ② |
① Azure Integration Runtime ② Selbstgehostete Integration Runtime
Eine Liste der Datenspeicher, die als Quellen oder Senken für die Kopieraktivität unterstützt werden, finden Sie in der Tabelle Unterstützte Datenspeicher.
Dieser Connector unterstützt MySQL Version 5.5, 5.6, 5.7, 8.0, 8.1 und 8.2 unter der empfohlenen neuen Treiberversion v2 und 5.6, 5.7 und 8.0 unter der älteren Treiberversion.
Voraussetzungen
Wenn sich Ihr Datenspeicher in einem lokalen Netzwerk, in einem virtuellen Azure-Netzwerk oder in einer virtuellen privaten Amazon-Cloud befindet, müssen Sie eine selbstgehostete Integration Runtime konfigurieren, um eine Verbindung herzustellen.
Handelt es sich bei Ihrem Datenspeicher um einen verwalteten Clouddatendienst, können Sie die Azure Integration Runtime verwenden. Ist der Zugriff auf IP-Adressen beschränkt, die in den Firewallregeln genehmigt sind, können Sie Azure Integration Runtime-IPs zur Positivliste hinzufügen.
Sie können auch das Feature managed virtual network integration runtime (Integration Runtime für verwaltete virtuelle Netzwerke) in Azure Data Factory verwenden, um auf das lokale Netzwerk zuzugreifen, ohne eine selbstgehostete Integration Runtime zu installieren und zu konfigurieren.
Weitere Informationen zu den von Data Factory unterstützten Netzwerksicherheitsmechanismen und -optionen finden Sie unter Datenzugriffsstrategien.
Die Integration Runtime bietet ab Version 3.7 einen integrierten MySQL-Treiber. Daher müssen keine Treiber manuell installiert werden.
Erste Schritte
Sie können eines der folgenden Tools oder SDKs verwenden, um die Kopieraktivität mit einer Pipeline zu verwenden:
- Das Tool „Daten kopieren“
- Azure-Portal
- Das .NET SDK
- Das Python SDK
- Azure PowerShell
- Die REST-API
- Die Azure Resource Manager-Vorlage
Erstellen eines mit MySQL verknüpften Dienstes über die Benutzeroberfläche
Führen Sie die folgenden Schritte aus, um einen mit MySQL verknüpften Dienst in der Azure-Portal-Benutzeroberfläche zu erstellen.
Navigieren Sie in Ihrem Azure Data Factory- oder Synapse-Arbeitsbereich zur Registerkarte „Verwalten“, wählen Sie „Verknüpfte Dienste“ aus, und klicken Sie auf „Neu“:
Suchen Sie nach „MySQL“, und wählen Sie den MySQL-Connector aus.
Konfigurieren Sie die Dienstdetails, testen Sie die Verbindung, und erstellen Sie den neuen verknüpften Dienst.
Details zur Connector-Konfiguration
Die folgenden Abschnitte enthalten Details zu Eigenschaften, die zum Definieren von Data Factory-Entitäten speziell für den MySQL-Connector verwendet werden:
Eigenschaften des verknüpften Diensts
Wenn Sie die empfohlene Treiberversion verwenden, werden die folgenden Eigenschaften für den mit MySQL verknüpften Dienst unterstützt:
Eigenschaft | Beschreibung | Erforderlich |
---|---|---|
type | Die type-Eigenschaft muss auf Folgendes festgelegt werden: MySql | Ja |
driverVersion | Die Treiberversion, wenn Sie die empfohlene Treiberversion auswählen. Der Wert lautet v2. | Ja |
server | Der Name Ihres MySQL-Servers. | Ja |
port | Die Portnummer für die Verbindung mit dem MySQL-Server. | Nein |
database | Der Name Ihrer MySQL-Datenbank. | Ja |
username | Ihr Benutzername. | Ja |
Kennwort | Das Kennwort für den Benutzernamen. Markieren Sie dieses Feld als SecureString, um es sicher zu speichern. Alternativ können Sie auf ein in Azure Key Vault gespeichertes Geheimnis verweisen. | Ja |
sslMode | Diese Option gibt an, ob der Treiber beim Herstellen der Verbindung mit MySQL die TLS-Verschlüsselung und -Überprüfung verwendet. Beispiel: SSLMode=<0/1/2/3/4> .Optionen: DISABLED (0)/PREFERRED (1) (Standard)/REQUIRED (2)/VERIFY_CA (3)/VERIFY_IDENTITY (4) |
Ja |
useSystemTrustStore | Diese Option gibt an, ob ein Zertifizierungsstellenzertifikat aus dem Vertrauensspeicher des Systems oder aus einer angegebenen PEM-Datei verwendet werden soll. Beispiel UseSystemTrustStore=<0/1> ;Optionen: Enabled (1)/Disabled (0) (Standard) |
Nein |
connectVia | Die Integrationslaufzeit, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden muss. Weitere Informationen finden Sie im Abschnitt Voraussetzungen. Wenn keine Option angegeben ist, wird die standardmäßige Azure Integration Runtime verwendet. | Nein |
Beispiel:
{
"name": "MySQLLinkedService",
"properties": {
"type": "MySql",
"typeProperties": {
"server": "<server>",
"port": 3306,
"database": "<database>",
"username": "<username>",
"password": {
"type": "SecureString",
"value": "<password>"
},
"sslmode": <sslmode>,
"usesystemtruststore": <UseSystemTrustStore>,
"driverVersion": "v2"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Beispiel: Speichern des Kennworts in Azure Key Vault
{
"name": "MySQLLinkedService",
"properties": {
"type": "MySql",
"typeProperties": {
"server": "<server>",
"port": 3306,
"database": "<database>",
"username": "<username>",
"sslmode": <sslmode>,
"usesystemtruststore": <UseSystemTrustStore>,
"password": {
"type": "AzureKeyVaultSecret",
"store": {
"referenceName": "<Azure Key Vault linked service name>",
"type": "LinkedServiceReference"
},
"secretName": "<secretName>"
},
"driverVersion": "v2"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Wenn Sie die Legacytreiberversion verwenden, werden die folgenden Eigenschaften unterstützt:
Eigenschaft | Beschreibung | Erforderlich |
---|---|---|
type | Die type-Eigenschaft muss auf Folgendes festgelegt werden: MySql | Ja |
connectionString | Geben Sie Informationen an, die zum Herstellen einer Verbindung mit der Azure Database for MySQL-Instanz erforderlich sind. Sie können auch das Kennwort in Azure Key Vault speichern und die password -Konfiguration aus der Verbindungszeichenfolge pullen. Ausführlichere Informationen finden Sie in den folgenden Beispielen und im Artikel Speichern von Anmeldeinformationen in Azure Key Vault. |
Ja |
connectVia | Die Integrationslaufzeit, die zum Herstellen einer Verbindung mit dem Datenspeicher verwendet werden muss. Weitere Informationen finden Sie im Abschnitt Voraussetzungen. Wenn keine Option angegeben ist, wird die standardmäßige Azure Integration Runtime verwendet. | Nein |
Eine typische Verbindungszeichenfolge ist Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>
. Weitere Eigenschaften, die Sie für Ihren Fall festlegen können:
Eigenschaft | Beschreibung | Erforderlich |
---|---|---|
sslMode | Diese Option gibt an, ob der Treiber beim Herstellen der Verbindung mit MySQL die TLS-Verschlüsselung und -Überprüfung verwendet. Beispiel: SSLMode=<0/1/2/3/4> .Optionen: DISABLED (0)/PREFERRED (1) (Standard)/REQUIRED (2)/VERIFY_CA (3)/VERIFY_IDENTITY (4) |
Ja |
SSLCert | Der vollständige Pfad und Name einer PEM-Datei mit dem SSL-Zertifikat, das als Identitätsnachweis für den Client verwendet wird. Wenn Sie einen privaten Schlüssel angeben möchten, um das Zertifikat vor dem Senden an den Server zu verschlüsseln, verwenden Sie die Eigenschaft SSLKey . |
Ja (bei Verwendung der bidirektionalen SSL-Überprüfung). |
SSLKey | Der vollständige Pfad und Name einer Datei mit dem privaten Schlüssel, der verwendet wird, um das clientseitige Zertifikat während der bidirektionalen SSL-Überprüfung zu verschlüsseln. | Ja (bei Verwendung der bidirektionalen SSL-Überprüfung). |
useSystemTrustStore | Diese Option gibt an, ob ein Zertifizierungsstellenzertifikat aus dem Vertrauensspeicher des Systems oder aus einer angegebenen PEM-Datei verwendet werden soll. Beispiel UseSystemTrustStore=<0/1> ;Optionen: Enabled (1)/Disabled (0) (Standard) |
Nein |
Beispiel:
{
"name": "MySQLLinkedService",
"properties": {
"type": "MySql",
"typeProperties": {
"connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Dataset-Eigenschaften
Eine vollständige Liste mit den Abschnitten und Eigenschaften, die zum Definieren von Datasets zur Verfügung stehen, finden Sie im Artikel zu Datasets. Dieser Abschnitt enthält eine Liste der Eigenschaften, die vom MySQL-Dataset unterstützt werden.
Zum Kopieren von Daten aus MySQL werden die folgenden Eigenschaften unterstützt:
Eigenschaft | Beschreibung | Erforderlich |
---|---|---|
type | Die type-Eigenschaft des Datasets muss auf folgenden Wert festgelegt werden: MySqlTable | Ja |
tableName | Name der Tabelle in der MySQL-Datenbank. | Nein (wenn „query“ in der Aktivitätsquelle angegeben ist) |
Beispiel
{
"name": "MySQLDataset",
"properties":
{
"type": "MySqlTable",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<MySQL linked service name>",
"type": "LinkedServiceReference"
}
}
}
Wenn Sie das Datenset vom Typ RelationalTable
verwenden, wird es weiterhin unverändert unterstützt. Es wird jedoch empfohlen, zukünftig die neue Version zu verwenden.
Eigenschaften der Kopieraktivität
Eine vollständige Liste mit den Abschnitten und Eigenschaften zum Definieren von Aktivitäten finden Sie im Artikel Pipelines. Dieser Abschnitt enthält eine Liste der Eigenschaften, die von der MySQL-Quelle unterstützt werden.
MySQL als Quelle
Beim Kopieren von Daten aus MySQL werden die folgenden Eigenschaften im Abschnitt source der Kopieraktivität unterstützt:
Eigenschaft | Beschreibung | Erforderlich |
---|---|---|
type | Die type-Eigenschaft der Quelle der Kopieraktivität muss auf Folgendes festgelegt werden: MySqlSource | Ja |
Abfrage | Verwendet die benutzerdefinierte SQL-Abfrage zum Lesen von Daten. Beispiel: "SELECT * FROM MyTable" . |
Nein (wenn „tableName“ im Dataset angegeben ist) |
Beispiel:
"activities":[
{
"name": "CopyFromMySQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<MySQL input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "MySqlSource",
"query": "SELECT * FROM MyTable"
},
"sink": {
"type": "<sink type>"
}
}
}
]
Wenn Sie eine Quelle vom Typ RelationalSource
verwenden, wird sie weiterhin unverändert unterstützt. Es wird jedoch empfohlen, zukünftig die neue Version zu verwenden.
Datentypzuordnung für MySQL
Beim Kopieren von Daten aus MySQL werden die folgenden Zuordnungen von MySQL-Datentypen zu den vom Dienst intern verwendeten Zwischendatentypen verwendet. Unter Schema- und Datentypzuordnungen erfahren Sie, wie Sie Aktivitätszuordnungen für Quellschema und Datentyp in die Senke kopieren.
MySQL-Datentyp | Zwischendatentyp des Diensts | Zwischendatentyp des Dienstes (für die altere Treiberversion) |
---|---|---|
bigint |
Int64 |
Int64 |
bigint unsigned |
Decimal |
Decimal |
bit(1) |
UInt64 |
Boolean |
bit(M), M>1 |
UInt64 |
Byte[] |
blob |
Byte[] |
Byte[] |
bool |
Boolean (Wenn TreatTinyAsBoolean=false, wird der Wert als SByte zugeordnet. TreatTinyAsBoolean ist standardmäßig true) |
Int16 |
char |
String |
String |
date |
Datetime |
Datetime |
datetime |
Datetime |
Datetime |
decimal |
Decimal |
Decimal, String |
double |
Double |
Double |
double precision |
Double |
Double |
enum |
String |
String |
float |
Single |
Single |
int |
Int32 |
Int32 |
int unsigned |
Int64 |
Int64 |
integer |
Int32 |
Int32 |
integer unsigned |
Int64 |
Int64 |
JSON |
String |
- |
long varbinary |
Byte[] |
Byte[] |
long varchar |
String |
String |
longblob |
Byte[] |
Byte[] |
longtext |
String |
String |
mediumblob |
Byte[] |
Byte[] |
mediumint |
Int32 |
Int32 |
mediumint unsigned |
Int64 |
Int64 |
mediumtext |
String |
String |
numeric |
Decimal |
Decimal |
real |
Double |
Double |
set |
String |
String |
smallint |
Int16 |
Int16 |
smallint unsigned |
Int32 |
Int32 |
text |
String |
String |
time |
TimeSpan |
TimeSpan |
timestamp |
Datetime |
Datetime |
tinyblob |
Byte[] |
Byte[] |
tinyint |
SByte ( tinyint(1) wird Boolean zugeordnet) |
Int16 |
tinyint unsigned |
Int16 |
Int16 |
tinytext |
String |
String |
varchar |
String |
String |
year |
Int |
Int |
Eigenschaften der Lookup-Aktivität
Ausführliche Informationen zu den Eigenschaften finden Sie unter Lookup-Aktivität.
Aktualisieren des MySQL-Connectors
Die folgenden Schritte helfen Ihnen beim Upgrade Ihres MySQL-Connectors:
Wählen Sie auf der Seite Verknüpften Dienst bearbeiten unter Treiberversion die Option Empfohlen aus, und konfigurieren Sie den verknüpften Dienst, indem Sie auf Eigenschaften des verknüpften Diensts verweisen.
Die Datentypzuordnung für den neuesten mit MySQL verknüpften Dienst unterscheidet sich von der für die Legacyversion. Informationen zur neuesten Datentypzuordnung finden Sie unter Datentypzuordnung für MySQL.
Die neueste Treiberversion v2 unterstützt weitere MySQL-Versionen. Weitere Informationen finden Sie unter Unterstützte Funktionen.
Bewährte Methoden für die empfohlene Version des MySQL-Connectors
In diesem Abschnitt werden bewährte Methoden für die empfohlene Version des MySQL-Connectors vorgestellt.
SSL-Schlüssel kann nicht geladen werden
Symptome: Wenn Sie die empfohlene Version des MySQL-Connectors mit SSL Key als Verbindungseigenschaft verwenden, kann die folgende Fehlermeldung auftreten:
Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----
Ursache: Die empfohlene Version kann das PCKS#8-Format nicht entschlüsseln.
Empfehlung: Konvertieren sie das PEM-Format in PCKS#1.
Unterschiede zwischen der empfohlenen Treiberversion und der Legacytreiberversion
In der folgenden Tabelle sind die Unterschiede der Datentypzuordnung zwischen MySQL mit der empfohlenen Treiberversion und der Legacytreiberversion dargestellt.
MySQL-Datentyp | Zwischendienstdatentyp (unter Verwendung der empfohlenen Treiberversion) | Zwischendienstdatentyp (unter Verwendung der Legacy-Treiberversion) |
---|---|---|
bit(1) | UInt64 | Boolean |
bit(M), M>1 | UInt64 | Byte[] |
bool | Boolean | Int16 |
JSON | String | Byte[] |
Zugehöriger Inhalt
Eine Liste der Datenspeicher, die als Quelles und Senken für die Kopieraktivität unterstützt werden, finden Sie in der Dokumentation für Unterstützte Datenspeicher.