Инструмент для создания слепка dev ClickHouse базы из рабочей. Работает по следующему принципу:
- У всех таблиц с партициями формата Ym ('202106', '202112', ....) будут скопированы только последние несколько партиций (определяется параметром monthDepths).
- Таблицы без партиций, либо с партициями в другом формате, будут перенесены полностью.
- Таблицы без данных (включая движки MySQL и т.п.), либо со старыми партициями, скопированы не будут, так же как не создастся автоматически схема (нужно будет выполнить вручную).
- PHP 7.4 и выше.
- Необходимо установить clickhouse-copier (часть пакета ClickHouse, а если таблицы включают Materialized поля, то на июнь 2021 ClickHouse нужно установить из git репозитория) https://clickhouse.tech/docs/ru/getting-started/install/
- Далее обязателен Apache Zookeeper https://zookeeper.apache.org. Если будет установлен из пакетов, то в любом случае необходимо скачать и распаковать файлы с официального сайта, т.к. они содержат необходимый файл zkCli.sh
- Создаём файл config/config.php по подобию config/config.php.example.
- Создаём файл config/zookeeper.xml по подобию config/zookeeper.xml.example.
- В корне проекта выполняем
composer install
.
bin/run.sh
Все партиции формата Ym позже текущего месяца скопируются один раз, далее будет перезагружаться партиция только за текущий месяц (логика в том, что данные из прошлого не дописываются в текущий момент). Во время работы скрипта создаются задания вида Zookeeper с именем вида /clickhouse-dev/task0.
Описания заданий можно узнать командой:
./zkCli.sh get /clickhouse-dev/task0/description
A текущий статус выполнения (поддерживается не всеми версиями clickhouse-copier):
./zkCli.sh get /clickhouse-dev/task0/status
Подобное описание конфигурации доступно на официальном сайте https://clickhouse.tech/docs/ru/operations/utilities/clickhouse-copier/.
Полезная статья, описывающая весь процесс пользования утилитой clickhouse-copier: https://altinity.com/blog/2018/8/22/clickhouse-copier-in-practice
- Возможность копирования всей таблицы на постоянной основе (например, аналитику по заказам, которая загружается и в прошлое при подключении интеграции к системе).