Skip to content

# Налаштування автоматичних бекапів 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

1. Встановити rclone:

    curl https://rclone.org/install.sh | sudo bash

1. Налаштувати R2:

    rclone config

1. Додати в скрипт бекапу:

    # 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