MySQL
В этом разделе объясняется, как настроить подключение к целевой базе данных MySQL с помощью целевого коннектора MySQL. MySQL можно использовать в качестве целевой базы данных только в задаче репликации. Прежде чем вы сможете подключиться к целевой базе данных MySQL, необходимо настроить Необходимые разрешения в базе данных. Если вы подключаетесь к MySQL через Шлюз движения данных, вам также необходимо установить драйвер, как описано в разделе Настройка драйвера.
Для получения информации об ограничениях и рекомендациях при использовании коннектора MySQL см. раздел Ограничения и рекомендации.
Настройка свойств подключения
Для настройки коннектора выполните следующие действия:
-
В разделе Подключения нажмите Создать подключение.
-
Выберите целевой коннектор MySQL и укажите следующие параметры:
Целевые данные
-
Шлюз данных: При работе с Шлюз движения данных выберите шлюз данных, который будет использоваться для проверки подключения к целевой базе данных MySQL. Это должен быть тот же шлюз, который использовался для доступа к источнику данных.
Примечание к информации- Это поле недоступно для подписки Qlik Talend Cloud Starter, так как Шлюз движения данных не поддерживается на этом уровне подписки.
-
Вам также необходимо установить соответствующий драйвер на компьютере Шлюз движения данных. Для получения подробной информации см. раздел Настройка драйвера ниже.
-
Облачный провайдер: Выберите один из следующих вариантов в зависимости от ситуации:
-
Нет
- Для локальной версии MySQL, MariaDB, Amazon Aurora или Microsoft Azure Database for MySQL - Flexible Server.
- При работе без Шлюз движения данных
-
Amazon RDS
Для Amazon RDS for MariaDB или Amazon RDS for MySQL.
-
Google Cloud
Для Google Cloud SQL for MySQL.
-
Microsoft Azure
Для Microsoft Azure Database for MySQL.
-
-
Сервер: Имя хоста или IP-адрес компьютера, на котором установлена база данных MySQL.
-
Порт: Порт, используемый при подключении к базе данных. Значение по умолчанию — 3306.
Свойства учетной записи
Имя пользователя и Пароль: Имя пользователя и пароль пользователя, авторизованного для доступа к базе данных MySQL Server.
Свойства базы данных
- Тип целевой базы данных: Выберите один из следующих вариантов:
- Конкретная база данных: Если выбрана эта опция, все исходные схемы будут загружены в указанную Базу данных.
- Несколько баз данных: Если выбрана эта опция, каждая из исходных схем будет загружена в соответствующую базу данных. Кроме того, по умолчанию все управляющие таблицы будут реплицированы в новую схему с именем attrep_control. Для получения дополнительной информации об управляющих таблицах см. раздел Управляющие таблицы.
- Максимальный размер файла (КБ): Выберите или введите максимальный размер (в КБ) CSV-файла перед его загрузкой в целевую базу данных MySQL. Значение по умолчанию — 32000 КБ.
- Потоки параллельной загрузки: Увеличение количества потоков может повысить производительность при загрузке данных в целевую базу данных MySQL. Обратите внимание, что установка большого количества потоков может негативно сказаться на производительности базы данных, так как для каждого потока требуется отдельное подключение.
Внутренние свойства
Внутренние свойства предназначены для особых вариантов использования и поэтому не отображаются в диалоговом окне. Их можно использовать только по указанию службы поддержки Qlik.
Используйте кнопки и
справа от полей, чтобы при необходимости добавить или удалить свойства.
Имя
Отображаемое имя для подключения.
Предварительные требования
Необходимые разрешения
Пользователю, указанному в настройках коннектора, должны быть предоставлены:
- Доступ к учетной записи MySQL
- Привилегии чтения/записи в базе данных MySQL
-
Следующие разрешения
для каждой целевой схемы, участвующей в репликации:
- ALTER
- CREATE
- CREATE TEMPORARY TABLES
- DELETE
- DROP
- INSERT
- SELECT
- UPDATE
Настройка драйвера
В этом разделе описывается процедура установки необходимого driverа. Она включает выполнение скрипта, который автоматически загружает, устанавливает и настраивает необходимый driver. Также можно выполнять скрипты для обновления и удаления driverа по необходимости.
Подготовка к установке
-
Убедитесь, что на сервере шлюза Data Movement установлена версия Python 3.6 или более поздняя.
Python предустанавливается в большинстве дистрибутивов Linux. Чтобы проверить, какая версия Python установлена в системе, выполните следующую команду:
python3 --version
Установка driver
Чтобы загрузить и установить driver, выполните следующие действия.
-
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./install mysql
Если не удается загрузить driver (из-за ограничений доступа или технических проблем), появится сообщение с указанием места, откуда можно загрузить driver и куда его скопировать на компьютере шлюза Data Movement. После этого выполните команду install mysql еще раз.
В противном случае откроется лицензионное соглашение с конечным пользователем driverа.
-
Выполните одно из следующих действий:
- Нажмите клавишу [Enter] несколько раз, чтобы медленно прокрутить лицензионное соглашение.
- Нажимайте клавишу «Пробел» несколько раз, чтобы быстро прокрутить лицензионное соглашение.
- Нажмите клавишу «q», чтобы закрыть текст лицензионного соглашения и перейти к шагу принятия/отклонения.
-
Выполните одно из следующих действий:
- Введите «y» и нажмите клавишу [Enter], чтобы принять лицензионное соглашение и запустить установку.
- Введите «n» и нажмите клавишу [Enter], чтобы отклонить лицензионное соглашение и отменить установку.
-
Введите «v» и нажмите клавишу [Enter], чтобы снова открыть лицензионное соглашение для просмотра.
Будет установлен driver.
Обновление driverа
Выполните команду обновления, если требуется удалить предыдущие версии driverа перед установкой предоставленной версии driverа.
Чтобы загрузить и обновить driver, выполните следующие действия.
-
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./update mysql
Если не удается загрузить driver (из-за ограничений доступа или технических проблем), появится сообщение с указанием места, откуда можно загрузить driver и куда его скопировать на компьютере шлюза Data Movement. После этого выполните команду update mysql еще раз.
В противном случае откроется лицензионное соглашение с конечным пользователем driverа.
-
Выполните одно из следующих действий:
- Нажмите клавишу [Enter] несколько раз, чтобы медленно прокрутить лицензионное соглашение.
- Нажимайте клавишу «Пробел» несколько раз, чтобы быстро прокрутить лицензионное соглашение.
- Нажмите клавишу «q», чтобы закрыть текст лицензионного соглашения и перейти к шагу принятия/отклонения.
-
Выполните одно из следующих действий:
- Введите «y» и нажмите клавишу [Enter], чтобы принять лицензионное соглашение и запустить установку.
- Введите «n» и нажмите клавишу [Enter], чтобы отклонить лицензионное соглашение и отменить установку.
- Введите «v» и нажмите клавишу [Enter], чтобы снова просмотреть лицензионное соглашение от начала.
Будет удален старый driver и установлен новый driver.
Удаление driverа
Выполните команду удаления, если требуется удалить driver.
Чтобы удалить driver, выполните следующие действия.
-
Остановите все задачи, использующие данный коннектор.
-
На компьютере шлюза Data Movement измените рабочую папку на:
opt/qlik/gateway/movement/drivers/bin
-
Выполните следующую команду:
Синтаксис:
./uninstall mysql
driver будет удален.
Установка драйвера вручную
Установку driver вручную следует пытаться выполнить только в том случае, если автоматическая установка драйвера не завершилась успешно.
После установки Шлюз движения данных загрузите драйвер mysql-connector-odbc-<version>.x86_64.rpm. Можно найти прямую ссылку для загрузки поддерживаемой версии в разделе binary-artifacts в /opt/qlik/gateway/movement/drivers/manifests/mysql.yaml. После завершения загрузки скопируйте RPM на машину Шлюз движения данных.
На сервере Data Movement Gateway откройте приглашение оболочки и выполните действия, указанные ниже.
-
Остановите службу Data Movement Gateway:
sudo systemctl stop repagent
-
Если нужно, подтвердите, что сервис остановлен:
sudo systemctl status repagent
Статус должен быть следующим:
Active: inactive (dead) since <timestamp> ago
- Установите драйвер на машину Data Movement Gateway.
-
Измените рабочий директорий на <Data Movement Gateway-Install-Dir>/bin.
-
Скопируйте местоположение драйвера в файл site_arep_login.sh:
echo "export LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:/usr/lib64" >> site_arep_login.sh
Таким образом драйвер будет добавлен к LD_LIBRARY_PATH, а в файле site_arep_login.sh будет сохранено местоположение драйвера.
-
При необходимости подтвердите, что местоположение драйвера было скопировано:
cat site_arep_login.sh -
Проверьте, что в файле /etc/odbcinst.ini имеется запись для MySQL, такая, как в этом примере:
[MySQL ODBC 8.0 Unicode Driver]Driver = /usr/lib64/libmyodbc8w.soUsageCount = 1 -
Запустите службу Data Movement Gateway.
sudo systemctl start repagent
-
Если нужно, подтвердите, что сервис запущен:
sudo systemctl status repagent
Статус должен быть следующим:
Active: active (running) since <timestamp> ago
Ограничения и рекомендации
При использовании MySQL в качестве целевой базы данных для репликации действуют следующие ограничения:
-
При репликации в целевую базу данных MariaDB, если значение DATETIME равно нулю, необходимо определить преобразование, которое заменяет DATETIME на допустимые значения. Например:
replace($datetime_column,'9999-12-31 23:59:59','2000-01-01 22:00:00')
Примечание к информацииЭто ограничение не применяется к Microsoft Azure Database for MySQL. - Из-за особенностей работы MySQL при загрузке данных в целевую базу данных MySQL во время задачи полной загрузки ошибки дубликатов ключей не будут регистрироваться в журналах.
-
При обновлении значения столбца на его существующее значение MySQL возвращает ноль затронутых строк (в отличие от Oracle и Microsoft SQL Server, которые выполняют обновление одной строки).
Это создает запись в attrep_apply_exceptions Control Table и следующее предупреждение:
Some changes from the source database had no impact when applied to the target database. See attrep_apply_exceptions table for details.
-
Если необходимо реплицировать 4-байтовые символы эмодзи, для набора символов целевой схемы должно быть задано значение utf8mb4.
-
Если исходная таблица содержит большое количество столбцов, MySQL может вернуть ошибку Row size too large (> 8126), так как 8126 байт — это максимальный размер строки по умолчанию в MySQL. При использовании источников SaaS-приложений эта ошибка возникает во время выполнения. При использовании других типов источников, таких как базы данных, ошибка возникает во время подготовки задачи. Чтобы обойти это ограничение, используйте один из следующих подходов:
-
Рекомендуемый подход: После приема данных удалите столбцы, которые не нужны в целевой базе данных. Для получения информации о том, как это сделать, см. Удаление столбцов. Если ошибка по-прежнему возникает, удалите больше столбцов.
-
Альтернативное решение: Если необходимо включить все исходные столбцы в целевую таблицу, существуют определенные конфигурации базы данных MySQL, которые позволяют это сделать. Одной из них является увеличение размера страницы MySQL, чтобы он был достаточно большим для размещения размера строки.
Примечание к информацииДля источников с размером строки, превышающим ограничение в 65 535 байт, необходимо преобразовать исходное поле в тип данных, поддерживающий больший размер строки. Это связано с известным ограничением на максимальный размер записи строки. Для получения дополнительной информации см. документацию MySQL по ограничениям размера строки.
-
Типы данных
Информация о собственном типе данных сохраняется и отображается в столбце Собственный тип данных в видах набора данных. Если этот столбец не отображается, необходимо открыть инструмент «Управление столбцами» в виде набора данных и выбрать столбец Собственный тип данных.
| Типы данных Qlik Cloud | Типы данных MySQL |
|---|---|
|
BOOL |
BOOL |
|
BYTES |
Если длина => 1 и =< 8095, то: VARBINARY (Length) Если длина => 8096 и =< 65535, то: BLOB Если длина => 65536 и =< 16777215, то: MEDIUMBLOB Если длина => 16777216 и =< 2147483647, то: LONGBLOB |
|
DATE |
DATE |
|
TIME |
TIME |
|
DATETIME |
Если масштаб => 0 и =< 6, то: DECIMAL (p,s) Если масштаб => 7 и =< 12, то: VARCHAR (37) |
|
INT1 |
TINYINT |
|
INT2 |
SMALLINT |
|
INT4 |
INTEGER |
|
INT8 |
BIGINT |
|
NUMERIC |
Если масштаб => 0 и =< 30, то: DECIMAL (p,s) Если масштаб => 31 и =< 100, то: VARCHAR (45) |
|
REAL4 |
FLOAT; |
|
REAL8 |
DOUBLE |
|
STRING |
Если длина => 1 и =< 8095, то: VARCHAR (Length) Если длина => 8096 и =< 65535, то: TEXT Если длина => 65536 и =< 16777215, то: MEDIUMTEXT Если длина => 16777216 и =< 2147483647, то: LONGTEXT |
|
UINT1 |
UNSIGNED TINYINT |
|
UINT2 |
UNSIGNED SMALLINT |
|
UINT4 |
UNSIGNED INTEGER |
|
UINT8 |
UNSIGNED BIGINT |
|
WSTRING |
Если длина => 1 и =< 8095, то: VARCHAR (Length) Если длина => 8096 и =< 65535, то: TEXT Если длина => 65536 и =< 16777215, то: MEDIUMTEXT Если длина => 16777216 и =< 2147483647, то: LONGTEXT |
|
BLOB |
Когда включен параметр Разрешить неограниченный размер LOB:
Когда включен параметр Ограничить размер LOB до:
Для получения дополнительных сведений об ограничении размера LOB см. раздел Metadata. |
|
NCLOB |
Когда включен параметр Разрешить неограниченный размер LOB:
Когда включен параметр Ограничить размер LOB до:
Для получения дополнительных сведений об ограничении размера LOB см. раздел Metadata. |
|
CLOB |
Когда включен параметр Разрешить неограниченный размер LOB:
Когда включен параметр Ограничить размер LOB до:
Для получения дополнительных сведений об ограничении размера LOB см. раздел Metadata. |