Это старая версия документа!
Резервное копирование PGVector
Описание
Автоматизированный скрипт для создания резервных копий PGVector с поддержкой:
- Дампов базы данных PostgreSQL
- Архивирования файлов данных
- Автоматической очистки старых бекапов
- Мониторинга дискового пространства
- Уведомлений в Telegram
Требования
- Docker и Docker Compose
- Bash 4.0+
- Утилиты:
tar,gzip,find,curl - Права root или sudo
Установка
1. Создание директорий
# Создаем необходимые директории sudo mkdir -p /opt/scripts sudo mkdir -p /opt/backups/pgvector # Устанавливаем права доступа sudo chmod 755 /opt/scripts sudo chmod 755 /opt/backups
2. Создание скрипта
sudo nano /opt/scripts/pgvector-backup.sh
Скопируйте содержимое скрипта и настройте переменные:
# Пути COMPOSE_FILE="/opt/pgvector/docker-compose.yml" PGVECTOR_DIR="/opt/pgvector" BACKUP_DIR="/opt/backups/pgvector" # База данных DB_CONTAINER="pgvector_postgres" DB_USER="postgres" DB_PASSWORD="ваш_пароль_здесь" DB_NAME="postgres" # Retention RETENTION_DAYS=10
3. Установка прав выполнения
sudo chmod +x /opt/scripts/pgvector-backup.sh
Настройка Telegram уведомлений
1. Создайте бота через @BotFather 2. Получите токен бота и chat_id 3. Замените в скрипте:
curl -s -X POST "https://api.telegram.org/bot[ВАШ_ТОКЕН]/sendMessage" \ -d chat_id="[ВАШ_CHAT_ID]" \ -d text="$TELEGRAM_MESSAGE" > /dev/null
Автоматизация
Настройка Cron
# Редактируем crontab sudo crontab -e # Добавляем задание - ежедневно в 3:00 0 3 * * * /opt/scripts/pgvector-backup.sh >> /var/log/pgvector-backup.log 2>&1
Использование
Ручной запуск
sudo /opt/scripts/pgvector-backup.sh
Проверка бекапов
# Список бекапов ls -la /opt/backups/pgvector/ # Просмотр лога tail -f /opt/backups/pgvector/backup.log
Структура бекапов
/opt/backups/pgvector/ ├── pgvector_backup_20250830_201456.tar.gz # Основной архив ├── backup.log # Лог операций └── [старые бекапы...]
Содержимое архива:
pgvector_backup_YYYYMMDD_HHMMSS_database.sql- дамп БДpostgres_data/- данные PostgreSQLpgadmin_data/- данные PgAdmindocker-compose.yml- конфигурация
Восстановление
Полное восстановление
# Останавливаем сервис cd /opt/pgvector docker-compose down # Создаем бекап текущего состояния sudo mv postgres_data postgres_data.backup.$(date +%Y%m%d_%H%M%S) # Извлекаем архив sudo tar -xzf /opt/backups/pgvector/pgvector_backup_YYYYMMDD_HHMMSS.tar.gz # Запускаем сервис docker-compose up -d
Восстановление только БД
# Извлекаем SQL дамп tar -xzf backup.tar.gz pgvector_backup_YYYYMMDD_HHMMSS_database.sql # Восстанавливаем docker exec -i pgvector_postgres psql -U postgres -d postgres < pgvector_backup_YYYYMMDD_HHMMSS_database.sql
Мониторинг
При успешном бекапе приходит уведомление:
✅ PGVector backup completed 📁 Backup: pgvector_backup_20250830_201456 (45M) 💾 DB dump: 12M 📊 Total backups: 7 💿 Disk space: 2.1G свободно из 10G (79% занято)
Предупреждения при заполнении диска:
⚠️ ATTENTION: Disk >80% full ⚠️ WARNING: Disk >90% full!
Устранение проблем
Контейнеры не запущены
docker-compose ps docker-compose up -d
Ошибка дампа БД
# Проверяем доступность БД docker exec pgvector_postgres pg_isready -U postgres # Проверяем логи docker logs pgvector_postgres
Нет места на диске
# Проверяем использование df -h /opt/backups # Удаляем старые бекапы find /opt/backups -name "*backup*.tar.gz" -mtime +5 -delete
Безопасность
# Устанавливаем правильные права sudo chmod 700 /opt/scripts/pgvector-backup.sh sudo chown root:root /opt/scripts/pgvector-backup.sh # Защищаем директорию бекапов sudo chmod 755 /opt/backups sudo chown root:root /opt/backups
Документация обновлена: currentuser i/