К основному контенту

Миграция c Zookepeer на Clickhouse Keeper

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 — миграция прошла успешно.

Комментарии

Популярные сообщения из этого блога

Настройка и подключение IPSec в Windows

Настройка IPSec на Windows включает в себя создание правил безопасности и фильтров для защиты сетевого трафика. Ниже — пошаговое руководство. Включение службы IPSec Перед настройкой убедитесь, что служба IPSec Policy Agent запущена: Нажмите Win + R , введите services.msc и нажмите Enter . Найдите IPsec Policy Agent . Если она не работает, нажмите ПКМ → Свойства . Установите Тип запуска: Автоматически , затем нажмите Запустить . Настройка политики IPSec через «Локальную политику безопасности» Нажмите Win + R , введите secpol.msc , нажмите Enter . Перейдите в Политики IP-безопасности в локальном компьютере . В правом окне нажмите Создать политику IP-безопасности → Далее . Укажите имя политики (например, "IPSec VPN"), снимите флажок Активировать правило по умолчанию , нажмите Далее . Нажмите Добавить , чтобы создать правило. Транспортный или туннельный режим : Если IPSec для защищенной локальной сети – выберите Транспортный режим . Если IPSec для VPN – выберите Туннельн...

Debian 11: настройка сети и имени хоста /etc/network/interfaces, NetworkManager и systemd-networkd

Как настроить сеть в Debian 11? 🔹 1. Настройка через /etc/network/interfaces (Традиционный способ) Этот метод удобен для серверов и минималистичных систем без NetworkManager . Открываем конфигурационный файл: sudo nano /etc/network/interfaces 🔹 DHCP (Автоматическое получение IP) auto eth0 iface eth0 inet dhcp 🔹 Статический IP auto eth0 iface eth0 inet static address 192.168.1.100 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 8.8.8.8 8.8.4.4 🔹 Wi-Fi (WPA2) auto wlan0 iface wlan0 inet dhcp wpa-ssid "Название_сети" wpa-psk "Пароль" 📌 Применение изменений: sudo systemctl restart networking 🔹 2. Настройка через NetworkManager (Удобно для десктопов) Проверяем статус: systemctl status NetworkManager Если не установлен, ставим: sudo apt install network-manager sudo systemctl enable --now NetworkManager 🔹 Графический интерфейс (TUI) nmtui Выберите Edit a connection , настройте параметры и сохраните. 🔹 Консольный способ ( nmcli ...

Как найти и изменить репозитарии для CentOS 8

В CentOS 8 официальные репозитории (BaseOS, AppStream и Extras) управляются с помощью dnf и файлов конфигурации в /etc/yum.repos.d/ . Вот как их найти и изменить: 1. Просмотр текущих репозиториев dnf repolist Если нужно увидеть подробную информацию: dnf repolist all 2. Изменение репозиториев Файлы конфигурации репозиториев находятся в /etc/yum.repos.d/ . Например, основной репозиторий может быть в файле CentOS-AppStream.repo . Открыть его можно так: nano /etc/yum.repos.d/CentOS-AppStream.repo Внутри можно изменить: enabled=1 → включает репозиторий enabled=0 → отключает репозиторий baseurl= или mirrorlist= → задать новый источник пакетов 3. Замена недоступных репозиториев CentOS 8 достиг конца поддержки , и официальные зеркала больше не работают. Вместо них можно подключить Vault или AlmaLinux/Rocky Linux : Использование архивного репозитория CentOS Vault Создайте резервную копию старых .repo файлов: mkdir /root/repo-backup && mv /etc/yum.repos.d/*.repo /root/repo-backu...