Резервное копирование ClickHouse без Backup Wrapper
В данном разделе описано, как производить резервное копирование СУБД ClickHouse с помощью утилиты clickhouse-backup.
| Дополнительно с возможностями утилиты clickhouse-backup вы можете ознакомиться в официальной документации. |
| Все действия необходимо производить на физическом сервере или виртуальной машине, на которых развернута база данных PostgreSQL. |
Требования
-
Актуальная версия базы данных ClickHouse.
-
S3-совместимое хранилище для хранения резервных копий, например: MinIO, AWS S3, Yandex Object Storage.
Установка и настройка утилиты clickhouse-backup
Установка утилиты состоит из следующих этапов:
Установка утилиты clickhouse-backup
Чтобы установить утилиту clickhouse-backup:
-
Скачайте и разархивируйте дистрибутив программы Backup Wrapper, выполнив команды:
wget https://files.rvision.ru/platform/6dfaa56c92a665a855a9/backup-wrapper-1.0.0.tar.gz tar -xzvf backup-wrapper-1.0.0.tar.gz cd backup-wrapper-1.0.0В архиве программы Backup Wrapper содержится бинарный файл актуальной версии утилиты clickhouse-backup. Рекомендуется использовать данный вариант установки. -
Установите утилиту clickhouse-backup, выполнив команды:
mv clickhouse-backup /usr/local/bin/ chmod +x /usr/local/bin/clickhouse-backup
|
Также вы можете установить утилиту clickhouse-backup из официального источника, выполнив команды:
Здесь:
|
Настройка конфигурации clickhouse-backup
Чтобы настроить конфигурацию clickhouse-backup:
-
Создайте файл
config.ymlв директории/etc/clickhouse-backup/со следующим содержимым:general: disable_progress_bar: true backups_to_keep_local: 0 backups_to_keep_remote: 0 remote_storage: s3 clickhouse: host: localhost port: 9000 username: <username> password: "<password>" skip_tables: - system.* - INFORMATION_SCHEMA.* s3: access_key: "<access_key>" secret_key: "<secret_key>" bucket: "backups" endpoint: "<aws_endpoint>" region: "<aws_region>" path: "clickhouse/prod" force_path_style: true compression_format: tar compression_level: 1Здесь:
-
<username>— имя пользователя для работы с резервными копиями. -
<password>— пароль пользователя для работы с резервными копиями. -
<access_key>— идентификатор ключа доступа к S3-совместимому хранилищу. -
<secret_key>— секретный ключ доступа к S3-совместимому хранилищу. -
<aws_endpoint>— URL-адрес для подключения к S3-совместимому хранилищу, например,http://minio:9000. -
<aws_region>— код региона, в котором развернуты и выполняются ваши сервисы и функции AWS, например,ru-central1-a.
-
-
Измените права доступа к файлу
config.yml, выполнив команду:chmod 600 /etc/clickhouse-backup/config.yml
Резервное копирование ClickHouse
Чтобы настроить резервное копирование:
-
Создайте файл
ch-backup.shв директорииusr/local/bin/со следующим содержимым:#!/bin/bash set -euo pipefail LOG="/var/log/ch-backup.log" exec >> "$LOG" 2>&1 echo "=== $(date '+%Y-%m-%d %H:%M:%S') Starting backup ===" BACKUP_NAME="backup-$(date +%Y-%m-%dT%H-%M-%S)" DAY_OF_WEEK=$(date +%u) # 1=Mon, 7=Sun # Определяем тип бэкапа. if [ "$DAY_OF_WEEK" -eq 1 ]; then echo "Creating FULL backup: $BACKUP_NAME" clickhouse-backup create_remote "$BACKUP_NAME" else # Находим последнюю полную резервную копию (без --diff-from-remote в metadata). LAST_FULL=$(clickhouse-backup list remote --json 2>/dev/null | \ jq -r '[.[] | select(.required == "")] | sort_by(.creation_date) | last | .name // empty') if [ -z "$LAST_FULL" ]; then echo "No FULL backup found, creating FULL: $BACKUP_NAME" clickhouse-backup create_remote "$BACKUP_NAME" else echo "Creating DIFF backup from $LAST_FULL: $BACKUP_NAME" clickhouse-backup create_remote "$BACKUP_NAME" --diff-from-remote="$LAST_FULL" fi fi echo "=== $(date '+%Y-%m-%d %H:%M:%S') Backup completed ===" -
Измените права доступа к файлу
ch-backup.sh, выполнив команду:chmod +x /usr/local/bin/ch-backup.sh -
Настройте планировщик Cron для автоматизации резервного копирования, выполнив команду:
echo '<cron_expression> root /usr/local/bin/ch-backup.sh' | sudo tee /etc/cron.d/ch-backupЗдесь:
-
<cron_expression>— cron-выражение, определяющее расписание запусков clickhouse-backup. Например,0 3 * * *— резервные копии будут создаваться ежедневно в 03:00.Чтобы составить cron-выражение, можно воспользоваться генератором, например, crontab.guru.
-
|
Вы можете проверить список созданных резервных копий, выполнив команду:
|
Восстановление из резервной копии
Восстановление из резервной копии описано в разделе Восстановление из резервных копий.
Была ли полезна эта страница?