Backup Service
Backup Service
Обзор
Сервис Backup предоставляет высокоуровневую абстракцию для выполнения команд BACKUP и RESTORE в ClickHouse. Он отвечает за формирование SQL-запросов, валидацию параметров и получение статуса операций.
Архитектура
graph TD
subgraph "Система"
A[RabbitMQ] --> B{Backup Handler};
B --> C[Backup Manager];
C --> D[ClickHouse];
end
subgraph "Взаимодействие"
E[API Gateway] --> A;
D --> F[S3 Storage];
end- Backup Handler: Принимает задачи из RabbitMQ (
create_backup,restore_backupи т.д.). - Backup Manager: Формирует и выполняет SQL-запросы
BACKUP/RESTORE. - ClickHouse: Выполняет операции резервного копирования и восстановления.
- S3 Storage: Хранит файлы резервных копий.
Функциональность
1. Создание бэкапа (create_backup)
Создает резервную копию базы данных или таблицы в S3.
Параметры:
scope:databaseилиtable.database: Имя базы данных.table: Имя таблицы (еслиscope=table).backup_path: Путь в S3 для сохранения бэкапа.access_key,secret_key: Ключи доступа к S3.
2. Восстановление из бэкапа (restore_backup)
Восстанавливает базу данных или таблицу из резервной копии в S3.
Параметры:
backup_id: ID операции восстановления.scope,database,table: Аналогичноcreate_backup.backup_path,access_key,secret_key: Аналогичноcreate_backup.overwrite:true, если нужно перезаписать существующие данные.
3. Получение списка бэкапов (list_backups)
Возвращает список недавних операций резервного копирования.
4. Получение информации о бэкапе (get_backup)
Возвращает детальную информацию о конкретной операции по ее ID.
Использование
Задачи отправляются в RabbitMQ в формате JSON.
Пример: Создание бэкапа
{
"type": "create_backup",
"payload": {
"scope": "database",
"database": "quotes",
"backup_path": "s3://my-bucket/backups/quotes_backup_1",
"access_key": "...",
"secret_key": "..."
}
}
Пример: Восстановление
{
"type": "restore_backup",
"payload": {
"backup_id": "restore-op-123",
"request": {
"scope": "database",
"database": "quotes_restored",
"backup_path": "s3://my-bucket/backups/quotes_backup_1",
"access_key": "...",
"secret_key": "...",
"overwrite": true
}
}
}
Настройка
Сервис Backup не требует специальной конфигурации в config.yaml, так как все параметры (включая ключи S3) передаются в теле задачи. Единственное требование — наличие рабочего соединения с ClickHouse.