Note
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de changer d’annuaire.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de changer d’annuaire.
S’APPLIQUE À :
Azure Data Factory
Azure Synapse Analytics
Tip
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, la business intelligence et le reporting. 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.
Note
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 version 1.0 est à l’étape de suppression. Il vous est recommandé de mettre à niveau le connecteur MySQL de la version 1.0 à la version 2.0.
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/-) | (1) (2) |
| Activité de recherche | (1) (2) |
① 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 MySQL version 5.5, 5.6, 5.7, 8.0, 8.1 et 8.2 sous le connecteur MySQL version 2.0 et 5.6, 5.7 et 8.0 pour la version 1.0.
Prerequisites
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.
Mise en route
Pour effectuer l’activité de copie avec un pipeline, vous pouvez utiliser l’un des outils ou kits sdk suivants :
- Outil Copier des données
- portail Azure
- Kit de développement logiciel (SDK) .NET
- Kit de développement logiciel (SDK) Python
- Azure PowerShell
- REST API
- Modèle Azure Resource Manager
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.
Accédez à l’onglet Gérer dans votre espace de travail Azure Data Factory ou Synapse, sélectionnez Services liés, puis cliquez sur Nouveau :
Recherchez MySQL et sélectionnez le connecteur MySQL.
Configurez les informations du service, testez la connexion et créez le nouveau service lié.
Détails de configuration du connecteur
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 2.0, les propriétés suivantes sont prises en charge pour le service lié MySQL :
| Property | Description | Required |
|---|---|---|
| type | La propriété type doit être définie sur MySql | Yes |
| driverVersion | Version du pilote lorsque vous sélectionnez la version 2.0. La valeur est v2. | Yes |
| server | Nom de votre serveur MySQL. | Yes |
| port | Numéro de port à connecter au serveur MySQL. | No |
| database | Votre nom de la base de données MySQL. | Yes |
| username | Votre nom d’utilisateur. | Yes |
| password | 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. | Yes |
| 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) |
Yes |
| 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) |
No |
| 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é. | No |
| Propriétés de connexion supplémentaires | ||
| allowZeroDateTime | La spécification de cette valeur de propriété sur true permet de récupérer la valeur 0000-00-00 de date spéciale « zéro » de la base de données. Si la valeur est définie sur false (valeur par défaut), les colonnes de date sont retournées en tant que valeurs DateHeure, ce qui signifie que 0000-00-00 ne peut pas être récupéré. MySQL vous permet de stocker une valeur « zéro » de 0000-00-00 sous la forme d’une « date factice ». Dans certains cas, cette fonctionnalité est plus pratique que l’utilisation de valeurs nulles et utilise moins de données et d’espace d’index. Pour interdire 0000-00-00 dans mySQL, activez le mode NO_ZERO_DATE. Pour plus d’informations, consultez cet article. |
No |
| connectionTimeout | Durée d’attente (en secondes) d’une connexion au serveur avant l’arrêt de la tentative, et la génération d’une erreur. | No |
| convertZeroDateTime | Définissez la valeur sur true pour renvoyer DateTime.MinValue pour les colonnes Date ou DateHeure qui ont des valeurs non autorisées. |
No |
| guidFormat | Détermine le type de colonne (le cas échéant) qui doit être lu en tant que GUID. Accédez à cet article pour obtenir la description de chaque type de colonne en recherchant cette propriété. La version 2.0 traite Char(36) comme type GUID par défaut pour de meilleures performances. Le connecteur traite les champs Char(36) en tant que GUID pour faciliter la gestion des bases de données. Ce traitement simplifie les opérations telles que l’insertion, la mise à jour et la récupération des valeurs de GUID, en s’assurant qu’elles sont gérées de manière cohérente en tant qu’objets GUID dans le code de l’application au lieu de chaînes simples. Ce comportement est particulièrement utile dans les scénarios où les GUID sont utilisés comme clés primaires ou identificateurs uniques et offre de meilleures performances. Si vous n’avez pas besoin de ce paramètre par défaut, vous pouvez configurer guidFormat=none dans la propriété de connexion. |
No |
| sslCert | Le chemin d’accès au fichier de certificat SSL du client au format PEM. SslKey doit également être spécifié. | No |
| sslKey | Le chemin d’accès à la clé privée SSL du client au format PEM. SslCert doit également être spécifié. | No |
| treatTinyAsBoolean | Lorsque la valeur est vrai, les valeurs tinyint(1) sont retournées en tant que booléen. La définition de cette propriété sur false entraîne le renvoi de tinyint(1) en tant que SByte/Byte. La version 2.0 traite tinyint(1) comme type booléen par défaut. Pour plus d’informations, consultez cet article. Pour permettre au connecteur de retourner un tiny en tant que numérique, définissez treatTinyAsBoolean=false dans les propriétés de connexion. |
No |
Example:
{
"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 1.0, les propriétés suivantes sont prises en charge :
| Property | Description | Required |
|---|---|---|
| type | La propriété type doit être définie sur MySql | Yes |
| 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. |
Yes |
| 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é. | No |
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 :
| Property | Description | Required |
|---|---|---|
| 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) |
Yes |
| 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) |
No |
Example:
{
"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 :
| Property | Description | Required |
|---|---|---|
| type | La propriété type du jeu de données doit être définie sur : MySqlTable | Yes |
| tableName | Nom de la table dans la base de données MySQL. | Non (si « query » dans la source de l’activité est spécifié) |
Example
{
"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 :
| Property | Description | Required |
|---|---|---|
| type | La propriété type de la source de l’activité Copy doit être définie sur MySqlSource. | Yes |
| 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) |
Example:
"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 (pour la version 2.0) | Type de données de service intermédiaire (pour la version 1.0) |
|---|---|---|
| BIGINT | Int64 | Int64 |
| BIGINT NON SIGNÉ | UInt64 | Decimal |
| BIT(1) | UInt64 | Boolean |
| BIT(M), M>1 | UInt64 | Byte[] |
| BLOB | Byte[] | Byte[] |
| BOOL | Booléen (Si TreatTinyAsBoolean=false, il est mappé en tant que SByte. TreatTinyAsBoolean a la valeur true par défaut) |
Int16 |
| CHAR | String | String |
| DATE | Date et heure | Date et heure |
| DateHeure | Date et heure | Date et heure |
| DECIMAL | Decimal | Décimal, chaîne |
| DOUBLE | Double | Double |
| DOUBLE PRÉCISION | Double | Double |
| ENUM | String | String |
| FLOAT | Célibataire | Célibataire |
| INT | Int32 | Int32 |
| INT NON SIGNÉ | Int64 | Int64 |
| INTEGER | Int32 | Int32 |
| ENTIER NON SIGNÉ | UInt32 | Int64 |
| JSON | String | Byte[] |
| LONG VARBINARY | Byte[] | Byte[] |
| LONG VARCHAR | String | String |
| LONGBLOB | Byte[] | Byte[] |
| LONGTEXT | String | String |
| MEDIUMBLOB | Byte[] | Byte[] |
| MEDIUMINT | Int32 | Int32 |
| MEDIUMINT UNSIGNED | UInt32 | Int64 |
| MEDIUMTEXT | String | String |
| NUMÉRIQUE | Decimal | Decimal |
| RÉEL | Double | Double |
| SET | String | String |
| SMALLINT | Int16 | Int16 |
| SMALLINT NON SIGNÉ | UInt16 | Int32 |
| TEXTE | String | String |
| TIME | TimeSpan | TimeSpan |
| TIMESTAMP | Date et heure | Date et heure |
| TINYBLOB | Byte[] | Byte[] |
| TINYINT | SByte | Int16 |
| TINYINT non signé | 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 :
Dans la page Modifier le service lié, sélectionnez 2.0 sous version et configurez le service lié en faisant référence à propriétés du service lié.
Le mappage de type de données pour la version 2.0 est différent de celui de la version 1.0. Pour découvrir le mappage de type de données version 2.0, consultez mappage de type de données pour MySQL.
La version 2.0 prend en charge d’autres versions de MySQL. Pour plus d’informations, consultez Fonctionnalités prises en charge.
Bonnes pratiques pour le connecteur MySQL version 2.0
Cette section présente les meilleures pratiques pour le connecteur MySQL version 2.0.
Nous ne pouvons pas charger la clé SSL
Symptômes: si vous utilisez le connecteur MySQL version 2.0 avec la 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 2.0 ne peut pas déchiffrer le format PCKS#8.
Recommandation : convertissez le format PEM en PCKS#1.
Différences entre MySQL version 2.0 et version 1.0
Le tableau ci-dessous présente les différences de mappage de types de données entre MySQL à l’aide de la version 2.0 et de la version 1.0.
| Type de données MySQL | Type de données de service intermédiaire (à l’aide de la version 2.0) | Type de données de service intermédiaire (à l’aide de la version 1.0) |
|---|---|---|
| BIGINT NON SIGNÉ | UInt64 | Decimal |
| BIT(1) | UInt64 | Boolean |
| BIT(M), M>1 | UInt64 | Byte[] |
| BOOL | Boolean | Int16 |
| DECIMAL | Decimal | Décimal, chaîne |
| ENTIER NON SIGNÉ | UInt32 | Int64 |
| JSON | String | Byte[] |
| MEDIUMINT UNSIGNED | UInt32 | Int64 |
| SMALLINT NON SIGNÉ | UInt16 | Int32 |
| TINYINT | SByte | Int16 |
Contenu connexe
Consultez les banques de données prises en charge pour obtenir la liste des banques de données prises en charge en tant que sources et récepteurs par l’activité de copie.