vm:pgvector:03-backup

Это старая версия документа!


Резервное копирование PGVector

Автоматизированный скрипт для создания резервных копий PGVector с поддержкой:

  • Дампов базы данных PostgreSQL
  • Архивирования файлов данных
  • Автоматической очистки старых бекапов
  • Мониторинга дискового пространства
  • Уведомлений в Telegram
  • Docker и Docker Compose
  • Bash 4.0+
  • Утилиты: tar, gzip, find, curl
  • Права root или sudo
# Создаем необходимые директории
sudo mkdir -p /opt/scripts
sudo mkdir -p /opt/backups/pgvector
 
# Устанавливаем права доступа
sudo chmod 755 /opt/scripts
sudo chmod 755 /opt/backups
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
sudo chmod +x /opt/scripts/pgvector-backup.sh

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
# Редактируем 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/ - данные PostgreSQL
  • pgadmin_data/ - данные PgAdmin
  • docker-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/

  • vm/pgvector/03-backup.1756575485.txt.gz
  • Последнее изменение: 2025/08/30 17:38
  • admin