Спецификация и руководство
Руководство по развертыванию и настройке автоматического демона бэкапов PostgreSQL для BitEvo.
### 1. Архитектурный паттерн резервного копирования
Для обеспечения отказоустойчивости СУБД в автономных средах резервные копии должны делаться без прямого сетевого доступа к хост-системе (чтобы уменьшить площадь атаки) и сохраняться в изолированное синхронизируемое хранилище.
### 2. Алгоритм работы демона
1. **Проверка контейнера**: Скрипт запрашивает статус контейнера `bitevo_postgres`. Если он остановлен, производится попытка запуска через `docker compose up -d postgres`.
2. **Экспорт (pg_dump)**: База данных `bitevo` экспортируется с помощью утилиты `pg_dump` через безопасный вызов `docker exec`.
3. **Сжатие и Хранение**: Полученный SQL-файл упаковывается с помощью `gzip` и сохраняется в каталог `C:\Users\coins\My Drive\Server backup\postgres_backups\`.
4. **Ротация (Retention)**: Для предотвращения переполнения диска скрипт сортирует файлы бэкапов по дате создания и удаляет все, кроме последних 10.
5. **Журналирование**: Успех/неудача логируются в `postgres_backup_history.jsonl`, критические ошибки записываются в `proof_ledger.jsonl`.
### 3. Автоматизация в Windows Task Scheduler
Для автоматического запуска используется планировщик Windows. Регистрация задачи выполняется через PowerShell-сценарий `BIN/setup_postgres_backup_cron.ps1`, который настраивает интерактивный запуск от имени текущего пользователя раз в сутки.
### 1. Архитектурный паттерн резервного копирования
Для обеспечения отказоустойчивости СУБД в автономных средах резервные копии должны делаться без прямого сетевого доступа к хост-системе (чтобы уменьшить площадь атаки) и сохраняться в изолированное синхронизируемое хранилище.
### 2. Алгоритм работы демона
1. **Проверка контейнера**: Скрипт запрашивает статус контейнера `bitevo_postgres`. Если он остановлен, производится попытка запуска через `docker compose up -d postgres`.
2. **Экспорт (pg_dump)**: База данных `bitevo` экспортируется с помощью утилиты `pg_dump` через безопасный вызов `docker exec`.
3. **Сжатие и Хранение**: Полученный SQL-файл упаковывается с помощью `gzip` и сохраняется в каталог `C:\Users\coins\My Drive\Server backup\postgres_backups\`.
4. **Ротация (Retention)**: Для предотвращения переполнения диска скрипт сортирует файлы бэкапов по дате создания и удаляет все, кроме последних 10.
5. **Журналирование**: Успех/неудача логируются в `postgres_backup_history.jsonl`, критические ошибки записываются в `proof_ledger.jsonl`.
### 3. Автоматизация в Windows Task Scheduler
Для автоматического запуска используется планировщик Windows. Регистрация задачи выполняется через PowerShell-сценарий `BIN/setup_postgres_backup_cron.ps1`, который настраивает интерактивный запуск от имени текущего пользователя раз в сутки.