Копирование и преобразование данных в Базе данных 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 для MySQL, с помощью пользовательского интерфейса

Выполните приведенные ниже действия, чтобы создать с помощью пользовательского интерфейса портала Azure связанную службу, относящуюся к Базе данных Azure для MySQL.

  1. Перейдите на вкладку "Управление" в рабочей области Фабрики данных Azure или Synapse и выберите "Связанные службы", после чего нажмите "Создать":

  2. Выполните поиск MySQL и выберите соединитель Базы данных Azure для MySQL.

    Выберите соединитель Базы данных Azure для MySQL.

  3. Настройте сведения о службе, проверьте подключение и создайте связанную службу.

    Настройте связанную службу Базы данных 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

Совет

  1. Рекомендуется разбивать пакетные скрипты с несколькими командами на несколько пакетов.
  2. В качестве части пакета могут выполняться только инструкции языка описания данных 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, приведен в таблице Поддерживаемые хранилища данных и форматы.