Копирование журналов и логов
В Astra-monitoring используется ClickHouse для хранения пользовательских данных логов и событий.
ClickHouse поддерживает несколько методов резервного копирования. В этой документации рассмотрим процесс бэкапа для развертывания через Docker Compose с использованием:
clickhouse-backup (официальный инструмент для бэкапов)
Встроенных функций ClickHouse (FREEZE и COPY)
Подготовка к бэкапу docker-compose
Убедитесь, что у вас есть доступ к хосту с ClickHouse
Проверьте конфигурацию в docker-compose.yml:
services: clickhouse: volumes: - ./clickhouse/data:/var/lib/clickhouse - ./clickhouse/config/config.xml:/etc/clickhouse-server/config.xml:ro - ./clickhouse/init:/docker-entrypoint-initdb.d
Запомните пути ./clickhouse/data и /path/to/config
Установите утилиту clickhouse-backup:
Создайте конфигурационный файл для clickhouse-backup:
mkdir -p /etc/clickhouse-backup cat > /etc/clickhouse-backup/config.yml <<EOL clickhouse: username: default password: "" host: localhost port: 9000 data_path: "/var/lib/clickhouse" skip_tables: - system.* backup: path: "/var/lib/clickhouse/backup" compression_format: tar # Для инкрементальных бэкапов incremental_by_partition: true EOL
Резервное копирование docker-compose
При разворачивании astra-monitoring через docker-compose в директорию добавлен готовый скрипт бэкапа clickhouse.
Создать директорию для бэкапов:
Указать путь в скрипте
ch-backup.sh
:Настроить расписание в cron:
Полное резервное копирование docker-compose
Способ 1: Использование clickhouse-backup
Создайте директорию для бэкапов:
Выполните полный бэкап:
Проверьте список бэкапов:
Способ 2: Ручной бэкап с FREEZE
Подключитесь к ClickHouse:
Для каждой таблицы выполните:
Скопируйте данные:
Инкрементальное резервное копирование
Использование clickhouse-backup
Создайте директорию для инкрементальных бэкапов:
Выполните инкрементальный бэкап:
docker run --rm \ -v ./clickhouse/data:/var/lib/clickhouse \ -v /backup/clickhouse/incremental:/var/lib/clickhouse/backup \ -v /etc/clickhouse-backup:/etc/clickhouse-backup \ --network clickhouse_network \ altinity/clickhouse-backup create incremental_backup_$(date +%Y-%m-%d_%H-%M-%S) --diff-from=full_backup_2025-01-01
Использование партиций
Определите новые партиции:
Скопируйте только новые партиции:
Восстановление из бэкапа docker-compose
Способ 1: Использование clickhouse-backup
Остановите запись в ClickHouse (если возможно)
Восстановите полный бэкап:
Для инкрементального восстановления сначала восстановите полный бэкап, затем:
Способ 2: Ручное восстановление
Скопируйте данные из бэкапа в директорию detached:
Подключитесь к ClickHouse и выполните:
Автоматизация бэкапов docker-compose
Создайте скрипт для полного бэкапа (/usr/local/bin/clickhouse_backup_full.sh):
#!/bin/bash BACKUP_DIR="/backup/clickhouse/full" DATE=$(date +%Y-%m-%d_%H-%M-%S) docker run --rm \ -v ./clickhouse/data:/var/lib/clickhouse \ -v $BACKUP_DIR:/var/lib/clickhouse/backup \ -v /etc/clickhouse-backup:/etc/clickhouse-backup \ --network clickhouse_network \ altinity/clickhouse-backup create full_$DATE # Ротация бэкапов (храним 7 последних) ls -dt $BACKUP_DIR/full_* | tail -n +8 | xargs rm -rf
Создайте скрипт для инкрементального бэкапа (/usr/local/bin/clickhouse_backup_incremental.sh):
#!/bin/bash BACKUP_DIR="/backup/clickhouse/incremental" DATE=$(date +%Y-%m-%d_%H-%M-%S) LAST_FULL=$(ls -dt /backup/clickhouse/full/full_* | head -n1 | xargs basename) docker run --rm \ -v ./clickhouse/data:/var/lib/clickhouse \ -v $BACKUP_DIR:/var/lib/clickhouse/backup \ -v /etc/clickhouse-backup:/etc/clickhouse-backup \ --network clickhouse_network \ altinity/clickhouse-backup create incremental_$DATE --diff-from=$LAST_FULL # Ротация бэкапов (храним 30 последних) ls -dt $BACKUP_DIR/incremental_* | tail -n +31 | xargs rm -rf
Настройте cron:
Резервное копирование helm
В astra-monitoring при установке в кластер Kubernetes предусмотрено создание автоматических резервных копий базы данных ClickHouse (CronJob).
Параметры резервного копирования:
Расписание: ежедневно в 2:00 UTC
Полные резервные копии создаются каждую неделю (1-й, 8-й и т.д. день)
Инкрементальные копии создаются между полными бэкапами
Глубина восстановления определяется параметром
base_backup_copies_number
:1
- восстановление за 7 дней2
- восстановление за 14 дней
Хранилище: PVC Kubernetes
pvc-{{ $.Release.Name }}-clickhouse-backup
Конфигурация работы сервиса в values.yaml:
clickhouse:
# Включить регулярный бекап бд
db_backup_enabled: "true"
# Название и путь до образа
db_backup_image: registry.astralinux.ru/am/ch-backup-db
# Версия образа
db_backup_tag: 0.21
# Количество хранимых базовых бекапов
base_backup_copies_number: 1
# Таймаут для подключения к инстансу бд (минуты)
db_management_timeout: 5
# Порт для подключения к инстансу бд
db_management_port: 9000