Копирование и преобразование данных в Базе данных Azure для MySQL с помощью Фабрики данных Azure или Synapse Analytics
ОБЛАСТЬ ПРИМЕНЕНИЯ: Фабрика данных Azure Azure Synapse Analytics
Совет
Попробуйте использовать фабрику данных в Microsoft Fabric, решение для аналитики с одним интерфейсом для предприятий. Microsoft Fabric охватывает все, от перемещения данных до обработки и анализа данных в режиме реального времени, бизнес-аналитики и отчетности. Узнайте, как бесплатно запустить новую пробную версию !
В этой статье описано, как использовать действие Copy в конвейерах Фабрики данных Azure или Synapse Analytics для копирования данных в Базу данных Azure для MySQL и из нее, а также как использовать Поток данных для преобразования данных в Базе данных Azure для MySQL. Дополнительные сведения см. в вводных статьях о Фабрике данных Azure и Synapse Analytics.
Этот соединитель специально создан для следующих сценариев:
Чтобы скопировать данные из универсальной базы данных MySQL, расположенной в локальной среде или в облаке, используйте соединитель MySQL.
Необходимые компоненты
В контексте этого краткого руководства в качестве отправной точки используются следующие ресурсы и конфигурация:
- Существующая база данных Azure для отдельного сервера MySQL или гибкого сервера MySQL с общедоступным доступом или частной конечной точкой.
- Выберите Разрешить общий доступ из любой службы Azure в Azure к этому серверу на странице сетевых параметров сервера MySQL. Это позволит использовать студию Фабрики данных.
Поддерживаемые возможности
Этот соединитель Базы данных Azure для MySQL поддерживается для следующих возможностей.
Поддерживаемые возможности | IR | Управляемая частная конечная точка |
---|---|---|
Действие копирования (источник/приемник) | (1) (2) | ✓ |
Поток данных для сопоставления (источник/приемник) | (1) | ✓ |
Действие поиска | (1) (2) | ✓ |
① Среда выполнения интеграции Azure ② Локальная среда выполнения интеграции
Начало работы
Чтобы выполнить действие копирования с конвейером, можно воспользоваться одним из приведенных ниже средств или пакетов SDK:
- средство копирования данных;
- Портал Azure
- Пакет SDK для .NET
- Пакет SDK для Python
- Azure PowerShell
- The REST API
- шаблон Azure Resource Manager.
Создание связанной службы, относящейся к Базе данных Azure для MySQL, с помощью пользовательского интерфейса
Выполните приведенные ниже действия, чтобы создать с помощью пользовательского интерфейса портала Azure связанную службу, относящуюся к Базе данных Azure для MySQL.
Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":
Выполните поиск MySQL и выберите соединитель Базы данных Azure для MySQL.
Настройте сведения о службе, проверьте подключение и создайте связанную службу.
Сведения о конфигурации соединителя
Следующие разделы содержат сведения о свойствах, которые используются для определения сущностей фабрики данных, характерных для соединителя базы данных Azure для MySQL.
Свойства связанной службы
Для связанной службы базы данных Azure для MySQL поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Для свойства type необходимо задать значение AzureMySql. | Да |
connectionString | Укажите сведения, необходимые для подключения к экземпляру базы данных Azure для MySQL. Вы можете также поместить пароль в Azure Key Vault и извлечь конфигурацию password из строки подключения. Ознакомьтесь с приведенными ниже примерами и подробными сведениями в статье Хранение учетных данных в Azure Key Vault. |
Да |
connectVia | Среда выполнения интеграции, используемая для подключения к хранилищу данных. Вы можете использовать среду выполнения интеграции Azure или локальную среду IR (если хранилище данных расположено в частной сети). Если не указано другое, по умолчанию используется интегрированная среда выполнения Azure. | No |
Типичная строка подключения — Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>
. Дополнительные свойства, которые вы можете установить в вашем случае:
Свойство | Description | Параметры | Обязательное поле |
---|---|---|---|
SSLMode | Этот параметр указывает, использует ли драйвер TLS-шифрование и проверку при подключении к MySQL. Например. SSLMode=<0/1/2/3/4> |
DISABLED (0) / PREFERRED (1) (по умолчанию) / REQUIRED (2) / VERIFY_CA (3) / VERIFY_IDENTITY (4) | No |
useSystemTrustStore | Этот параметр указывает, следует ли использовать сертификат ЦС из доверенного системного хранилища или из указанного PEM-файла. Например. UseSystemTrustStore=<0/1>; |
Enabled (1) / Disabled (0) (по умолчанию) | No |
Пример:
{
"name": "AzureDatabaseForMySQLLinkedService",
"properties": {
"type": "AzureMySql",
"typeProperties": {
"connectionString": "Server=<server>.mysql.database.azure.com;Port=<port>;Database=<database>;UID=<username>;PWD=<password>"
},
"connectVia": {
"referenceName": "<name of Integration Runtime>",
"type": "IntegrationRuntimeReference"
}
}
}
Пример: хранение пароля в Azure Key Vault
{
"name": "AzureDatabaseForMySQLLinkedService",
"properties": {
"type": "AzureMySql",
"typeProperties": {
"connectionString": "Server=<server>.mysql.database.azure.com;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"
}
}
}
Свойства набора данных
Полный список разделов и свойств, доступных для определения наборов данных, см. в статье о наборах данных. Этот раздел содержит список свойств, поддерживаемых набором данных базы данных Azure для MySQL.
Чтобы скопировать данные из базы данных Azure для MySQL, задайте для свойства type набора данных значение AzureMySqlTable. Поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type набора данных должно иметь значение AzureMySqlTable. | Да |
tableName | Имя таблицы в базе данных MySQL. | Нет (если свойство query указано в источнике действия) |
Пример
{
"name": "AzureMySQLDataset",
"properties": {
"type": "AzureMySqlTable",
"linkedServiceName": {
"referenceName": "<Azure MySQL linked service name>",
"type": "LinkedServiceReference"
},
"typeProperties": {
"tableName": "<table name>"
}
}
}
Свойства действия копирования
Полный список разделов и свойств, используемых для определения действий, см. в статье Конвейеры и действия в фабрике данных Azure. Этот раздел содержит список свойств, поддерживаемых источником и приемником Базы данных Azure для MySQL.
База данных Azure для MySQL в качестве источника
Для копирования данных из Базы данных Azure для MySQL в разделе source для действия Copy поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type источника действия копирования должно иметь значение AzureMySqlSource. | Да |
query | Используйте пользовательский SQL-запрос для чтения данных. Например: "SELECT * FROM MyTable" . |
Нет (если для набора данных задано свойство tableName) |
queryCommandTimeout | Срок до истечения времени ожидания запроса. По умолчанию — 120 минут (02:00:00) | No |
Пример:
"activities":[
{
"name": "CopyFromAzureDatabaseForMySQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<Azure MySQL input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "AzureMySqlSource",
"query": "<custom query e.g. SELECT * FROM MyTable>"
},
"sink": {
"type": "<sink type>"
}
}
}
]
База данных Azure для MySQL в качестве приемника
Для копирования данных в Базу данных Azure для MySQL в разделе sink для действия Copy поддерживаются следующие свойства:
Свойство | Описание: | Обязательное поле |
---|---|---|
type | Свойство type приемника действия Copy должно иметь значение AzureMySqlSink. | Да |
preCopyScript | Укажите SQL-запрос для действия Copy, выполняемый перед записью данных в Базу данных Azure для MySQL при каждом выполнении. Это свойство можно использовать для очистки предварительно загруженных данных. | No |
writeBatchSize | Вставляет данные в Базу данных Azure для MySQL, когда размер буфера достигает значения writeBatchSize. Допустимое значение — целое число, представляющее количество строк. |
Нет (значение по умолчанию — 10 000) |
writeBatchTimeout | Время ожидания до выполнения операции пакетной вставки, пока не завершится срок ее действия. Допустимые значения: временной диапазон. Например, 00:30:00 (30 минут). |
Нет (значение по умолчанию — 00:00:30) |
Пример:
"activities":[
{
"name": "CopyToAzureDatabaseForMySQL",
"type": "Copy",
"inputs": [
{
"referenceName": "<input dataset name>",
"type": "DatasetReference"
}
],
"outputs": [
{
"referenceName": "<Azure MySQL output dataset name>",
"type": "DatasetReference"
}
],
"typeProperties": {
"source": {
"type": "<source type>"
},
"sink": {
"type": "AzureMySqlSink",
"preCopyScript": "<custom SQL script>",
"writeBatchSize": 100000
}
}
}
]
Свойства потока данных для сопоставления
При преобразовании данных в потоке данных для сопоставления можно выполнять операции чтения и записи в таблицах из Базы данных Azure для MySQL. Дополнительные сведения см. в описаниях преобразования источника и преобразования приемника в разделе, посвященном потокам данных для сопоставления. Можно выбрать использование набора данных Базы данных Azure для MySQL или встроенного набора данных в качестве типа источника и приемника.
Преобразование источника
В таблице ниже перечислены свойства, поддерживаемые источником Базы данных Azure для MySQL. Изменить эти свойства можно на вкладке Source options (Параметры источника).
Имя | Описание | Обязательное поле | Допустимые значения | Свойство скрипта для потока данных |
---|---|---|---|---|
Таблица | Если выбрать таблицу в качестве входных данных, поток данных извлекает все данные из таблицы, указанной в наборе данных. | No | - | (только для встроенного набора данных) tableName |
Query | При выборе запроса в качестве входных данных укажите SQL-запрос для выборки данных из источника, переопределяющий любую таблицу, указанную в наборе данных. Использование запросов — отличный способ сокращения количества строк для тестирования или поиска. Предложение Order By не поддерживается, но можно задать полную инструкцию SELECT FROM. Кроме того, можно использовать табличные функции, определяемые пользователем. select * from udfGetData() — определяемая пользователем функция в SQL, возвращающая таблицу, которую можно использовать в потоке данных. Пример запроса: select * from mytable where customerId > 1000 and customerId < 2000 или select * from "MyTable" . |
Нет | Строка | query |
Хранимая процедура | Если для входных данных выбран тип "Хранимая процедура", укажите имя хранимой процедуры для чтения данных из исходной таблицы или нажмите кнопку "Обновить", чтобы служба выполнила обнаружение имен процедур. | Да (при выборе типа входных данных "Хранимая процедура") | Строка | procedureName |
Параметры процедуры | Если для входных данных выбран тип "Хранимая процедура", укажите входные параметры для хранимой процедуры в том порядке, в котором они заданы в используемой процедуре, или щелкните "Импорт", чтобы импортировать все параметры процедуры в формате @paraName . |
No | Массив | входные данные |
Размер пакета | Укажите размер пакета для разделения больших наборов данных на пакеты. | No | Целое | batchSize |
Уровень изоляции | Выберите один из следующих уровней изоляции: - Read Committed (чтение зафиксированных данных) - Read Uncommitted (по умолчанию) - Repeatable Read (повторяющаяся операция чтения) - Serializable (сериализуемый) - None (игнорировать уровень изоляции) |
No | READ_COMMITTED READ_UNCOMMITTED REPEATABLE_READ SERIALIZABLE NONE |
isolationLevel |
Пример сценария источника Базы данных Azure для MySQL
При использовании Базы данных Azure для MySQL в качестве типа источника связанным сценарием потока данных будет:
source(allowSchemaDrift: true,
validateSchema: false,
isolationLevel: 'READ_UNCOMMITTED',
query: 'select * from mytable',
format: 'query') ~> AzureMySQLSource
Преобразование приемника
В таблице ниже перечислены свойства, поддерживаемые приемником Базы данных Azure для MySQL. Эти свойства можно изменить на вкладке Параметры приемника.
Имя | Описание | Обязательное поле | Допустимые значения | Свойство скрипта для потока данных |
---|---|---|---|---|
Метод обновления | Укажите, какие операции разрешены в назначении базы данных. По умолчанию разрешены только операции вставки. Для выполнения обновления (update), обновления или вставки (upsert) или удаления (delete) строк требуется преобразование alter-row, чтобы отметить строки для этих действий. |
Да | true или false |
deletable Вставляемый доступный для обновления подлежит обновлению или вставке |
Ключевые столбцы | Для выполнения обновления (update), обновления или вставки (upsert) или удаления (delete) должен быть установлен ключевой столбец или столбцы, позволяющие определить строки для изменения. Имя столбца, которой вы выберете в качестве ключа, будет использоваться при выполнении последующих операций обновления и удаления, а также операции upsert. Поэтому необходимо выбрать столбец, существующий в сопоставлении приемника. |
No | Массив | клиентом |
Пропустить запись ключевых столбцов | Если вы не хотите записывать значение в ключевой столбец, выберите "Skip writing key columns" (Пропустить запись ключевых столбцов). | No | true или false |
skipKeyWrites |
Действие таблицы | Определяет, следует ли повторно создавать или удалять все строки в целевой таблице перед записью. - Нет: действия с таблицей не будут выполняться. - Создать повторно: таблица будет удалена и создана повторно. Это действие необходимо, если новая таблица создается динамически. - Усечь: все строки из целевой таблицы будут удалены. |
No | true или false |
создать повторно truncate |
Размер пакета | Укажите, сколько строк записывается в каждый пакет. Более крупные размеры пакетов улучшают сжатие и оптимизацию памяти, но при кэшировании данных возникает риск нехватки памяти. | No | Целое | batchSize |
Скрипты SQL предобработки и постобработки | Укажите многострочные скрипты SQL, которые будут выполняться до (предобработка) и после (постобработка) записи данных в базу данных-приемник. | Нет | Строка | preSQLs postSQLs |
Совет
- Рекомендуется разбивать пакетные скрипты с несколькими командами на несколько пакетов.
- В качестве части пакета могут выполняться только инструкции языка описания данных DDL и языка обработки данных DML, возвращающие простой счетчик обновлений. Узнайте больше о выполнении пакетных операций.
Включить добавочное извлечение. Используйте этот параметр, чтобы ADF обрабатывала только строки, которые изменились с момента последнего выполнения конвейера.
Добавочный столбец. При использовании функции добавочного извлечения необходимо выбрать дату и время или числовый столбец, который вы хотите использовать в качестве подложки в исходной таблице.
Начать чтение с самого начала. При установке этого параметра вместе с добавочным извлечением ADF будет считывать все строки при первом выполнении конвейера с включенным добавочным извлечением.
Пример сценария приемника Базы данных Azure для MySQL
При использовании Базы данных Azure для MySQL в качестве типа приемника связанным сценарием потока данных будет:
IncomingStream sink(allowSchemaDrift: true,
validateSchema: false,
deletable:false,
insertable:true,
updateable:true,
upsertable:true,
keys:['keyColumn'],
format: 'table',
skipDuplicateMapInputs: true,
skipDuplicateMapOutputs: true) ~> AzureMySQLSink
Свойства действия поиска
Подробные сведения об этих свойствах см. в разделе Действие поиска.
Сопоставление типов данных для базы данных Azure для MySQL
При копировании данных из базы данных Azure для MySQL следующие сопоставления используются из типов данных MySQL в промежуточные типы данных, используемые службой внутренним образом. Дополнительные сведения о том, как действие копирования сопоставляет исходную схему и типы данных для приемника, см. в статье Сопоставление схем в действии копирования.
Тип данных базы данных Azure для MySQL | Промежуточный тип данных службы |
---|---|
bigint |
Int64 |
bigint unsigned |
Decimal |
bit |
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 |
Int32 |
Связанный контент
Список хранилищ данных, которые поддерживаются в качестве источников и приемников для действия Copy, приведен в таблице Поддерживаемые хранилища данных и форматы.