Миграция исторических данных из Postgres/Mysql БД в ClickHouse
Clickhouse имеет встроенные движки для популярных баз данных которые можно использовать для импорта данных.
Миграцию можно выполнить через выполнение SQL команд на Clickhouse сервер, ниспользуя утилиту clickhouse-client.
Мигрировать необходимо 6 основных таблиц:
- 
четыре таблицы истории: - history
- history_uint
- history_str
- history_text
 
- 
две таблицы трендов - trends
- trends_uint
 
Примечание
В Glaber в ClickHouse и текстовые и строковые данные хранятся в единой таблице history_str
Ниже приведена последовательность команд для миграции с Postgres в СLI clickhosue:
clickhouse-client --password glaber
Примечание
В последовательности SQL команд исправьте данные для подключения к серверу Postgtes: имя пользователя и пароль, название базы и именование схемы.
Сначала нужно подключить текущую SQL базу в PostgreSQL к Clickhouse:
create database zabbix_history ENGINE = PostgreSQL('localhost:5432','zabbix_db_name', 'zabbix_db_user', 'zabbix_db_password', 'zabbix_db_schema');
mysql команды будут аналогичными, но дополнительно нужно будет поменять название движка БД на MySQL, поле схемы указывать не нужною.
Далаее нужно залить 7 основных таблиц с историей Zabbix в 6 таблиц в базе Glaber
INSERT INTO glaber.history_dbl SELECT
    toDate(clock) AS day,
    itemid,
    clock,
    '',
    '',
    ns,
    value
FROM zabbix_history.history;
INSERT INTO glaber.history_uint SELECT
    toDate(clock) AS day,
    itemid,
    clock,
    '',
    '',
    ns,
    value
FROM zabbix_history.history_uint;
INSERT INTO glaber.history_str SELECT
    toDate(clock) AS day,
    itemid,
    clock,
    '',
    '',
    ns,
    value
FROM zabbix_history.history_str;
INSERT INTO glaber.history_str SELECT
    toDate(clock) AS day,
    itemid,
    clock,
    '',
    '',
    ns,
    value
FROM zabbix_history.history_text;
INSERT INTO glaber.history_log SELECT
    toDate(clock) AS day,
    itemid,
    clock,
    logeventid,
    source,
    severity,
    '',
    '',
    ns,
    value
FROM zabbix_history.history;
INSERT INTO glaber.trends_dbl SELECT
    toDate(clock) AS day,
    itemid,
    clock,
    value_min,
    value_max,
    value_avg,
    num,
    '',
    ''
FROM zabbix_history.trends;
INSERT INTO glaber.trends_uint SELECT
    toDate(clock) AS day,
    itemid,
    clock,
    value_min,
    value_max,
    value_avg,
    num,
    '',
    ''
FROM zabbix_history.trends_uint;
После заливки данных отключить базу PostgreSQL/MySQL:
drop database zabbix_history;
Примечание
Эта команда удалит только метаданные в Clickhouse o базе данных в PostgreSQL, отключит ее от Clickhouse. Сама база данных в PostgreSQL останется целой и никак изменена не будет.
Примечание
Метод работает для систем на базе PostgreSQL 12 и новее.
P.S: Инструкция составлена на основе данных, предоставленным пользователем @weduser.