使用 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 的服務。
前往 Azure Data Factory 或 Synapse 工作區的 [管理] 索引標籤,選取 [連結服務],然後按一下 [新增]:
搜尋 MySQL 並選取 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 連接器的步驟:
最新 MySQL 連結服務的資料類型對應與舊版的不同。 若要了解最新的資料類型對應,請參閱 適用於 MySQL 的資料類型對應 (部分機器翻譯)。
最新的驅動程式版本 v2 支援更多 MySQL 版本。 如需詳細資訊,請參閱支援的功能。
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[] |
相關內容
如需複製活動支援作為來源和接收器的資料存放區清單,請參閱支援的資料存放區。