# Налаштування автоматичних бекапів PostgreSQL ## Огляд Цей документ описує налаштування автоматичних бекапів бази даних PostgreSQL для DAARION. ## Вимоги - PostgreSQL 12+ - Доступ до бази даних з правами `pg_dump` - Достатньо місця на диску для зберігання бекапів ## Встановлення ### 1. Створити директорію для бекапів ```bash sudo mkdir -p /var/backups/daarion sudo chown $USER:$USER /var/backups/daarion ``` ### 2. Скопіювати скрипт бекапу ```bash sudo cp scripts/backup_postgres.sh /usr/local/bin/backup_daarion.sh sudo chmod +x /usr/local/bin/backup_daarion.sh ``` ### 3. Налаштувати змінні оточення (опціонально) Якщо потрібно змінити параметри за замовчуванням, створіть файл `/etc/daarion-backup.conf`: ```bash DB_USER=daarion DB_NAME=daarion BACKUP_DIR=/var/backups/daarion RETENTION_DAYS=7 ``` І додайте в скрипт: ```bash source /etc/daarion-backup.conf ``` ### 4. Налаштувати cron Додати в crontab (запуск щогодини): ```bash crontab -e ``` Додати рядок: ``` 0 * * * * /usr/local/bin/backup_daarion.sh >> /var/log/daarion-backup.log 2>&1 ``` Або для запуску щодня о 2:00 ночі: ``` 0 2 * * * /usr/local/bin/backup_daarion.sh >> /var/log/daarion-backup.log 2>&1 ``` ### 5. Перевірити роботу Запустити вручну: ```bash /usr/local/bin/backup_daarion.sh ``` Перевірити, що файл створився: ```bash ls -lh /var/backups/daarion/ ``` ## Відновлення з бекапу ### З файлу .dump (custom format) ```bash pg_restore -U daarion -d daarion -c /var/backups/daarion/daarion_2024-01-01_12-00.dump ``` ### З SQL файлу (якщо використовується -Fp) ```bash psql -U daarion -d daarion < /var/backups/daarion/daarion_2024-01-01_12-00.sql ``` ## Завантаження в хмару (опціонально) ### Cloudflare R2 1. Встановити rclone: ```bash curl https://rclone.org/install.sh | sudo bash ``` 2. Налаштувати R2: ```bash rclone config ``` 3. Додати в скрипт бекапу: ```bash # Upload to R2 rclone copy "$BACKUP_FILE" "r2:daarion-backups/" --config /etc/rclone.conf ``` ### AWS S3 ```bash aws s3 cp "$BACKUP_FILE" s3://daarion-backups/ ``` ## Моніторинг Перевіряти логи: ```bash tail -f /var/log/daarion-backup.log ``` Налаштувати алерти при помилках (наприклад, через email або Telegram bot). ## Ротація бекапів Скрипт автоматично видаляє бекапи старіше 7 днів (за замовчуванням). Щоб змінити період зберігання, встановіть змінну `RETENTION_DAYS`: ```bash export RETENTION_DAYS=30 # Зберігати 30 днів ``` ## Розмір бекапів Типовий розмір бекапу для DAARION MVP: 10-50 MB (залежить від кількості даних). Для бази з 1000 агентів та 10000 повідомлень: ~20-30 MB. ## Безпека - Бекапи містять чутливі дані - Обмежити доступ до директорії бекапів: `chmod 700 /var/backups/daarion` - Шифрувати бекапи перед завантаженням в хмару - Не зберігати бекапи в публічних місцях ## Troubleshooting ### Помилка "permission denied" Перевірити права доступу до директорії: ```bash ls -ld /var/backups/daarion ``` ### Помилка "pg_dump: command not found" Додати PostgreSQL bin до PATH або використати повний шлях: ```bash /usr/bin/pg_dump -U daarion -Fc daarion > ... ``` ### Недостатньо місця на диску Перевірити вільне місце: ```bash df -h /var/backups ``` Очистити старі бекапи вручну: ```bash find /var/backups/daarion -type f -mtime +7 -delete ```