Перенос дампов ClickHouse

Перенос схемы ClickHouse (таблицы, словари, view) со «старого» сиджа на новый через команды ./yii transfer/*.

1. Экспорт схемы (на «старом» сидже)

./yii transfer/export-clickhouse-scheme

Создаёт дамп ClickHouse в файл:

console/runtime/clickhouse.sql

Метод не менялся.

Запустите команду на одном из «старых» сиджей, затем скачайте созданный файл на новый сидж по тому же пути (console/runtime/clickhouse.sql).

2. Импорт схемы (на новом сидже)

./yii transfer/import-clickhouse-scheme

Метод переработан: раньше он просто выполнял дамп, теперь работает в 3 этапа:

  1. Таблицы. Создаёт все таблицы. В каждый запрос добавляется IF NOT EXISTS, чтобы не падать с ошибкой, если таблица уже существует.
  2. Словари. Создаёт словари, подменяя source на актуальный конфиг Postgres. Также добавляется IF NOT EXISTS.
  3. View. Создаются в последнюю очередь — после таблиц и словарей. Раньше view выдавали ошибку, если создавались до таблицы, на которую ссылаются; теперь порядок корректный.

Postgres на другом сервере

Если Postgres и ClickHouse находятся на разных серверах, в конфиге Postgres должен быть указан реальный IP, а не localhost. Иначе словари будут ссылаться не туда.

3. Пересоздание словарей (при необходимости)

./yii transfer/recreate-clickhouse-dicts

Новый метод. Используйте его, если:

  • словари создавались из дампа до этого обновления; или
  • в конфиге не был указан IP сервера с Postgres.

После обновления конфига эта команда пересоздаёт словари корректно.


Источник: @Yuriy — процесс переноса дампов ClickHouse.