共用方式為


使用 Azure Data Factory 或 Synapse Analytics 從 MySQL 複製資料

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

本文概述如何使用 Azure Data Factory 和 Synapse Analytics 管線中的複製活動,從 MySQL 資料庫複製資料。 本文是根據複製活動概觀一文,該文提供複製活動的一般概觀。

注意

若要對適用於 MySQL 的 Azure 資料庫 服務來回複製資料,請使用特製化的適用於 MySQL 的 Azure 資料庫連接器

重要

使用建議驅動程式版本的 MySQL 連接器提供改良的原生 MySQL 支援。 如果您使用連接器搭配舊版驅動程式,請在 2024 年 10 月 31 日之前升級。 如需舊版與建議版本之間差異的詳細資料,請參閱本節

支援的功能

此 MySQL 連接器支援下列功能:

支援的功能 IR
複製活動 (來源/-) (1) (2)
查閱活動 (1) (2)

① Azure 整合執行階段 ② 自我裝載整合執行階段

如需複製活動所支援作為來源/接收器的資料存放區清單,請參閱支援的資料存放區表格。

在建議的新驅動程式版本 v2 下,此連接器支援 MySQL 版本 5.5、5.6、5.7、8.0、8.1 和 8.2;在舊版驅動程式版本下,支援版本 5.6、5.7 和 8.0。

必要條件

如果您的資料存放區位於內部部署網路、Azure 虛擬網路或 Amazon 虛擬私人雲端中,則必須設定自我裝載整合執行階段以與其連線。

如果您的資料存放區是受控雲端資料服務,則可使用 Azure Integration Runtime。 如果只能存取防火牆規則中核准的 IP,您可以將 Azure Integration Runtime IP 新增至允許清單。

您也可以使用 Azure Data Factory 中的受控虛擬網路整合執行階段功能來存取內部部署網路,而不需要安裝和設定自我裝載整合執行階段。

如需 Data Factory 支援的網路安全性機制和選項的詳細資訊,請參閱資料存取策略

Integration Runtime 從 3.7 版開始提供內建的 MySQL 驅動程式,因此您不需要手動安裝任何驅動程式。

開始使用

若要透過管線執行複製活動,您可以使用下列其中一個工具或 SDK:

使用 UI 建立連結至 MySQL 的服務

使用下列步驟,在 Azure 入口網站 UI 中建立連結至 MySQL 的服務。

  1. 前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:

  2. 搜尋 MySQL 並選取 MySQL 連接器。

    選取 MySQL 連接器。

  3. 設定服務詳細資料,測試連線,然後建立新的連結服務。

    設定與 MySQL 的連結服務。

連接器設定詳細資料

下列各節提供屬性的相關詳細資料,這些屬性是用來定義 MySQL 連接器專屬的 Data Factory 實體。

連結服務屬性

如果您使用建議的驅動程式版本,則 MySQL 連結服務支援下列屬性:

屬性 描述 必要
type 類型屬性必須設定為:MySql Yes
driverVersion 在您選取建議的驅動程式版本時的驅動程式版本。 值為 v2。 Yes
伺服器 您的 MySQL 伺服器名稱。 Yes
port 要連線到 MySQL 伺服器的連接埠號碼。 No
database 您的 MySQL 資料庫名稱。 Yes
username 您的使用者名稱。 Yes
password 使用者名稱的密碼。 將此欄位標記為 SecureString 以將其安全地儲存。 或者,可以參考 Azure Key Vault 中儲存的認證 Yes
sslMode 此選項指定驅動程式在連線到 MySQL 時,是否使用 TLS 加密和驗證。 例如,SSLMode=<0/1/2/3/4>
選項:DISABLED (0) / PREFERRED (1) (預設) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Yes
useSystemTrustStore 此選項指定是否使用來自系統信任存放區或來自指定 PEM 檔案的 CA 憑證。 例如 UseSystemTrustStore=<0/1>
選項:啟用 (1) / 停用 (0) (預設)
No
connectVia 用於連線到資料存放區的 Integration Runtime。 深入了解必要條件一節。 如果未指定,就會使用預設的 Azure Integration Runtime。 No

範例:

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

範例:在 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"
        }
    }
}

如果您是使用舊版驅動程式版本,則會支援下列屬性:

屬性 描述 必要
type 類型屬性必須設定為:MySql Yes
connectionString 指定連線到適用於 MySQL 的 Azure 資料庫執行個體所需的資訊。
您也可以將密碼放在 Azure Key Vault 中,並從連接字串中提取 password 組態。 請參閱下列範例和在 Azure Key Vault 中儲存認證一文中的更多詳細資料。
Yes
connectVia 用於連線到資料存放區的 Integration Runtime。 深入了解必要條件一節。 如果未指定,就會使用預設的 Azure Integration Runtime。 No

一般的連接字串為 Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>。 您可以根據您的案例設定更多屬性:

屬性 描述 必要
sslMode 此選項指定驅動程式在連線到 MySQL 時,是否使用 TLS 加密和驗證。 例如,SSLMode=<0/1/2/3/4>
選項:DISABLED (0) / PREFERRED (1) (預設) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4)
Yes
SSLCert .pem 檔案的完整路徑和名稱,會包含用來證明用戶端身分識別的 SSL 憑證。
若要在將憑證傳送至伺服器之前,指定用來加密此憑證的私密金鑰,請使用 SSLKey 屬性。
如果使用雙向 SSL 驗證,請使用該項目。
SSLKey 檔案的完整路徑和名稱,會包含在雙向 SSL 驗證期間,用來加密用戶端憑證的私密金鑰。 如果使用雙向 SSL 驗證,請使用該項目。
useSystemTrustStore 此選項指定是否使用來自系統信任存放區或來自指定 PEM 檔案的 CA 憑證。 例如 UseSystemTrustStore=<0/1>
選項:啟用 (1) / 停用 (0) (預設)
No

範例:

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

資料集屬性

如需可用來定義資料集的區段和屬性完整清單,請參閱資料集一文。 本節提供 MySQL 資料集所支援的屬性清單。

若要從 MySQL 複製資料,以下是支援的屬性:

屬性 描述 必要
type 資料集的類型屬性必須設定為:MySqlTable Yes
tableName MySQL 資料庫中的資料表名稱。 否 (如果已指定活動來源中的「查詢」)

範例

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

如果您使用 RelationalTable 具型別資料集,雖然仍照現狀支援,但建議您往後使用新的版本。

複製活動屬性

如需可用來定義活動的區段和屬性完整清單,請參閱管線一文。 本節提供 MySQL 來源所支援的屬性清單。

MySQL 作為來源

若要從 MySQL 複製資料,複製活動 source 區段中支援下列屬性:

屬性 描述 必要
type 複製活動來源的類型屬性必須設定為:MySqlSource Yes
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 Int64
bigint unsigned Decimal Decimal
bit(1) UInt64 Boolean
bit(M), M>1 UInt64 Byte[]
blob Byte[] Byte[]
bool Boolean
(若 TreatTinyAsBoolean=false,則對應為 SByte。TreatTinyAsBoolean 預設為 true)
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) 對應至 Boolean
Int16
tinyint unsigned Int16 Int16
tinytext String String
varchar String String
year Int Int

查閱活動屬性

若要了解屬性的詳細資料,請參閱查閱活動

升級 MySQL 連接器

以下是協助您升級 MySQL 連接器的步驟:

  1. 在 [編輯連結服務] 頁面中,選取 [驅動程式版本] 底下的 [建議],並參考 [連結服務屬性] 來設定連結的服務。

  2. 最新 MySQL 連結服務的資料類型對應與舊版的不同。 若要了解最新的資料類型對應,請參閱 適用於 MySQL 的資料類型對應 (部分機器翻譯)。

  3. 最新的驅動程式版本 v2 支援更多 MySQL 版本。 如需詳細資訊,請參閱支援的功能

本節介紹 MySQL 連接器建議版本的最佳做法。

無法載入 SSL 金鑰

  • 徵兆:如果您使用 MySQL 連接器建議版本搭配 SSL 金鑰作為連線屬性,您可能會遇到下列錯誤訊息: Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----

  • 原因:建議的版本無法解密 PCKS#8 格式。

  • 建議:將 PEM 格式轉換為 PCKS#1。

下表顯示 MySQL 使用建議與舊版驅動程式版本之間的資料類型對應差異。

MySQL 資料類型 過渡期服務資料類型 (使用建議驅動程式版本) 過渡期服務資料類型 (使用舊版驅動程式版本)
bit(1) UInt64 布林值
bit(M), M>1 UInt64 Byte[]
bool 布林值 Int16
JSON String Byte[]

如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區