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

Восстановление репликации ClickHouse: Пошаговое руководство для ReplicatedMergeTree и ReplicatedCollapsingMergeTree

Пошаговая инструкция по восстановлению репликации ClickHouse для таблиц ReplicatedCollapsingMergeTree и ReplicatedMergeTree, а также добавлению и синхронизации данных с другого сервера или из бэкапа базы

1. Создание таблиц и настройка репликации

Так как таблицы с движком ReplicatedCollapsingMergeTree не поддерживают восстановление с помощью RESTORE, необходимо вручную создать их на каждом сервере с одинаковым DDL:

CREATE TABLE database.mytable (
    id UInt64,
    event_time DateTime,
    status String,
    sign Int8
) ENGINE = ReplicatedCollapsingMergeTree('/clickhouse/tables/{shard}/database/mytable', '{replica}', sign)
PARTITION BY toYYYYMM(event_time)
ORDER BY (event_time, id);

При этом {shard} и {replica} должны быть заменены на соответствующие параметры кластера.

2. Перемещение данных в каталог detached

Скопировать и поместить parts (части данных) в каталог detached. Данные можно взять из бэкапа или с другого кластера:

rsync -avz /backup/clickhouse/mytable/ /var/lib/clickhouse/data/database/mytable/detached/

Проверить, что файлы успешно скопированы:

ls -l /var/lib/clickhouse/data/database/mytable/detached/

3. Выполнение команд для подключения частей данных

Чтобы сформировать SQL-запросы для подключения частей:

for part in /var/lib/clickhouse/data/database/mytable/detached/*; do
    part_name=$(basename "$part")
    echo "ALTER TABLE database.mytable ATTACH PART '$part_name';"
done

Эта команда выведет SQL-запросы, но не выполнит их.

Если всё выглядит корректно, можно запустить выполнение команд:

for part in /var/lib/clickhouse/data/database/mytable/detached/*; do
    part_name=$(basename "$part")
    clickhouse-client --host=localhost --query "ALTER TABLE database.mytable ATTACH PART '$part_name';"
done

4. Отладка и проверка

Если в каталоге detached нет файлов, команда ничего не выведет. Для отладки можно добавить вывод обрабатываемых частей:

for part in /var/lib/clickhouse/data/database/mytable/detached/*; do
    [ -d "$part" ] || continue  # Пропустить, если это не папка
    part_name=$(basename "$part")
    echo "Processing: $part_name"
    clickhouse-client --host=localhost --query "ALTER TABLE database.mytable ATTACH PART '$part_name';"
done

Так можно отследить, какие части действительно обрабатываются.

5. Проверка успешности восстановления

После выполнения всех команд проверить, что данные восстановились корректно:

SELECT count(*) FROM database.mytable;

При необходимости выполнить OPTIMIZE TABLE:

OPTIMIZE TABLE database.mytable FINAL;

Комментарии

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

Настройка и подключение 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 10: Подключение и Настройка Архивных Репозиториев для Работы

Актуальные рабочие репозитории для Debian 10: подключение и исправление проблем Debian 10 "Buster" официально устарел, и его репозитории были перемещены в архив. Это означает, что стандартные зеркала больше не содержат пакеты для данной версии. Однако можно продолжать использовать Debian 10, подключив архивные репозитории. В этой статье рассмотрим, как правильно настроить систему и устранить возможные проблемы. 1. Подключение архивных репозиториев для Debian 10 Шаг 1: Редактирование файла sources.list Для работы с пакетами необходимо обновить список репозиториев в файле /etc/apt/sources.list . Откройте его с правами суперпользователя: sudo nano /etc/apt/sources.list Замените его содержимое на следующее: deb http://archive.debian.org/debian buster main contrib non-free deb http://archive.debian.org/debian-security buster/updates main contrib non-free deb http://archive.debian.org/debian buster-updates main contrib non-free Сохраните изменения ( Ctrl + X , затем Y и Enter ). Ш...

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 ...