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.

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:

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.

  1. 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:

  2. Busque MySQL y seleccione el conector de MySQL.

    Seleccione el conector de MySQL.

  3. Configure los detalles del servicio, pruebe la conexión y cree el nuevo servicio vinculado.

    Configuración de un servicio vinculado en MySQL.

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
driverVersion Versión del controlador al seleccionar la versión recomendada del controlador. El valor es v2.
server Nombre del servidor de MySQL.
port Número de puerto para conectarse al servidor de MySQL. No
database Nombre de la base de datos de MySQL.
username Nombre del usuario.
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.
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)
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
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.
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)
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
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
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 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 de la versión del controlador de MySQL

Estos son los pasos que le ayudarán a actualizar la versión del controlador de MySQL:

  1. 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.

  2. 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.

  3. La versión más reciente del controlador v2 admite más versiones de MySQL. Para más información, consulte Funcionalidades admitidas.

En la tabla siguiente, se muestran las diferencias de asignación de tipos de datos entre el conector MySQL mediante la versión del controlador recomendada y el uso de la versión del 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[]

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.