Partage via


Copier des données de MySQL à l’aide d’Azure Data Factory ou Synapse Analytics

S’APPLIQUE À : Azure Data Factory Azure Synapse Analytics

Conseil

Essayez Data Factory dans Microsoft Fabric, une solution d’analyse tout-en-un pour les entreprises. Microsoft Fabric couvre tous les aspects, du déplacement des données à la science des données, en passant par l’analyse en temps réel, l’aide à la décision et la création de rapports. Découvrez comment démarrer un nouvel essai gratuitement !

Cet article décrit comment utiliser l’activité de copie dans des pipelines Azure Data Factory et Synapse Analytics pour copier des données à partir d’une base de données MySQL. Il s’appuie sur l’article Vue d’ensemble de l’activité de copie.

Notes

Pour copier des données depuis ou vers le service Azure Database pour MySQL, utilisez le connecteur spécialisé Azure Database pour MySQL.

Important

Le connecteur MySQL offre une prise en charge native améliorée de MySQL avec la version recommandée du pilote. Si vous utilisez le connecteur avec la version héritée du pilote, mettez-le à niveau avant le 31 octobre 2024. Consultez cette section pour en savoir plus sur les différences entre la version héritée et la version recommandée.

Fonctionnalités prises en charge

Ce connecteur MySQL est pris en charge pour les fonctionnalités suivantes :

Fonctionnalités prises en charge IR
Activité de copie (source/-) ① ②
Activité de recherche ① ②

① Runtime d’intégration Azure ② Runtime d’intégration auto-hébergé

Pour obtenir la liste des banques de données prises en charge en tant que sources ou récepteurs par l’activité de copie, consultez le tableau Banques de données prises en charge.

Ce connecteur prend en charge les versions 5.5, 5.6, 5.7, 8.0, 8.1 et 8.2 de MySQL sous la nouvelle version de pilote recommandée v2 et les versions 5.6, 5.7 et 8.0 pour la version héritée du pilote.

Prérequis

Si votre magasin de données se trouve dans un réseau local, un réseau virtuel Azure ou un cloud privé virtuel Amazon, vous devez configurer un runtime d’intégration auto-hébergé pour vous y connecter.

Si votre magasin de données est un service de données cloud managé, vous pouvez utiliser Azure Integration Runtime. Si l’accès est limité aux adresses IP qui sont approuvées dans les règles de pare-feu, vous pouvez ajouter les adresses IP Azure Integration Runtime dans la liste d’autorisation.

Vous pouvez également utiliser la fonctionnalité de runtime d’intégration de réseau virtuel managé dans Azure Data Factory pour accéder au réseau local sans installer et configurer un runtime d’intégration auto-hébergé.

Pour plus d’informations sur les mécanismes de sécurité réseau et les options pris en charge par Data Factory, consultez Stratégies d’accès aux données.

Le runtime d’intégration fournit un pilote MySQL intégré à partir de la version 3.7. Ainsi, vous n’avez pas besoin d’installer manuellement un pilote.

Prise en main

Pour effectuer l’activité Copie avec un pipeline, vous pouvez vous servir de l’un des outils ou kits SDK suivants :

Créer un service lié à MySQL à l’aide de l’interface utilisateur

Utilisez les étapes suivantes pour créer un service lié à MySQL dans l’interface utilisateur du portail Azure.

  1. Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse et sélectionnez Services liés, puis cliquez sur Nouveau :

  2. Recherchez MySQL et sélectionnez le connecteur MySQL.

    Sélectionnez le connecteur MySQL.

  3. Configurez les informations du service, testez la connexion et créez le nouveau service lié.

    Configurez un service lié à MySQL.

Informations de configuration des connecteurs

Les sections suivantes fournissent des informations sur les propriétés utilisées pour définir les entités Data Factory spécifiques du connecteur MySQL.

Propriétés du service lié

Si vous utilisez la version de pilote recommandée, les propriétés suivantes sont prises en charge pour le service lié MySQL :

Propriété Description Obligatoire
type La propriété type doit être définie sur : MySql Oui
driverVersion Version du pilote lorsque vous sélectionnez la version recommandée du pilote. La valeur est v2. Oui
server Nom de votre serveur MySQL. Oui
port Numéro de port à connecter au serveur MySQL. Non
database Votre nom de la base de données MySQL. Oui
username Votre nom d’utilisateur. Oui
mot de passe Mot de passe du nom d’utilisateur. Marquez ce champ comme SecureString pour le stocker en toute sécurité. Vous pouvez également référencer un secret stocké dans Azure Key Vault. Oui
sslMode Cette option spécifie si le pilote utilise le chiffrement TLS et la vérification lors de la connexion à MySQL. Par exemple, SSLMode=<0/1/2/3/4>.
Options : DISABLED (0) / PREFERRED (1) (par défaut) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Oui
useSystemTrustStore Cette option indique s’il faut utiliser un certificat d’autorité de certification provenant du magasin de confiance du système ou d’un fichier PEM spécifié. Par exemple UseSystemTrustStore=<0/1> ;
Options : Enabled (1) / Disabled (0) (par défaut)
Non
connectVia Runtime d’intégration à utiliser pour la connexion à la banque de données. Pour plus d’informations, consultez la section Conditions préalables. À défaut de spécification, le runtime d’intégration Azure par défaut est utilisé. Non

Exemple :

{
    "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"
        }
    }
}

Exemple : stockage du mot de passe dans 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"
        }
    }
}

Si vous utilisez la version héritée du pilote, les propriétés suivantes sont prises en charge :

Propriété Description Obligatoire
type La propriété type doit être définie sur : MySql Oui
connectionString Spécifiez les informations nécessaires pour vous connecter à l’instance d’Azure Database pour MySQL.
Vous pouvez également définir un mot de passe dans Azure Key Vault et extraire la configuration password de la chaîne de connexion. Pour plus d’informations, reportez-vous aux exemples suivants et à l’article Stocker des informations d’identification dans Azure Key Vault.
Oui
connectVia Runtime d’intégration à utiliser pour la connexion à la banque de données. Pour plus d’informations, consultez la section Conditions préalables. À défaut de spécification, le runtime d’intégration Azure par défaut est utilisé. Non

Voici un exemple de chaîne de connexion typique : Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>. Selon votre cas de figure, vous pouvez définir d’autres propriétés :

Propriété Description Obligatoire
sslMode Cette option spécifie si le pilote utilise le chiffrement TLS et la vérification lors de la connexion à MySQL. Par exemple, SSLMode=<0/1/2/3/4>.
Options : DISABLED (0) / PREFERRED (1) (par défaut) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Oui
SSLCert Chemin d’accès complet et nom d’un fichier. pem contenant le certificat SSL utilisé pour prouver l’identité du client.
Pour spécifier une clé privée à des fins de chiffrement de ce certificat avant de l’envoyer au serveur, utilisez la propriété SSLKey.
Oui, si vous utilisez la vérification SSL bidirectionnelle.
SSLKey Chemin d’accès complet et nom d’un fichier contenant la clé privée utilisée pour chiffrer le certificat côté client lors de la vérification SSL bidirectionnelle. Oui, si vous utilisez la vérification SSL bidirectionnelle.
useSystemTrustStore Cette option indique s’il faut utiliser un certificat d’autorité de certification provenant du magasin de confiance du système ou d’un fichier PEM spécifié. Par exemple UseSystemTrustStore=<0/1> ;
Options : Enabled (1) / Disabled (0) (par défaut)
Non

Exemple :

{
    "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"
        }
    }
}

Propriétés du jeu de données

Pour obtenir la liste complète des sections et propriétés disponibles pour la définition de jeux de données, consultez l’article sur les jeux de données. Cette section fournit la liste des propriétés prises en charge par le jeu de données MySQL.

Pour copier des données à partir de MySQL, les propriétés suivantes sont prises en charge :

Propriété Description Obligatoire
type La propriété type du jeu de données doit être définie sur : MySqlTable Oui
tableName Nom de la table dans la base de données MySQL. Non (si « query » dans la source de l’activité est spécifié)

Exemple

{
    "name": "MySQLDataset",
    "properties":
    {
        "type": "MySqlTable",
        "typeProperties": {},
        "schema": [],
        "linkedServiceName": {
            "referenceName": "<MySQL linked service name>",
            "type": "LinkedServiceReference"
        }
    }
}

Si vous utilisiez un dataset typé RelationalTable, il reste pris en charge tel quel, mais nous vous suggérons d’utiliser désormais le nouveau dataset.

Propriétés de l’activité de copie

Pour obtenir la liste complète des sections et des propriétés disponibles pour la définition des activités, consultez l’article Pipelines. Cette section fournit la liste des propriétés prises en charge par la source MySQL.

MySQL en tant que source

Pour copier des données à partir de MySQL, les propriétés prises en charge dans la section source de l'activité de copie sont les suivantes :

Propriété Description Obligatoire
type La propriété type de la source d’activité de copie doit être définie sur : MySqlSource Oui
query Utiliser la requête SQL personnalisée pour lire les données. Par exemple : "SELECT * FROM MyTable". Non (si « tableName » est spécifié dans dataset)

Exemple :

"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>"
            }
        }
    }
]

Si vous utilisiez une source de données typée RelationalSource, elle reste prise en charge telle quelle, mais nous vous suggérons d’utiliser désormais la nouvelle source.

Mappage de type de données pour MySQL

Lors de la copie de données de MySQL, les mappages suivants sont utilisés entre les types de données MySQL et les types de données intermédiaires utilisés par le service en interne. Pour découvrir comment l’activité de copie mappe le schéma et le type de données la source au récepteur, voir Mappages de schémas et de types de données.

Type de données MySQL Type de données de service intermédiaire Type de données de service intermédiaire (pour la version héritée du pilote)
bigint Int64 Int64
bigint unsigned Decimal Decimal
bit(1) UInt64 Boolean
bit(M), M>1 UInt64 Byte[]
blob Byte[] Byte[]
bool Boolean
(Si TreatTinyAsBoolean=false, il est mappé en tant que SByte. TreatTinyAsBoolean a la valeur True par défaut)
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) est mappé vers Boolean)
Int16
tinyint unsigned Int16 Int16
tinytext String String
varchar String String
year Int Int

Propriétés de l’activité Lookup

Pour en savoir plus sur les propriétés, consultez Activité Lookup.

Mettre à niveau le connecteur MySQL

Voici les étapes qui vous aident à mettre à niveau votre connecteur MySQL :

  1. Dans la page Modifier le service lié, sélectionnez Recommandé sous Version du pilote et configurez le service lié en vous référant aux Propriétés du service lié.

  2. Le mappage de type de données pour le service lié MySQL le plus récent est différent de celui de la version héritée. Pour découvrir le mappage de type de données le plus récent, consultez Mappage de type de données pour MySQL.

  3. La dernière version du pilote v2 prend en charge d’autres versions de MySQL. Pour plus d’informations, consultez Fonctionnalités prises en charge.

Cette section présente les meilleures pratiques pour la version recommandée du connecteur MySQL.

Nous ne pouvons pas charger la clé SSL

  • Symptômes : si vous utilisez la version recommandée du connecteur MySQL avec une clé SSL comme propriété de connexion, vous pouvez rencontrer le message d’erreur suivant : Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----

  • Cause : la version recommandée ne peut pas déchiffrer le format PCKS#8.

  • Recommandation : convertissez le format PEM en PCKS#1.

Le tableau ci-dessous présente les différences en matière de mappage des types de données de MySQL selon qu’il utilise la version recommandée du pilote ou la version héritée.

Type de données MySQL Type de données de service intermédiaire (au moyen de la version recommandée du pilote) Type de données de service intermédiaire (pour la version héritée du pilote)
bit(1) UInt64 Boolean
bit(M), M>1 UInt64 Byte[]
bool Boolean Int16
JSON Chaîne Byte[]

Pour obtenir une liste des magasins de données pris en charge comme sources et récepteurs par l’activité de copie, consultez la section sur les magasins de données pris en charge.