使用 Azure 数据工厂从 MySQL 复制数据

适用于: Azure 数据工厂

本文概述了如何使用 Azure 数据工厂中的复制活动从 MySQL 数据库复制数据。 它是基于概述复制活动总体的复制活动概述一文。

备注

若要从或向 Azure Database for MySQL 服务复制数据,请使用专用的 Azure Database for MySQL 连接器

支持的功能

以下活动支持此 MySQL 连接器:

可以将数据从 MySQL 数据库复制到任何支持的接收器数据存储。 有关复制活动支持作为源/接收器的数据存储列表,请参阅支持的数据存储表。

具体而言,此 MySQL 连接器支持 MySQL 版本 5.6、5.7 和 8.0。

先决条件

如果数据存储位于本地网络、Azure 虚拟网络或 Amazon Virtual Private Cloud 内部,则需要配置自承载集成运行时才能连接到该数据存储。

如果数据存储是托管的云数据服务,则可以使用 Azure Integration Runtime。 如果访问仅限于防火墙规则中批准的 IP,则可以将 Azure Integration Runtime IP 添加到允许列表。

还可以使用 Azure 数据工厂中的托管虚拟网络集成运行时功能访问本地网络,而无需安装和配置自承载集成运行时。

要详细了解网络安全机制和数据工厂支持的选项,请参阅数据访问策略

集成运行时提供内置 MySQL 驱动程序(从版本 3.7 开始),因此无需手动安装任何驱动程序。

入门

若要使用管道执行复制活动,可以使用以下工具或 SDK 之一:

使用 UI 创建到 MySQL 的链接服务

使用以下步骤在 Azure 门户 UI 中创建一个到 MySQL 的链接服务。

  1. 浏览到 Azure 数据工厂中的“管理”选项卡并选择“链接服务”,然后单击“新建”: 使用 Azure 数据工厂 UI 创建新的链接服务。

  2. 搜索 MySQL,然后选择 MySQL 连接器。

    选择 MySQL 连接器。

  3. 配置服务详细信息、测试连接并创建新的链接服务。

    配置到 MySQL 的链接服务。

连接器配置详细信息

对于特定于 MySQL 连接器的数据工厂实体,以下部分提供有关用于定义这些实体的属性的详细信息。

链接服务属性

MySQL 链接的服务支持以下属性:

属性 说明 必需
type type 属性必须设置为:MySql
connectionString 指定连接到 Azure Database for MySQL 实例所需的连接信息。
还可以将密码放在 Azure 密钥保管库中,并从连接字符串中拉取 password 配置。 有关更多详细信息,请参阅以下示例和在 Azure 密钥保管库中存储凭据一文。
connectVia 用于连接到数据存储的集成运行时。 在先决条件部分了解更多信息。 如果未指定,则使用默认 Azure Integration Runtime。

典型的连接字符串为 Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>。 你可以根据自己的情况设置更多属性:

属性 说明 选项 必须
SSLMode 此选项指定驱动程序在连接到 MySQL 时是否使用 TLS 加密和验证。 例如 SSLMode=<0/1/2/3/4> DISABLED (0) / PREFERRED (1) (Default) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
SSLCert 包含用于证明客户端身份的 SSL 证书的 .pem 文件的完整路径和名称。
若要在将此证书发送到服务器之前,指定私钥来加密此证书,请使用 SSLKey 属性。
是(如果使用双向 SSL 验证)。
SSLKey 包含私钥(用于在双向 SSL 验证过程中对客户端证书进行加密)的文件的完整路径和名称。 是(如果使用双向 SSL 验证)。
UseSystemTrustStore 此选项指定是使用系统信任存储中的 CA 证书还是使用指定 PEM 文件中的 CA 证书。 例如 UseSystemTrustStore=<0/1>; Enabled (1) / Disabled (0) (Default)

示例:

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

示例:在 Azure 密钥保管库中存储密码

{
    "name": "MySQLLinkedService",
    "properties": {
        "type": "MySql",
        "typeProperties": {
            "connectionString": "Server=<server>;Port=<port>;Database=<database>;UID=<username>;",
            "password": { 
                "type": "AzureKeyVaultSecret", 
                "store": { 
                    "referenceName": "<Azure Key Vault linked service name>", 
                    "type": "LinkedServiceReference" 
                }, 
                "secretName": "<secretName>" 
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

如果使用的是具有以下有效负载的 MySQL 链接服务,它仍然按原样受支持,但建议使用新的版本。

先前的有效负载:

{
    "name": "MySQLLinkedService",
    "properties": {
        "type": "MySql",
        "typeProperties": {
            "server": "<server>",
            "database": "<database>",
            "username": "<username>",
            "password": {
                "type": "SecureString",
                "value": "<password>"
            }
        },
        "connectVia": {
            "referenceName": "<name of Integration Runtime>",
            "type": "IntegrationRuntimeReference"
        }
    }
}

数据集属性

有关可用于定义数据集的各部分和属性的完整列表,请参阅数据集一文。 本部分提供 MySQL 数据集支持的属性列表。

若要从 MySQL 复制数据,支持以下属性:

属性 说明 必需
type 数据集的 type 属性必须设置为:MySqlTable
tableName MySQL 数据库中的表名。 否(如果指定了活动源中的“query”)

示例

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

如果使用 RelationalTable 类型数据集,该数据集仍按原样受支持,但我们建议今后使用新数据集。

复制活动属性

有关可用于定义活动的各部分和属性的完整列表,请参阅管道一文。 本部分提供 MySQL 源支持的属性列表。

以 MySQL 作为源

从 MySQL 复制数据时,复制活动的 source 节支持以下属性:

属性 说明 必需
type 复制活动 source 的 type 属性必须设置为:MySqlSource
query 使用自定义 SQL 查询读取数据。 例如:"SELECT * FROM MyTable" 否(如果指定了数据集中的“tableName”)

示例:

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

如果使用 RelationalSource 类型源,该源仍按原样受支持,但我们建议今后使用新源。

MySQL 的数据类型映射

从 MySQL 复制数据时,将使用以下映射从 MySQL 数据类型映射到服务内部使用的临时数据类型。 若要了解复制活动如何将源架构和数据类型映射到接收器,请参阅架构和数据类型映射

MySQL 数据类型 临时服务数据类型
bigint Int64
bigint unsigned Decimal
bit(1) Boolean
bit(M), M>1 Byte[]
blob Byte[]
bool Int16
char String
date Datetime
datetime Datetime
decimal Decimal, String
double Double
double precision Double
enum String
float Single
int Int32
int unsigned Int64
integer Int32
integer unsigned Int64
long varbinary Byte[]
long varchar String
longblob Byte[]
longtext String
mediumblob Byte[]
mediumint Int32
mediumint unsigned Int64
mediumtext String
numeric Decimal
real Double
set String
smallint Int16
smallint unsigned Int32
text String
time TimeSpan
timestamp Datetime
tinyblob Byte[]
tinyint Int16
tinyint unsigned Int16
tinytext String
varchar String
year Int

Lookup 活动属性

若要了解有关属性的详细信息,请查看 Lookup 活动

后续步骤

有关复制活动支持作为源和接收器的数据存储的列表,请参阅支持的数据存储