Copia de datos de MySQL con Azure Data Factory o Synapse Analytics
SE APLICA A: Azure Data Factory Azure Synapse Analytics
Sugerencia
Pruebe Data Factory en Microsoft Fabric, una solución de análisis todo en uno para empresas. Microsoft Fabric abarca todo, desde el movimiento de datos hasta la ciencia de datos, el análisis en tiempo real, la inteligencia empresarial y los informes. Obtenga información sobre cómo iniciar una nueva evaluación gratuita.
En este artículo se resume el uso de la actividad de copia en canalizaciones de Azure Data Factory y Synapse Analytics para copiar datos de una base de datos MySQL. El documento se basa en el artículo de introducción a la actividad de copia que describe información general de la actividad de copia.
Nota
Para copiar datos en el servicio Azure Database for MySQL, o desde este servicio, use el conector específico para Azure Database for MySQL.
Importante
El conector mySQL que usa la versión recomendada del controlador proporciona compatibilidad nativa mejorada con MySQL. Si usa el conector con la versión del controlador heredado, actualizarlo antes del 31 de octubre de 2024. Consulte esta sección para más información sobre la diferencia entre la versión heredada y la versión más reciente.
Funcionalidades admitidas
Este conector MySQL es compatible con las actividades siguientes:
Funcionalidades admitidas | IR |
---|---|
Actividad de copia (origen/-) | ① ② |
Actividad de búsqueda | ① ② |
① Azure Integration Runtime ② Entorno de ejecución de integración autohospedado
Consulte la tabla de almacenes de datos compatibles para ver una lista de almacenes de datos que la actividad de copia admite como orígenes o receptores.
Este conector admite MySQL versión 5.5, 5.6, 5.7, 8.0, 8.1 y 8.2 en la versión recomendada del nuevo controlador v2 y de 5.6, 5.7 a 8.0 para la versión heredada del controlador.
Requisitos previos
Si el almacén de datos se encuentra en una red local, una red virtual de Azure o una nube privada virtual de Amazon, debe configurar un entorno de ejecución de integración autohospedado para conectarse a él.
Si el almacén de datos es un servicio de datos en la nube administrado, puede usar Azure Integration Runtime. Si el acceso está restringido a las direcciones IP que están aprobadas en las reglas de firewall, puede agregar direcciones IP de Azure Integration Runtime a la lista de permitidos.
También puede usar la característica del entorno de ejecución de integración de red virtual administrada de Azure Data Factory para acceder a la red local sin instalar ni configurar un entorno de ejecución de integración autohospedado.
Consulte Estrategias de acceso a datos para más información sobre los mecanismos de seguridad de red y las opciones que admite Data Factory.
El entorno Integration Runtime proporciona un controlador MySQL integrado a partir de la versión 3.7, por lo tanto, no es necesario que instale uno manualmente.
Introducción
Para realizar la actividad de copia con una canalización, puede usar una de los siguientes herramientas o SDK:
- La herramienta Copiar datos
- Azure Portal
- El SDK de .NET
- El SDK de Python
- Azure PowerShell
- API REST
- La plantilla de Azure Resource Manager
Creación de un servicio vinculado a MySQL mediante la interfaz de usuario
Siga estos pasos para crear un servicio vinculado a MySQL en la interfaz de usuario de Azure Portal.
Vaya a la pestaña Administrar del área de trabajo de Azure Data Factory o Synapse y seleccione Servicios vinculados; luego haga clic en Nuevo:
Busque MySQL y seleccione el conector de MySQL.
Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.
Detalles de configuración del conector
Las secciones siguientes proporcionan detalles sobre las propiedades que se usan para definir entidades de Data Factory específicas del conector MySQL.
Propiedades del servicio vinculado
Si usa la versión del controlador recomendada, se admiten las siguientes propiedades para el servicio vinculado de MySQL:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en: MySQL | Sí |
driverVersion | Versión del controlador al seleccionar la versión recomendada del controlador. El valor es v2. | Sí |
server | Nombre del servidor de MySQL. | Sí |
port | Número de puerto para conectarse al servidor de MySQL. | No |
database | Nombre de la base de datos de MySQL. | Sí |
username | Nombre del usuario. | Sí |
password | Contraseña del nombre de usuario. Marque este campo como SecureString para almacenarlo de forma segura. O bien puede hacer referencia a un secreto almacenado en Azure Key Vault. | Sí |
sslMode | Esta opción especifica si el controlador utiliza cifrado TLS y comprobación durante la conexión a MySQL. Por ejemplo, SSLMode=<0/1/2/3/4> .Opciones: DISABLED (0) / PREFERRED (1) (valor predeterminado) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) |
Sí |
useSystemTrustStore | Esta opción concreta si se usa un certificado de entidad de certificación del almacén de confianza del sistema o de un archivo PEM especificado. Por ejemplo, UseSystemTrustStore=<0/1> ;Opciones: Enabled (1) / Disabled (0) (valor predeterminado) |
No |
connectVia | El entorno Integration Runtime que se usará para conectarse al almacén de datos. Obtenga más información en la sección Requisitos previos. Si no se especifica, se usará Azure Integration Runtime. | No |
Ejemplo:
{
"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"
}
}
}
Ejemplo: Almacenamiento de la contraseña en 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 usa la versión del controlador heredado, se admiten las siguientes propiedades:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type debe establecerse en: MySQL | Sí |
connectionString | Especifique la información necesaria para conectarse a la instancia de Azure Database for MySQL. También puede colocar la contraseña en Azure Key Vault y extraer la configuración de password de la cadena de conexión. Consulte los siguientes ejemplos y el artículo Almacenamiento de credenciales en Azure Key Vault con información detallada. |
Sí |
connectVia | El entorno Integration Runtime que se usará para conectarse al almacén de datos. Obtenga más información en la sección Requisitos previos. Si no se especifica, se usará Azure Integration Runtime. | No |
Una cadena de conexión típica es Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>
. Más propiedades que puede establecer para su caso:
Propiedad | Descripción | Obligatorio |
---|---|---|
sslMode | Esta opción especifica si el controlador utiliza cifrado TLS y comprobación durante la conexión a MySQL. Por ejemplo, SSLMode=<0/1/2/3/4> .Opciones: DISABLED (0) / PREFERRED (1) (valor predeterminado) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) |
Sí |
SSLCert | Ruta de acceso completa y nombre de un archivo .pem que contiene el certificado SSL usado para verificar la identidad del cliente. Para especificar una clave privada para el cifrado de este certificado antes de enviarlo al servidor, use la propiedad SSLKey . |
Sí, si se usa la comprobación SSL bidireccional. |
SSLKey | Ruta de acceso completa y nombre de un archivo que contiene la clave privada usada para cifrar el certificado del lado cliente durante la comprobación de SSL bidireccional. | Sí, si se usa la comprobación SSL bidireccional. |
useSystemTrustStore | Esta opción concreta si se usa un certificado de entidad de certificación del almacén de confianza del sistema o de un archivo PEM especificado. Por ejemplo, UseSystemTrustStore=<0/1> ;Opciones: Enabled (1) / Disabled (0) (valor predeterminado) |
No |
Ejemplo:
{
"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"
}
}
}
Propiedades del conjunto de datos
Si desea ver una lista completa de las secciones y propiedades disponibles para definir conjuntos de datos, consulte el artículo sobre conjuntos de datos. En esta sección se proporciona una lista de las propiedades que admite el conjunto de datos de MySQL.
Para copiar datos de MySQL, se admiten las propiedades siguientes:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del conjunto de datos debe establecerse en: MySqlTable | Sí |
tableName | Nombre de la tabla de la base de datos MySQL. | No (si se especifica "query" en el origen de la actividad) |
Ejemplo
{
"name": "MySQLDataset",
"properties":
{
"type": "MySqlTable",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<MySQL linked service name>",
"type": "LinkedServiceReference"
}
}
}
Si estaba usando un conjunto de datos de tipo RelationalTable
, todavía se admite tal cual, aunque se aconseja usar el nuevo en el futuro.
Propiedades de la actividad de copia
Si desea ver una lista completa de las secciones y propiedades disponibles para definir actividades, consulte el artículo sobre canalizaciones. En esta sección se proporciona una lista de las propiedades que admite el origen MySQL.
MySQL como origen
Para copiar datos desde MySQL, en la sección source de la actividad de copia se admiten las propiedades siguientes:
Propiedad | Descripción | Obligatorio |
---|---|---|
type | La propiedad type del origen de la actividad de copia debe establecerse en: MySqlSource | Sí |
Query | Use la consulta SQL personalizada para leer los datos. Por ejemplo: "SELECT * FROM MyTable" . |
No (si se especifica "tableName" en el conjunto de datos) |
Ejemplo:
"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 estaba usando un origen de tipo RelationalSource
, todavía se admite tal cual, aunque se aconseja usar el nuevo en el futuro.
Asignación de tipos de datos de MySQL
Al copiar datos desde MySQL, se utilizan las siguientes asignaciones de tipos de datos de MySQL a los tipos de datos provisionales usados internamente por el servicio. Consulte el artículo sobre asignaciones de tipos de datos y esquema para información sobre cómo la actividad de copia asigna el tipo de datos y el esquema de origen al receptor.
Tipo de datos de MySQL | Tipo de datos de servicio provisional | Tipo de datos de servicio provisional (para la versión del controlador heredado) |
---|---|---|
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, se asigna como SByte . TreatTinyAsBoolean es true de forma predeterminada) |
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) se asigna a Boolean ) |
Int16 |
tinyint unsigned |
Int16 |
Int16 |
tinytext |
String |
String |
varchar |
String |
String |
year |
Int |
Int |
Propiedades de la actividad de búsqueda
Para obtener información detallada sobre las propiedades, consulte Actividad de búsqueda.
Actualización del conector MySQL
Estos son los pasos que le ayudarán a actualizar el conector MySQL:
En la página Editar servicio vinculado, seleccione Recomendado en Versión del controlador y configure el servicio vinculado haciendo referencia a las Propiedades del servicio vinculado.
La asignación de tipos de datos para el servicio vinculado de MySQL más reciente es diferente de la asignación de la versión heredada. Para obtener información sobre la asignación de tipos de datos más reciente, consulte Asignación de tipos de datos para MySQL.
La versión más reciente del controlador v2 admite más versiones de MySQL. Para más información, consulte Funcionalidades admitidas.
Procedimientos recomendados para la versión recomendada del conector MySQL
En esta sección se presentan los procedimientos recomendados para la versión recomendada del conector MySQL.
No se puede cargar la clave SSL
Síntomas: si usa la versión recomendada del conector MySQL con la clave SSL como una propiedad de conexión, puede aparecer el siguiente mensaje de error:
Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----
Causa: la versión recomendada no puede descifrar el formato PCKS#8.
Recomendación: convierta el formato PEM a PCKS#1.
Diferencias entre la versión recomendada y el controlador heredado
En la tabla siguiente se muestran las diferencias de asignación de tipos de datos entre MySQL mediante la versión recomendada y el controlador heredado.
Tipo de datos de MySQL | Tipo de datos de servicio provisional (con la versión recomendada del controlador) | Tipo de datos de servicio provisional (con la versión del controlador heredado) |
---|---|---|
bit(1) | UInt64 | Booleano |
bit(M), M>1 | UInt64 | Byte[] |
bool | Booleano | Int16 |
JSON | Cadena | Byte[] |
Contenido relacionado
Para obtener una lista de almacenes de datos que la actividad de copia admite como orígenes y receptores, vea Almacenes de datos que se admiten.