https://clickhouse.com/docs/guides/sre/keeper/clickhouse-keeper#migration-from-zookeeper
Беспроблемная миграция из ZooKeeper в ClickHouse Keeper невозможна. Необходимо остановить кластер ZooKeeper, преобразовать данные и запустить ClickHouse Keeper. clickhouse-keeper-converter
Инструмент позволяет преобразовать логи и снимки ZooKeeper в снимки ClickHouse Keeper. Работает только с ZooKeeper версии выше 3.4. Шаги для миграции:
✅ Шаг 1: Остановите все узлы ZooKeeper
systemctl stop zookeeper
Если ZooKeeper не управляется через systemd — остановите процессы вручную на всех нодах ZooKeeper.
✅ Шаг 2 (рекомендовано): Принудительно создать консистентный снапшот
Найдите лидера ZooKeeper. Для этого подключитесь к каждой ноде ZooKeeper с помощью 4lw-команды stat
:
echo stat | nc 127.0.0.1 2181
Ищите строку:
Mode: leader
На лидере выполните рестарт ZooKeeper, чтобы он создал новый консистентный снапшот:
systemctl restart zookeeper # или ./zkServer.sh restart
Затем снова остановите ZooKeeper:
systemctl stop zookeeper
Остановить все ноды Сlickhouse-keeper
systemctl stop clickhouse-keeper
📦 Шаг 3: Запустите clickhouse-keeper-converter
на лидере
скопировать файлы Zookeeper на лидера
scp -r /var/lib/zookeeper/ root@ch1-keeper:/var/lib/
clickhouse-keeper-converter --zookeeper-logs-dir /var/lib/zookeeper/version-2 --zookeeper-snapshots-dir /var/lib/zookeeper/version-2 --output-dir /var/lib/clickhouse/coordination/snapshots
version-2
— это стандартный путь к данным ZooKeeper 3.4.8.
После выполнения команды в директории /var/lib/clickhouse/coordination/snapshots
появится сконвертированный снапшот.
📤 Шаг 4: Распространите снапшот на все ноды ClickHouse Keeper
Скопируйте файл снапшота во все ClickHouse Keeper узлы по пути, указанному в конфиге:
<snapshot_storage_path>/var/lib/clickhouse/coordination/snapshots</snapshot_storage_path>
Пример с scp
:
На других нодах удалить старые снапшеты из папки /var/lib/clickhouse/coordination/snapshots/
rm /var/lib/clickhouse/coordination/snapshots/*
scp /var/lib/clickhouse/coordination/snapshots/snapshot_XXXXX.bin root@ch2-keeper:/var/lib/clickhouse/coordination/snapshots/
scp /var/lib/clickhouse/coordination/snapshots/snapshot_XXXXX.bin root@ch3-keeper:/var/lib/clickhouse/coordination/snapshots/
Убедитесь, что права доступа к файлу соответствуют clickhouse
-пользователю.
🚀 Шаг 5: Запустите ClickHouse Keeper на всех узлах
Если ClickHouse Keeper используется как standalone:
systemctl start clickhouse-keeper
Если Keeper вшит в clickhouse-server
:
systemctl start clickhouse-server
📌 Важно:
Все ноды ClickHouse Keeper должны содержать один и тот же снапшот перед запуском.
Если одна из нод пуста, она может "перебить" кластер своим пустым состоянием и стать лидером.
Желательно запускать все ноды одновременно, чтобы не возникло split-brain-состояния.
🔍 Проверка:
После запуска Keeper можно проверить состояние:
clickhouse-keeper-client --host 127.0.0.1
ls /
Если вы видите знакомую структуру узлов ZooKeeper — миграция прошла успешно.
Комментарии
Отправить комментарий