187 lines
4.3 KiB
Markdown
187 lines
4.3 KiB
Markdown
# Налаштування автоматичних бекапів 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
|
||
```
|
||
|
||
Додати рядок:
|
||
|
||
```cron
|
||
0 * * * * /usr/local/bin/backup_daarion.sh >> /var/log/daarion-backup.log 2>&1
|
||
```
|
||
|
||
Або для запуску щодня о 2:00 ночі:
|
||
|
||
```cron
|
||
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
|
||
```
|