Copiare dati da MySQL tramite Azure Data Factory o Synapse Analytics
SI APPLICA A: Azure Data Factory Azure Synapse Analytics
Suggerimento
Provare Data Factory in Microsoft Fabric, una soluzione di analisi all-in-one per le aziende. Microsoft Fabric copre tutto, dallo spostamento dati al data science, all'analisi in tempo reale, alla business intelligence e alla creazione di report. Vedere le informazioni su come iniziare una nuova prova gratuita!
Questo articolo illustra come usare l'attività di copia nelle pipeline di Azure Data Factory e Synapse Analytics per copiare dati da un database MySQL. Si basa sull'articolo di panoramica dell'attività di copia che presenta una panoramica generale sull'attività di copia.
Nota
Per copiare dati da o nel servizio Database di Azure per MySQL, usare il connettore Database di Azure per MySQL specializzato.
Importante
Il connettore MySQL che usa la versione consigliata del driver offre un supporto nativo migliorato per MySQL. Se lo si usa con la versione del driver legacy, aggiornare la versione del driver prima del 31 ottobre 2024. Per informazioni dettagliate sulla differenza tra la versione legacy e quella consigliata, vedere questa sezione.
Funzionalità supportate
Questo connettore MySQL è supportato per le funzionalità seguenti:
Funzionalità supportate | IR |
---|---|
Attività Copy (origine/-) | 7.3 |
Attività Lookup | 7.3 |
① Azure Integration Runtime ② Runtime di integrazione self-hosted
Per un elenco degli archivi dati supportati come origini/sink dall'attività di copia, vedere la tabella relativa agli archivi dati supportati.
Questo connettore supporta MySQL versione 5.5, 5.6, 5.7, 8.0, 8.1 e 8.2 nella nuova versione consigliata del driver v2 e 5.6, 5.7 e 8.0 per la versione legacy del driver.
Prerequisiti
Se l'archivio dati si trova all'interno di una rete locale, una rete virtuale di Azure o un cloud privato virtuale di Amazon, è necessario configurare un runtime di integrazione self-hosted per connettersi.
Se l'archivio dati è un servizio dati del cloud gestito, è possibile usare Azure Integration Runtime. Se l'accesso è limitato solo agli indirizzi IP approvati nelle regole del firewall, è possibile aggiungere IP di Azure Integration Runtime nell'elenco Consentiti.
È anche possibile usare la funzionalitàruntime di integrazione della rete virtuale gestita in Azure Data Factory per accedere alla rete locale senza installare e configurare un runtime di integrazione self-hosted.
Per altre informazioni sui meccanismi di sicurezza di rete e sulle opzioni supportate da Data Factory, vedere strategie di accesso ai dati.
Il runtime di integrazione offre un driver MySQL predefinito a partire dalla versione 3.7 e non è quindi necessario installare manualmente alcun driver.
Introduzione
Per eseguire l'attività di copia con una pipeline, è possibile usare uno degli strumenti o SDK seguenti:
- Strumento Copia dati
- Il portale di Azure
- .NET SDK
- SDK di Python
- Azure PowerShell
- API REST
- Modello di Azure Resource Manager
Creare un servizio collegato a MySQL usando l'interfaccia utente
Usare la procedura seguente per creare un servizio collegato a MySQL nell'interfaccia utente del portale di Azure.
Passare alla scheda Gestisci nell'area di lavoro di Azure Data Factory o Synapse e selezionare Servizi collegati, quindi fare clic su Nuovo:
Cercare MySQL e selezionare il connettore MySQL.
Configurare i dettagli del servizio, testare la connessione e creare il nuovo servizio collegato.
Dettagli di configurazione del connettore
Le sezioni seguenti riportano informazioni dettagliate sulle proprietà che vengono usate per definire entità di data factory specifiche per il connettore MySQL.
Proprietà del servizio collegato
Se si usa la versione consigliata del driver, per il servizio collegato MySQL sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type deve essere impostata su: MySql | Sì |
driverVersion | Versione del driver quando si seleziona la versione del driver consigliata. Il valore è v2. | Sì |
server | Nome del server MySQL. | Sì |
port | Numero di porta da connettere al server MySQL. | No |
database | Nome del database MySQL. | Sì |
username | Nome utente. | Sì |
password | Password per il nome utente. Contrassegnare questo campo come SecureString per archiviarlo in modo sicuro. In alternativa, fare riferimento a un segreto archiviato in Azure Key Vault. | Sì |
sslMode | Questa opzione specifica se il driver usa la crittografia TLS e verifica la connessione a MySQL. Ad esempio SSLMode=<0/1/2/3/4> .Opzioni: DISABLED (0) / PREFERRED (1) (impostazione predefinita) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) |
Sì |
useSystemTrustStore | Questa opzione specifica se usare o meno un certificato CA dall'archivio di attendibilità di sistema o da un file PEM specificato. Ad esempio UseSystemTrustStore=<0/1> ;Opzioni: Enabled (1) / Disabled (0) (impostazione predefinita) |
No |
connectVia | Il runtime di integrazione da usare per la connessione all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se non specificato, viene usato il runtime di integrazione di Azure predefinito. | No |
Esempio:
{
"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"
}
}
}
Esempio: archiviare la password 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"
}
}
}
Se si usa la versione del driver legacy, sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type deve essere impostata su: MySql | Sì |
connectionString | Specifica le informazioni necessarie per connettersi all'istanza del database di Azure per MySQL. È anche possibile inserire la password in Azure Key Vault ed eseguire lo spostamento forzato dei dati della configurazione password all'esterno della stringa di connessione. Vedere gli esempi seguenti e l'articolo Archiviare le credenziali in Azure Key Vault per altri dettagli. |
Sì |
connectVia | Il runtime di integrazione da usare per la connessione all'archivio dati. Per altre informazioni, vedere la sezione Prerequisiti. Se non specificato, viene usato il runtime di integrazione di Azure predefinito. | No |
Una stringa di connessione tipica è Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>
. Altre proprietà che è possibile impostare per il case:
Proprietà | Descrizione | Richiesto |
---|---|---|
sslMode | Questa opzione specifica se il driver usa la crittografia TLS e verifica la connessione a MySQL. Ad esempio SSLMode=<0/1/2/3/4> .Opzioni: DISABLED (0) / PREFERRED (1) (impostazione predefinita) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) |
Sì |
SSLCert | Percorso completo e nome di un file con estensione pem contenente il certificato SSL usato per dimostrare l'identità del client. Per specificare una chiave privata per crittografare il certificato prima di inviarlo al server, usare la proprietà SSLKey . |
Sì, se si usa la verifica SSL bidirezionale. |
SSLKey | Percorso completo e nome di un file contenente la chiave privata usata per crittografare il certificato lato client durante la verifica SSL bidirezionale. | Sì, se si usa la verifica SSL bidirezionale. |
useSystemTrustStore | Questa opzione specifica se usare o meno un certificato CA dall'archivio di attendibilità di sistema o da un file PEM specificato. Ad esempio UseSystemTrustStore=<0/1> ;Opzioni: Enabled (1) / Disabled (0) (impostazione predefinita) |
No |
Esempio:
{
"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"
}
}
}
Proprietà del set di dati
Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione di set di dati, vedere l'articolo sui set di dati. Questa sezione presenta un elenco delle proprietà supportate dal set di dati di MySQL.
Per copiare dati da MySQL, sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type del set di dati deve essere impostata su MySqlTable | Sì |
tableName | Nome della tabella nel database MySQL. | No (se nell'origine dell'attività è specificato "query") |
Esempio
{
"name": "MySQLDataset",
"properties":
{
"type": "MySqlTable",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<MySQL linked service name>",
"type": "LinkedServiceReference"
}
}
}
Il set di dati tipizzato RelationalTable
è ancora supportato senza modifiche, ma è consigliato l'uso del nuovo per il futuro.
Proprietà dell'attività di copia
Per un elenco completo delle sezioni e delle proprietà disponibili per la definizione delle attività, vedere l'articolo sulle pipeline. Questa sezione presenta un elenco delle proprietà supportate dall'origine di MySQL.
MySQL come origine
Per copiare i dati da MySQL, nella sezione origine dell'attività di copia sono supportate le proprietà seguenti:
Proprietà | Descrizione | Richiesto |
---|---|---|
type | La proprietà type dell'origine dell'attività di copia deve essere impostata su: MySqlSource | Sì |
query | Usare la query SQL personalizzata per leggere i dati. Ad esempio: "SELECT * FROM MyTable" . |
No (se nel set di dati è specificato "tableName") |
Esempio:
"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>"
}
}
}
]
L'origine tipizzata RelationalSource
è ancora supportata senza modifiche, ma è consigliato l'uso della nuova per il futuro.
Mapping del tipo di dati per MySQL
Quando si copiano dati da MySQL, i mapping seguenti vengono usati dai tipi di dati MySQL ai tipi di dati provvisori usati internamente dal servizio. Vedere Mapping dello schema e del tipo di dati per informazioni su come l'attività di copia esegue il mapping dello schema di origine e del tipo di dati al sink.
Tipo di dati di MySQL | Tipo di dati del servizio provvisorio | Tipo di dati del servizio provvisorio (per la versione del driver legacy) |
---|---|---|
bigint |
Int64 |
Int64 |
bigint unsigned |
Decimal |
Decimal |
bit(1) |
UInt64 |
Boolean |
bit(M), M>1 |
UInt64 |
Byte[] |
blob |
Byte[] |
Byte[] |
bool |
Boolean Se TreatTinyAsBoolean=false, viene mappato come SByte . TreatTinyAsBoolean è true per impostazione predefinita |
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 |
Int16 |
tinyint unsigned |
Int16 |
Int16 |
tinytext |
String |
String |
varchar |
String |
String |
year |
Int |
Int |
Proprietà dell'attività Lookup
Per altre informazioni sulle proprietà, vedere Attività Lookup.
Aggiornare la versione del driver di MySQL
Ecco i passaggi che consentono di aggiornare la versione del driver di MySQL:
Nella pagina Modifica servizio collegato selezionare Consigliata in Versione driver e configurare il servizio collegato facendo riferimento alle Proprietà del servizio collegato.
Il mapping dei tipi di dati per il servizio collegato MySQL più recente è diverso da quello per la versione legacy. Per informazioni sul mapping dei tipi di dati più recente, vedere Mapping dei tipi di dati per MySQL.
La versione più recente del driver v2 supporta più versioni di MySQL. Per altre informazioni, vedere Funzionalità supportate.
Differenze tra la versione consigliata e la versione legacy del driver
La tabella seguente illustra le differenze di mapping dei tipi di dati tra MySQL usando la versione consigliata e la versione legacy del driver.
Tipo di dati di MySQL | Tipo di dati del servizio provvisorio (con la versione del driver consigliata) | Tipo di dati del servizio provvisorio (con la versione del driver legacy) |
---|---|---|
bit(1) | UInt64 | Booleano |
bit(M), M>1 | UInt64 | Byte[] |
bool | Booleano | Int16 |
JSON | String | Byte[] |
Contenuto correlato
Per un elenco degli archivi dati supportati come origini e sink dall'attività Copy, vedere Archivi dati supportati.