Как стать автором
Обновить

СУБД Clickhouse от Яндекса. Резервное копирование с помощью утилиты clickhouse-backup

Время на прочтение4 мин
Количество просмотров12K

Привет Хабр, меня зовут Александр Архипов, и моя задача это показать как можно просто и легко настроить резервное копирование данных СУБД clickhouse разработанной компанией Яндекс. Я работаю devops инженером, и так как у нас в команде нет первоклассного DBA, недавно мне пришла задача, настроить резервное копирование данных. Пошел искать, гуглить, читать и смотреть видео:) Для всего этого, потребовалось не очень много времени, чтобы изучить новый инструмент, но все же, у нас его всегда мало. В этой статье я постараюсь понятно рассказать об утилите clickhouse-backup, надеясь на то, что тому кто пользуется этой СУБД или же только планирует внедрять у себя на проекте, и справится с этой задачей довольно быстро и легко.

Резервное копирование и восстановление часто являются последней дверью безопасности. Но если стратегия резервного копирования несовершенна, а метод восстановления недействителен, после случайного удаления данных, будет много проблем.

СУБД и её администрирование на первый взгляд может показаться немного сложным для понимания, но это плата за преимущества (скорость). Во всём остальном проблем она не доставляет, а наоборот помогает решать задачи, связанные с хранением и выборкой огромнейших объемов данных.

Ну что приступим в настройке Резервного копирования данных :

Установка двоичного файла:
wget https://github.com/AlexAkulov/clickhouse-backup/releases/download/v0.6.4/clickhouse-backup.tar.gz
Распаковать и использовать:

tar -xf clickhouse-backup.tar.gz
cp clickhouse-backup/clickhouse-backup /usr/local/bin/

установка rpm:
wget https://github.com/AlexAkulov/clickhouse-backup/releases/download/v0.6.0/clickhouse-backup-0.6.0-1.x86_64.rpm
rpm -ivh clickhouse-backup-0.6.0-1.x86_64.rpm

Просмотреть все элементы конфигурации по умолчанию:
clickhouse-backup default-config

Создадим директорию хранения конфигов.

mkdir -p /etc/clickhouse-backup/

Укажем параметры для подключения к нашей СУБД clickhouse:

cat > /etc/clickhouse-backup/config.yml << EOF
clickhouse:
username: default
password: "you_password"
host: localhost
port: 9000
data_path: "/var/lib/clickhouse"
general:
remote_storage: none
backups_to_keep_local: 7
backups_to_keep_remote: 31
EOF

После того, как указали значения сервера стоит проверить, можем ли мы подключиться к нашей СУБД clickhouse. Можно сделать это простым запросом:

clickhouse-backup tables

Команда выше выведет список таблиц из clickhouse. Если список есть, значит конфиг корректный.

В нашем случае,мы настраиваем локальное резервное копирование, исходя из этого нам нужно добавить в конфиг /etc/clickhouse-backup/config.yml дополнительную сроку: remote_storage: none
Строка говорит о том, что у нас нет какого-либо облачного хранилища. Если такое имеется, читаем дальше :)

В основном ошибка о недоступности облачного хранилища выглядит так:
Локально backup собран, но не загружен на хранилку.

Local backups:

  • 'backup' (created at 16-07-2021 09:21:38) Remote backups: 2021/07/16 09:24:59 InvalidParameter: 1 validation error(s) found.

  • minimum field size of 1, ListObjectsV2Input.Bucket.

Clickhouse-backup поддерживает загрузку и загрузку резервных копий из хранилища удаленных объектов (например, S3, GCS или IBM COS). Например, AWS S3, измените файл конфигурации /etc/clickhouse-backup/config.yml
s3:
Access_key:   
secret_key:   
Bucket:   
region: us-east-1
Path: "/some/path/in/bucket"
После того, как указаны параметры хранилища и сделано резервное копирование данных, можно загрузить свой backup, командой :
clickhouse-backup upload "backup-name"

# Создать резервную копию

1. Полная резервная копия базы данных:

clickhouse-backup create

Резервная копия хранится в каталоге /var/lib/clickhouse/backup. По умолчанию имя резервной копии - это временная метка. Вы можете вручную указать имя резервной копии. 

Например:

clickhouse-backup create test.backup-19072021

Резервная копия содержит два каталога:

  • Каталог 'metadata': содержит DDL SQL, необходимый для воссоздания

  • 'shadow' каталог: содержит данные, полученные в результате операций ALTER TABLE ... FREEZE.

2. Резервное копирование одной таблицы:

clickhouse-backup create [-t, --tables=<db>.<table>] <backup_name>

3. Резервное копирование нескольких таблиц.

clickhouse-backup create  -t caihao.test_restore_tab,caihao.ch1 ch_bak_2tab

#Просмотр файлов резервных копий
clickhouse-backup list
#
Удалить файл резервной копии
clickhouse-backup delete local "name-backup"
#Очистить временный файл резервной копии 
clickhouse-backup  clean

# Восстановление данных
clickhouse-backup restore "name_backup"
Некоторые параметры:

  • --table Восстанавливает только определенные таблицы, можно использовать обычные.

  • Например, для конкретной базы данных: --table = dbname. *

  • --schema Только восстановить структуру таблицы

  • --data Только восстановить данные


    # Политика хранения резервных копий
    2 параметра для управления политикой хранения резервной копии Backups_to_keep_local: 7 # Количество хранимых локальных резервных копий Backups_to_keep_remote: 31 # Количество удаленных резервных копий для хранения

Добавление в cron задачи резервного копирования:

vi /var/lib/clickhouse/scripts/backup-clickhouse.sh
#!/bin/bash
BACKUP_NAME=backup-clickhouse-$(date +%Y-%m-%d)
clickhouse-backup create $BACKUP_NAME
# /usr/bin/clickhouse-backup upload $BACKUP_NAME

Надеюсь, что эта небольшая статья, дала легкое понимание того, как работать с этой утилитой, всем спасибо, больше интересных и продуктивных задач :)

Теги:
Хабы:
+8
Комментарии2

Публикации

Истории

Работа

Ближайшие события