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