Перейти к основному содержанию
Движок MySQL позволяет выполнять запросы SELECT и INSERT к данным, которые хранятся на удалённом сервере MySQL.

Создание таблицы

См. подробное описание запроса CREATE TABLE. Структура таблицы может отличаться от структуры исходной таблицы MySQL:
  • Имена столбцов должны совпадать с именами в исходной таблице MySQL, но можно использовать только часть этих столбцов и в любом порядке.
  • Типы столбцов могут отличаться от типов в исходной таблице MySQL. ClickHouse пытается преобразовать значения в типы данных ClickHouse.
  • Настройка external_table_functions_use_nulls определяет, как обрабатывать столбцы Nullable. Значение по умолчанию: 1. Если установлено значение 0, функция таблицы не создаёт столбцы типа Nullable и вместо NULL выполняет вставку значений по умолчанию. Это также применимо к значениям NULL внутри массивов.
Параметры движка
  • host:port — адрес сервера MySQL.
  • database — имя удалённой базы данных.
  • table — имя удалённой таблицы.
  • user — пользователь MySQL.
  • password — пароль пользователя.
  • replace_query — флаг, преобразующий запросы INSERT INTO в REPLACE INTO. Если replace_query=1, запрос заменяется.
  • on_duplicate_clause — выражение ON DUPLICATE KEY on_duplicate_clause, которое добавляется к запросу INSERT. Пример: INSERT INTO t (c1,c2) VALUES ('a', 2) ON DUPLICATE KEY UPDATE c2 = c2 + 1, где on_duplicate_clause — это UPDATE c2 = c2 + 1. См. документацию MySQL, чтобы узнать, какие on_duplicate_clause можно использовать с секцией ON DUPLICATE KEY. Чтобы указать on_duplicate_clause, нужно передать 0 в параметр replace_query. Если одновременно передать replace_query = 1 и on_duplicate_clause, ClickHouse сгенерирует исключение.
Аргументы также можно передавать с помощью именованных коллекций. В этом случае host и port следует указывать отдельно. Этот подход рекомендуется для продакшн-среды. Простые условия WHERE, такие как =, !=, >, >=, <, <=, выполняются на сервере MySQL. Остальные условия и ограничение выборки LIMIT выполняются в ClickHouse только после завершения запроса к MySQL. Поддерживается несколько реплик, которые должны быть перечислены через |. Например:

Пример использования

Создайте таблицу в MySQL:
Создайте таблицу в ClickHouse, используя обычные аргументы:
Или с помощью именованных коллекций:
Получение данных из таблицы MySQL:

Настройки

Настройки по умолчанию не очень эффективны, поскольку при них даже не переиспользуются соединения. Эти настройки позволяют увеличить число запросов, выполняемых сервером в секунду.

connection_auto_close

Позволяет автоматически закрывать соединение после выполнения запроса, то есть отключать его повторное использование. Возможные значения:
  • 1 — автоматическое закрытие соединения разрешено, поэтому его повторное использование отключено
  • 0 — автоматическое закрытие соединения не разрешено, поэтому его повторное использование включено
Значение по умолчанию: 1.

connection_max_tries

Задаёт число повторных попыток в пуле с failover. Возможные значения:
  • Положительное целое число.
  • 0 — Для пула с failover повторные попытки не выполняются.
Значение по умолчанию: 3.

connection_pool_size

Размер пула соединений (если все соединения заняты, запрос будет ждать, пока одно из них не освободится). Возможные значения:
  • Положительное целое число.
Значение по умолчанию: 16.

connection_wait_timeout

Тайм-аут (в секундах) ожидания свободного соединения (если уже имеется connection_pool_size активных соединений), 0 — не ждать. Возможные значения:
  • Положительное целое число.
Значение по умолчанию: 5.

connect_timeout

Тайм-аут подключения (в секундах). Возможные значения:
  • Положительное целое число.
Значение по умолчанию: 10.

read_write_timeout

Тайм-аут операций чтения/записи (в секундах). Возможные значения:
  • Положительное целое число.
Значение по умолчанию: 300.

enable_compression

Включает сжатие для соединения по протоколу MySQL. Значение по умолчанию: false. Этот параметр применяется к:
  • движку таблицы MySQL;
  • движку базы данных MySQL;
  • табличной функции mysql;
  • именованным коллекциям, используемым в интеграциях MySQL.
Когда этот параметр включен, ClickHouse запрашивает сжатие для соединения. Пример:

См. также

Последнее изменение 2 июля 2026 г.