Копирование данных из MySQL с помощью Фабрики данных Azure или Synapse Analytics
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure
Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описывается, как с помощью действия копирования в конвейерах Фабрики данных Azure и Synapse Analytics копировать данные из базы данных MySQL. Это продолжение статьи об обзоре действия копирования, в которой представлены общие сведения о действии копирования.
Примечание.
Чтобы копировать данные из службы Базы данных Azure для MySQL или в нее, используйте специальный соединитель Базы данных Azure для MySQL.
Внимание
Соединитель MySQL версии 2.0 обеспечивает улучшенную поддержку MySQL. Если вы используете соединитель MySQL версии 1.0 в решении, обновите соединитель MySQL до версии 1.0 на этапе поддержки. Дополнительные сведения о разнице между версией 2.0 и версией 1.0 см. в этом разделе .
Поддерживаемые возможности
Соединитель MySQL поддерживается для перечисленных ниже возможностей.
Поддерживаемые возможности | IR |
---|---|
Действие копирования (источник/-) | (1) (2) |
Действие поиска | (1) (2) |
① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия копирования, приведен в таблице Поддерживаемые хранилища данных и форматы.
Этот соединитель поддерживает MySQL версии 5.5, 5.6, 5.7, 8.0, 8.1 и 8.2 в соединителе MySQL версии 2.0 и 5.6, 5.7 и 8.0 для версии 1.0.
Необходимые компоненты
Если хранилище данных размещено в локальной сети, виртуальной сети Azure или виртуальном частном облаке Amazon, для подключения к нему нужно настроить локальную среду выполнения интеграции.
Если же хранилище данных представляет собой управляемую облачную службу данных, можно использовать Azure Integration Runtime. Если доступ предоставляется только по IP-адресам, утвержденным в правилах брандмауэра, вы можете добавить IP-адреса Azure Integration Runtime в список разрешений.
Вы также можете использовать функцию среды выполнения интеграции в управляемой виртуальной сети в Фабрике данных Azure для доступа к локальной сети без установки и настройки локальной среды выполнения интеграции.
Дополнительные сведения о вариантах и механизмах обеспечения сетевой безопасности, поддерживаемых Фабрикой данных, см. в статье Стратегии получения доступа к данным.
Начиная с версии 3.7 служба Integration Runtime предоставляет встроенный драйвер MySQL, поэтому вам не потребуется устанавливать его вручную.
Начало работы
Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы для MySQL с помощью пользовательского интерфейса
Выполните следующие действия, чтобы создать связанную службу для MySQL в пользовательском интерфейсе портала Azure.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Выполните поиск по запросу MySQL и выберите соединитель MySQL.
Настройте сведения о службе, проверьте подключение и создайте связанную службу.
Сведения о конфигурации соединителя
Следующие разделы содержат сведения о свойствах JSON, которые используются для определения сущностей фабрики данных, относящихся к соединителю MySQL.
Свойства связанной службы
Если вы используете версию 2.0, для связанной службы MySQL поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Для свойства type необходимо задать значение MySql | Да |
driverVersion | Версия драйвера при выборе версии 2.0. Значение равно версии 2. | Да |
server | Имя сервера MySQL. | Да |
port | Номер порта для подключения к серверу MySQL. | No |
database | Имя базы данных MySQL. | Да |
username | Ваше имя пользователя. | Да |
password | Пароль для имени пользователя. Пометьте это поле как SecureString для безопасного хранения. Вы можете также указать секрет, хранящийся в Azure Key Vault. | Да |
sslMode | Этот параметр указывает, использует ли драйвер TLS-шифрование и проверку при подключении к MySQL. Пример: SSLMode=<0/1/2/3/4> .Параметры: DISABLED (0) / PREFERRED (1) (по умолчанию) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) |
Да |
useSystemTrustStore | Этот параметр указывает, следует ли использовать сертификат ЦС из доверенного системного хранилища или из указанного PEM-файла. Например, UseSystemTrustStore=<0/1> ;Параметры: включено (1) / Отключено (0) (по умолчанию) |
No |
connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Дополнительные сведения см. в разделе Предварительные условия. Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. | No |
Дополнительные свойства подключения | ||
allowZeroDateTime | Указание этого значения свойства позволяет true получить специальное значение даты "нулевой 0000-00-00 " из базы данных. Если задано значение false (по умолчанию), столбцы дат возвращаются в качестве значений DateTime, то это означает, что 0000-00-00 невозможно получить. MySQL позволяет хранить значение 0000-00-00 "нулевой" значения в качестве "фиктивной даты". В некоторых случаях эта функция удобнее, чем использование значений NULL, и использует меньше места в данных и индексе. Чтобы запретить использование 0000-00-00 MySQL, включите режим NO_ZERO_DATE . Дополнительные сведения см. в этой статье. |
No |
connectionTimeout | Длина времени (в секундах) для ожидания подключения к серверу перед завершением попытки и создания ошибки. | No |
convertZeroDateTime | Присвойте ему значение true для возврата DateTime.MinValue для столбцов даты или даты и времени, которые имеют запрещенные значения. |
No |
guidFormat | Определяет тип столбца (если таковой) должен быть считывается как GUID. Перейдите к этой статье для описания каждого типа столбца, выполнив поиск по этому свойству. Версия 2.0 обрабатывает Char(36) как тип GUID по умолчанию для повышения производительности. Соединитель обрабатывает поля Char(36) как идентификаторы GUID для упрощения обработки базы данных. Эта процедура упрощает такие операции, как вставка, обновление и получение значений GUID, обеспечивая согласованное управление как объекты GUID в коде приложения вместо простых строк. Это поведение особенно полезно в сценариях, когда идентификаторы GUID используются в качестве первичных ключей или уникальных идентификаторов и обеспечивают более высокую производительность. Если этот параметр по умолчанию не нужен, можно настроить guidFormat=none в свойстве подключения. |
No |
sslCert | Путь к SSL-файлу SSL-сертификата клиента в формате PEM. SslKey также необходимо указать. | No |
sslKey | Путь к закрытому ключу SSL клиента в формате PEM. SslCert также необходимо указать. | No |
treatTinyAsBoolean | Если задано значение true, значения tinyint(1) возвращаются как логические. При задании этого свойства значение false приводит к возврату tinyint(1) как SByte/Byte. Версия 2.0 обрабатывает tinyint(1) как логический тип по умолчанию. Дополнительные сведения см. в этой статье. Чтобы соединитель возвращал крошечные значения как числовые, задайте treatTinyAsBoolean=false в свойствах подключения. |
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"
}
}
}
При использовании версии 1.0 поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Для свойства type необходимо задать значение MySql | Да |
connectionString | Укажите сведения, необходимые для подключения к экземпляру базы данных Azure для MySQL. Вы можете также поместить пароль в Azure Key Vault и извлечь конфигурацию password из строки подключения. Ознакомьтесь с приведенными ниже примерами и подробными сведениями в статье Хранение учетных данных в Azure Key Vault. |
Да |
connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Дополнительные сведения см. в разделе Предварительные условия. Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. | No |
Типичная строка подключения — Server=<server>;Port=<port>;Database=<database>;UID=<username>;PWD=<password>
. Дополнительные свойства, которые вы можете установить в вашем случае:
Свойство | Описание: | Обязательное поле |
---|---|---|
sslMode | Этот параметр указывает, использует ли драйвер TLS-шифрование и проверку при подключении к MySQL. Пример: SSLMode=<0/1/2/3/4> .Параметры: DISABLED (0) / PREFERRED (1) (по умолчанию) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) |
Да |
SSLCert | Полный путь и имя PEM-файла, содержащего SSL-сертификат для подтверждения подлинности клиента. Чтобы указать закрытый ключ для шифрования этого сертификата перед его отправкой на сервер, используйте свойство SSLKey . |
Да, если используется двухфакторная проверка подлинности SSL. |
SSLKey | Полный путь и имя файла, содержащего закрытый ключ для шифрования сертификата на стороне клиента в процессе двусторонней проверки SSL. | Да, если используется двухфакторная проверка подлинности SSL. |
useSystemTrustStore | Этот параметр указывает, следует ли использовать сертификат ЦС из доверенного системного хранилища или из указанного PEM-файла. Например, 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 | Свойство type набора данных должно иметь значение : MySqlTable | Да |
tableName | Имя таблицы в базе данных MySQL. | Нет (если свойство query указано в источнике действия) |
Пример
{
"name": "MySQLDataset",
"properties":
{
"type": "MySqlTable",
"typeProperties": {},
"schema": [],
"linkedServiceName": {
"referenceName": "<MySQL linked service name>",
"type": "LinkedServiceReference"
}
}
}
Если вы ранее использовали типизированный набор данных RelationalTable
, он пока поддерживается и не требует изменений, но мы рекомендуем при любом удобном случае перейти на новую версию.
Свойства действия копирования
Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. В этом разделе содержится список свойств, поддерживаемых источником MySQL.
MySQL в качестве источника
Для копирования данных из MySQL в разделе source для действия копирования поддерживаются следующие свойства.
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство 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 | Тип данных промежуточной службы (для версии 2.0) | Тип данных промежуточной службы (для версии 1.0) |
---|---|---|
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:
На странице "Изменить связанную службу" выберите 2.0 в разделе "Версия" и настройте связанную службу, указав свойства связанной службы.
Сопоставление типов данных для версии 2.0 отличается от сопоставления типов данных для версии 1.0. Сведения о сопоставлении типов данных версии 2.0 см. в разделе "Сопоставление типов данных" для MySQL.
Версия 2.0 поддерживает больше версий MySQL. Дополнительные сведения см. в разделе "Поддерживаемые возможности".
Рекомендации по соединителю MySQL версии 2.0
В этом разделе приведены рекомендации по соединителю MySQL версии 2.0.
Не удается загрузить SSL-ключ
Симптомы: если вы используете соединитель MySQL версии 2.0 с SSL-ключом в качестве свойства подключения, может возникнуть следующее сообщение об ошибке:
Could not load the client key from your_pem_file: Unrecognized PEM header: -----BEGIN PRIVATE KEY-----
Причина: версия 2.0 не может расшифровать формат PCKS#8.
Рекомендация. Преобразование формата PEM в PCKS#1.
Различия между MySQL версии 2.0 и версией 1.0
В таблице ниже показаны различия в сопоставлении типов данных между MySQL с использованием версии 2.0 и версии 1.0.
Тип данных MySQL | Тип данных промежуточной службы (с использованием версии 2.0) | Тип данных промежуточной службы (с использованием версии 1.0) |
---|---|---|
bit(1) | UInt64 | Логический |
bit(M), M>1 | UInt64 | Byte[] |
bool | Логический | Int16 |
JSON | Строка | Byte[] |
Связанный контент
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных и форматы.