vm:pgvector:03-backup

Различия

Показаны различия между двумя версиями страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
vm:pgvector:03-backup [2025/08/29 08:34] – создано adminvm:pgvector:03-backup [2025/08/30 17:39] (текущий) admin
Строка 1: Строка 1:
-====== Скрипт резервного копирования PGVector ======+====== Резервное копирование PGVector ======
  
 ===== Описание ===== ===== Описание =====
  
-Скрипт автоматизированного резервного копирования для контейнеров PGVector (PostgreSQL с расширением vector) и pgAdmin. Создает полные бекапы включающие SQL дампы и архивы данных.+Автоматизированный скрипт для создания резервных копий **PGVector** с поддержкой: 
 +  * Дампов базы данных PostgreSQL 
 +  * Архивирования файлов данных 
 +  * Автоматической очистки старых бекапов 
 +  * Мониторинга дискового пространства 
 +  * Уведомлений в Telegram
  
-**Возможности:** +===== Требования =====
-  * Создание SQL дампов базы данных +
-  * Архивирование папок с данными PostgreSQL и pgAdmin +
-  * Автоматическая очистка старых бекапов +
-  * Подробное логирование операций +
-  * Проверка работоспособности сервисов +
-  * Уведомления в Telegram (опционально)+
  
-<note tip> +  * Docker и Docker Compose 
-Скрипт безопасно останавливает контейнеры для создания консистентного бекапа и автоматически запускает их обратно. +  * Bash 4.0+ 
-</note> +  * Утилиты: ''tar'', ''gzip'', ''find'', ''curl'' 
- +  * Права root или sudo
-===== Предварительные требования ===== +
- +
-  * Docker и Docker Compose установлены +
-  * Контейнеры PGVector запущены из директории ''/opt/pgvector'' +
-  * Права root или sudo для выполнения операций+
  
 ===== Установка ===== ===== Установка =====
  
-==== Шаг 1Создание директории для скриптов ====+==== 1Создание директорий ====
  
 <code bash> <code bash>
 +# Создаем необходимые директории
 sudo mkdir -p /opt/scripts sudo mkdir -p /opt/scripts
 sudo mkdir -p /opt/backups/pgvector sudo mkdir -p /opt/backups/pgvector
 +
 +# Устанавливаем права доступа
 +sudo chmod 755 /opt/scripts
 +sudo chmod 755 /opt/backups
 </code> </code>
  
-==== Шаг 2Создание файла скрипта ====+==== 2Создание скрипта ====
  
 <code bash> <code bash>
Строка 38: Строка 37:
 </code> </code>
  
-Скопируйте содержимое скрипта в файл и сохраните. +Скопируйте в файл следующий скрипт:
- +
-==== Шаг 3Установка прав на выполнение ====+
  
 <code bash> <code bash>
-sudo chmod +x /opt/scripts/pgvector-backup.sh +#!/bin/bash 
-sudo chown root:root /opt/scripts/pgvector-backup.sh +  
-</code> +# Скрипт резервного копирования PGVector 
- +# Запуск: /opt/scripts/pgvector-backup.sh 
-==== Шаг 4: Настройка владельца директории бекапов ==== +  
- +# Настройки
-<code bash> +
-sudo chown -R $USER:$USER /opt/backups/pgvector +
-</code> +
- +
-===== Конфигурация ===== +
- +
-==== Основные параметры ==== +
- +
-Отредактируйте переменные в начале скрипта под ваши нужды: +
- +
-<file bash /opt/scripts/pgvector-backup.sh> +
-# Настройки путей+
 COMPOSE_FILE="/opt/pgvector/docker-compose.yml" COMPOSE_FILE="/opt/pgvector/docker-compose.yml"
 PGVECTOR_DIR="/opt/pgvector" PGVECTOR_DIR="/opt/pgvector"
 BACKUP_DIR="/opt/backups/pgvector" BACKUP_DIR="/opt/backups/pgvector"
- +DATE=$(date +"%Y%m%d_%H%M%S") 
-# Настройки хранения +BACKUP_NAME="pgvector_backup_${DATE}" 
-RETENTION_DAYS=10 Количество дней хранения бекапов +RETENTION_DAYS=10 Храним бекапы 10 дней 
 + 
 # Настройки базы данных # Настройки базы данных
 +DB_CONTAINER="pgvector_postgres"
 +DB_USER="postgres"
 +DB_PASSWORD="ваш_пароль_здесь"
 DB_NAME="postgres" DB_NAME="postgres"
-DB_USER="postgres+  
-DB_PASSWORD="FDg44ThJHFjwO Ваш пароль +# Логирование 
-DB_CONTAINER="pgvector_postgres+LOG_FILE="${BACKUP_DIR}/backup.log
-</file>+  
 +# Функция логирования 
 +log() { 
 +    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" 
 +
 +  
 +# Создаем директорию для бекапов если не существует 
 +mkdir -p "$BACKUP_DIR" 
 +  
 +log "=== Начало резервного копирования PGVector ===" 
 +  
 +# Проверяем что compose файл существует 
 +if [ ! -f "$COMPOSE_FILE" ]; then 
 +    log "ОШИБКА: Файл $COMPOSE_FILE не найден!" 
 +    exit 1 
 +fi 
 +  
 +# Переходим в директорию с PGVector 
 +cd "$PGVECTOR_DIR" || { 
 +    log "ОШИБКА: Не удалось перейти в директорию $PGVECTOR_DIR" 
 +    exit 1 
 +
 +# Проверяем что контейнеры запущены 
 +log "Проверяем статус контейнеров..." 
 +if ! docker-compose -f "$COMPOSE_FILE" ps | grep -q "Up"; then 
 +    log "ОШИБКА: Контейнеры не запущены! Запустите их перед созданием бекапа." 
 +    exit 1 
 +fi 
 +# Создаем дамп базы данных (пока контейнеры работают) 
 +log "Создаем дамп базы данных..." 
 +DB_DUMP_PATH="${BACKUP_DIR}/${BACKUP_NAME}_database.sql" 
 +# Экспортируем пароль для pg_dump 
 +export PGPASSWORD="$DB_PASSWORD
 +docker exec "$DB_CONTAINER" pg_dump -U "$DB_USER" -d "$DB_NAME" --no-password --verbose > "$DB_DUMP_PATH" 2>> "$LOG_FILE" 
 +if [ $? -eq 0 ] && [ -s "$DB_DUMP_PATH" ]; then 
 +    log "Дамп базы данных создан: $DB_DUMP_PATH" 
 +     
 +    # Получаем размер дампа 
 +    DB_DUMP_SIZE=$(du -h "$DB_DUMP_PATH| cut -f1) 
 +    log "Размер дампа БД: $DB_DUMP_SIZE" 
 +else 
 +    log "ОШИБКА: Не удалось создать дамп базы данных или файл пуст" 
 +    rm -f "$DB_DUMP_PATH" 
 +    exit 1 
 +fi 
 +Очищаем переменную окружения 
 +unset PGPASSWORD 
 +# Останавливаем контейнеры 
 +log "Останавливаем контейнеры PGVector..." 
 +docker-compose -f "$COMPOSE_FILE" down 
 +  
 +if [ $? -eq 0 ]; then 
 +    log "Контейнеры успешно остановлены" 
 +else 
 +    log "ОШИБКА: Не удалось остановить контейнеры" 
 +    exit 1 
 +fi 
 +  
 +# Ждем пару секунд для полной остановки 
 +sleep 5 
 +  
 +# Создаем архив с данными (включая дамп БД) 
 +log "Создаем архив данных..." 
 +BACKUP_PATH="${BACKUP_DIR}/${BACKUP_NAME}.tar.gz" 
 +  
 +tar -czf "$BACKUP_PATH"
 +    --exclude='*.log'
 +    --exclude='**/lost+found'
 +    -C "$BACKUP_DIR" "${BACKUP_NAME}_database.sql"
 +    -C "$PGVECTOR_DIR"
 +    postgres_data/
 +    pgadmin_data/
 +    docker-compose.yml 
 +  
 +if [ $? -eq 0 ]; then 
 +    log "Архив создан: $BACKUP_PATH" 
 +  
 +    # Получаем размер архива 
 +    BACKUP_SIZE=$(du -h "$BACKUP_PATH" | cut -f1) 
 +    log "Размер архива: $BACKUP_SIZE" 
 +     
 +    # Удаляем отдельный файл дампа, так как он теперь в архиве 
 +    rm -f "$DB_DUMP_PATH" 
 +    log "Отдельный файл дампа БД удален (включен в архив)" 
 +else 
 +    log "ОШИБКА: Не удалось создать архив" 
 +  
 +    # Пытаемся запустить контейнеры даже при ошибке 
 +    log "Запускаем контейнеры после ошибки..." 
 +    docker-compose -f "$COMPOSE_FILE" up -d 
 +    exit 1 
 +fi 
 +  
 +# Запускаем контейнеры обратно 
 +log "Запускаем контейнеры PGVector..." 
 +docker-compose -f "$COMPOSE_FILE" up -d 
 +  
 +if [ $? -eq 0 ]; then 
 +    log "Контейнеры успешно запущены" 
 +else 
 +    log "ОШИБКА: Не удалось запустить контейнеры" 
 +    exit 1 
 +fi 
 +  
 +# Ждем запуска сервисов 
 +sleep 15 
 +  
 +# Проверяем что все контейнеры работают 
 +log "Проверяем статус контейнеров..." 
 +RUNNING_CONTAINERS=$(docker-compose -f "$COMPOSE_FILEps --services --filter "status=running" | wc -l) 
 +TOTAL_CONTAINERS=$(docker-compose -f "$COMPOSE_FILE" ps --services | wc -l) 
 +if [ "$RUNNING_CONTAINERS" -eq "$TOTAL_CONTAINERS" ]; then 
 +    log "Все контейнеры ($RUNNING_CONTAINERS/$TOTAL_CONTAINERS) работают корректно" 
 +else 
 +    log "ПРЕДУПРЕЖДЕНИЕ: Работают только $RUNNING_CONTAINERS из $TOTAL_CONTAINERS контейнеров" 
 +fi 
 +# Проверяем доступность базы данных 
 +log "Проверяем подключение к базе данных..." 
 +export PGPASSWORD="$DB_PASSWORD" 
 +if docker exec "$DB_CONTAINER" pg_isready -U "$DB_USER" -d "$DB_NAME" /dev/null 2>&1; then 
 +    log "База данных доступна и готова к работе" 
 +else 
 +    log "ПРЕДУПРЕЖДЕНИЕ: База данных может быть недоступна" 
 +fi
  
-<note warning+# Проверяем что расширение pgvector доступно 
-Убедитесь, что пароль базы данных в скрипте соответствует паролю в docker-compose.yml +log "Проверяем расширение pgvector..." 
-</note>+if docker exec "$DB_CONTAINER" psql -U "$DB_USER" -d "$DB_NAME" -c "SELECT extname FROM pg_extension WHERE extname='vector';" 2>/dev/null | grep -q "vector"; then 
 +    log "Расширение pgvector активно и работает" 
 +else 
 +    log "ПРЕДУПРЕЖДЕНИЕ: Расширение pgvector может быть неактивно
 +fi 
 +unset PGPASSWORD 
 +  
 +# Удаляем старые бекапы 
 +log "Удаляем бекапы старше $RETENTION_DAYS дней..." 
 +DELETED_COUNT=$(find "$BACKUP_DIR" -name "pgvector_backup_*.tar.gz" -mtime +$RETENTION_DAYS -delete -print | wc -l) 
 +log "Удалено старых бекапов: $DELETED_COUNT" 
 +  
 +# Показываем статистику бекапов 
 +BACKUP_COUNT=$(ls -1 "${BACKUP_DIR}"/pgvector_backup_*.tar.gz 2>/dev/null | wc -l) 
 +TOTAL_SIZE=$(du -sh "${BACKUP_DIR}" 2>/dev/null | cut -f1) 
 +log "Общее количество бекапов: $BACKUP_COUNT" 
 +log "Общий размер папки бекапов: $TOTAL_SIZE" 
 +# Получаем информацию о свободном месте на диске 
 +BACKUP_DISK_USAGE=$(df -h "$BACKUP_DIR" | awk 'NR==2 {print $4 " свободно из " $2 " (" $5 " занято)"}'
 +ROOT_DISK_USAGE=$(df -h / | awk 'NR==2 {print $4 " свободно из " $2 " (" $5 " занято)"}'
 +log "Свободное место на диске бекапов: $BACKUP_DISK_USAGE" 
 +if [ "$BACKUP_DIR" != "/" ] && [ "$(df "$BACKUP_DIR" | awk 'NR==2 {print $1}')" != "$(df / | awk 'NR==2 {print $1}')" ]; then 
 +    log "Свободное место на корневом диске: $ROOT_DISK_USAGE" 
 +fi 
 +# Получаем процент заполнения диска с бекапами для предупреждений 
 +BACKUP_DISK_PERCENT=$(df "$BACKUP_DIR" | awk 'NR==2 {print $5}' | sed 's/%//'
 +if [ "$BACKUP_DISK_PERCENT" -gt 90 ]; then 
 +    log "⚠️ ПРЕДУПРЕЖДЕНИЕ: Диск заполнен более чем на 90%!" 
 +elif [ "$BACKUP_DISK_PERCENT" -gt 80 ]; then 
 +    log "⚠️ ВНИМАНИЕ: Диск заполнен более чем на 80%" 
 +fi 
 +  
 +log "=== Резервное копирование завершено успешно ===" 
 +# Формируем сообщение для Telegram 
 +TELEGRAM_MESSAGE="✅ PGVector backup completed 
 +📁 Backup: $BACKUP_NAME ($BACKUP_SIZE) 
 +💾 DB dump: $DB_DUMP_SIZE   
 +📊 Total backups: $BACKUP_COUNT 
 +💿 Disk space: $BACKUP_DISK_USAGE" 
 +# Добавляем предупреждение о месте, если нужно 
 +if [ "$BACKUP_DISK_PERCENT" -gt 90 ]; then 
 +    TELEGRAM_MESSAGE="$TELEGRAM_MESSAGE 
 +⚠️ WARNING: Disk >90% full!" 
 +elif [ "$BACKUP_DISK_PERCENT" -gt 80 ]; then 
 +    TELEGRAM_MESSAGE="$TELEGRAM_MESSAGE 
 +⚠️ ATTENTION: Disk >80% full" 
 +fi 
 +# Отправляем уведомление в Telegram (опционально) 
 +curl -s -X POST "https://api.telegram.org/bot[ВАШ_ТОКЕН]/sendMessage"
 +     -d chat_id="[ВАШ_CHAT_ID]"
 +     -d text="$TELEGRAM_MESSAGE" > /dev/null 
 +exit 0 
 +</code>
  
-==== Настройка уведомлений Telegram (опционально) ====+**Обязательно измените следующие параметры:** 
 +  * ''DB_PASSWORD="ваш_пароль_здесь"'' - укажите реальный пароль БД 
 +  * ''[ВАШ_ТОКЕН]'' - токен Telegram бота 
 +  * ''[ВАШ_CHAT_ID]'' - ID чата для уведомлений
  
-Раскомментируйте и настройте строки в конце скрипта:+==== 3. Установка прав выполнения ====
  
 <code bash> <code bash>
-curl -s -X POST "https://api.telegram.org/botYOUR_BOT_TOKEN/sendMessage"+sudo chmod +x /opt/scripts/pgvector-backup.sh
-     -d chat_id="YOUR_CHAT_ID"+
-     -d text="✅ PGVector backup completed: $BACKUP_NAME ($FINAL_SIZE)"+
 </code> </code>
  
-===== Использование =====+===== Настройка Telegram уведомлений =====
  
-==== Ручной запуск ====+1. Создайте бота через **@BotFather** 
 +2. Получите **токен бота** и **chat_id** 
 +3. Замените в скрипте:
  
 <code bash> <code bash>
-# Запуск с правами root +curl -s -X POST "https://api.telegram.org/bot[ВАШ_ТОКЕН]/sendMessage"
-sudo /opt/scripts/pgvector-backup.sh+     -d chat_id="[ВАШ_CHAT_ID]"
 +     -d text="$TELEGRAM_MESSAGE" > /dev/null 
 +</code>
  
-# Запуск с отображением вывода +===== Автоматизация =====
-sudo /opt/scripts/pgvector-backup.sh | tee /tmp/backup.log +
-</code>+
  
-==== Проверка логов ====+==== Настройка Cron ====
  
 <code bash> <code bash>
-Просмотр последних логов +Редактируем crontab 
-tail -f /opt/backups/pgvector/backup.log+sudo crontab -e
  
-Просмотр всех логов +Добавляем задание - ежедневно в 3:00   
-cat /opt/backups/pgvector/backup.log+0 3 * * * /opt/scripts/pgvector-backup.sh >> /var/log/pgvector-backup.log 2>&1
 </code> </code>
  
-===== Автоматизация =====+===== Использование =====
  
-==== Настройка cron ====+==== Ручной запуск ====
  
 <code bash> <code bash>
-sudo crontab -e+sudo /opt/scripts/pgvector-backup.sh
 </code> </code>
  
-Добавьте одну из следующих строк: +==== Проверка бекапов ====
- +
-<file> +
-# Ежедневно в 2:00 ночи +
-0 2 * * * /opt/scripts/pgvector-backup.sh >/dev/null 2>&+
- +
-# Еженедельно по воскресеньям в 3:00 +
-0 3 * * 0 /opt/scripts/pgvector-backup.sh >/dev/null 2>&+
- +
-# Ежедневно в 2:00 с логированием в syslog +
-0 2 * * * /opt/scripts/pgvector-backup.sh 2>&1 | logger -t pgvector-backup +
-</file> +
- +
-==== Проверка работы cron ====+
  
 <code bash> <code bash>
-Проверка статуса cron +Список бекапов 
-sudo systemctl status cron+ls -la /opt/backups/pgvector/
  
-# Просмотр логов cron +# Просмотр лога 
-sudo grep pgvector /var/log/syslog+tail -f /opt/backups/pgvector/backup.log
 </code> </code>
  
 ===== Структура бекапов ===== ===== Структура бекапов =====
  
-После выполнения скрипта в ''/opt/backups/pgvector'' будут созданы: +<code> 
- +/opt/backups/pgvector/ 
-^ Файл ^ Описание ^ +├── pgvector_backup_20250830_201456.tar.gz   # Основной архив 
-| ''pgvector_backup_YYYYMMDD_HHMMSS_complete.tar.gz'' | Итоговый архив со всеми данными | +├── backup.log                               # Лог операций 
-| ''backup.log''Лог-файл операций |+└── [старые бекапы...] 
 +</code>
  
-**Содержимое итогового архива:** +**Содержимое архива:** 
-  * SQL дамп основной базы данных +  * ''pgvector_backup_YYYYMMDD_HHMMSS_database.sql''дамп БД 
-  * Полный SQL дамп всех баз данных   +  * ''postgres_data/''данные PostgreSQL 
-  * Архив папок ''postgres_data'' и ''pgadmin_data'' +  * ''pgadmin_data/'' - данные PgAdmin 
-  * Файл ''docker-compose.yml''+  * ''docker-compose.yml'' - конфигурация
  
-===== Восстановление из бекапа =====+===== Восстановление =====
  
 ==== Полное восстановление ==== ==== Полное восстановление ====
  
 <code bash> <code bash>
-1. Остановите контейнеры+# Останавливаем сервис
 cd /opt/pgvector cd /opt/pgvector
-sudo docker-compose down+docker-compose down
  
-2. Создайте резервную копию текущих данных +# Создаем бекап текущего состояния 
-sudo mv postgres_data postgres_data.old +sudo mv postgres_data postgres_data.backup.$(date +%Y%m%d_%H%M%S)
-sudo mv pgadmin_data pgadmin_data.old+
  
-3. Извлеките бекап +# Извлекаем архив 
-cd /opt/backups/pgvector +sudo tar -xzf /opt/backups/pgvector/pgvector_backup_YYYYMMDD_HHMMSS.tar.gz
-sudo tar -xzf pgvector_backup_YYYYMMDD_HHMMSS_complete.tar.gz+
  
-4. Извлеките данные из архива +# Запускаем сервис 
-sudo tar -xzf pgvector_backup_YYYYMMDD_HHMMSS.tar.gz -C /opt/pgvector +docker-compose up -d
- +
-# 5. Запустите контейнеры +
-cd /opt/pgvector +
-sudo docker-compose up -d+
 </code> </code>
  
-==== Восстановление только базы данных ====+==== Восстановление только БД ====
  
 <code bash> <code bash>
-1. Извлеките SQL дамп +# Извлекаем SQL дамп 
-cd /opt/backups/pgvector +tar -xzf backup.tar.gz pgvector_backup_YYYYMMDD_HHMMSS_database.sql
-tar -xzf pgvector_backup_YYYYMMDD_HHMMSS_complete.tar.gz+
  
-2. Восстановите базу данных+# Восстанавливаем
 docker exec -i pgvector_postgres psql -U postgres -d postgres < pgvector_backup_YYYYMMDD_HHMMSS_database.sql docker exec -i pgvector_postgres psql -U postgres -d postgres < pgvector_backup_YYYYMMDD_HHMMSS_database.sql
- 
-# Или восстановите все базы данных 
-docker exec -i pgvector_postgres psql -U postgres < pgvector_backup_YYYYMMDD_HHMMSS_all_databases.sql 
 </code> </code>
  
-===== Мониторинг и обслуживание =====+===== Мониторинг =====
  
-==== Проверка размера бекапов ==== +При успешном бекапе приходит уведомление: 
- +<code> 
-<code bash+✅ PGVector backup completed 
-# Размер всех бекапов +📁 Backup: pgvector_backup_20250830_201456 (45M) 
-du -sh /opt/backups/pgvector +💾 DB dump: 12M   
- +📊 Total backups: 7 
-# Список всех бекапов с размерами +💿 Disk space: 2.1G свободно из 10G (79% занято)
-ls -lah /opt/backups/pgvector/*.tar.gz+
 </code> </code>
  
-==== Ручная очистка старых бекапов ==== +Предупреждения при заполнении диска: 
- +<code> 
-<code bash> +⚠️ ATTENTION: Disk >80% full 
-# Удалить бекапы старше 30 дней +⚠️ WARNING: Disk >90% full!
-find /opt/backups/pgvector -name "pgvector_backup_*" -mtime +30 -delete +
-</code> +
- +
-==== Тестирование бекапа ==== +
- +
-<code bash> +
-# Проверка целостности архива +
-tar -tzf /opt/backups/pgvector/pgvector_backup_YYYYMMDD_HHMMSS_complete.tar.gz +
- +
-# Проверка SQL дампа +
-head -20 pgvector_backup_YYYYMMDD_HHMMSS_database.sql+
 </code> </code>
  
 ===== Устранение проблем ===== ===== Устранение проблем =====
  
-==== Частые ошибки ==== +=== Контейнеры не запущены ===
- +
-**Ошибка: "Файл docker-compose.yml не найден"** +
-<code bash> +
-# Проверьте путь к файлу +
-ls -la /opt/pgvector/docker-compose.yml +
-# Отредактируйте переменную COMPOSE_FILE в скрипте +
-</code> +
- +
-**Ошибка: "Контейнер не найден"**+
 <code bash> <code bash>
-# Проверьте имена контейнеров +docker-compose ps 
-docker ps -a +docker-compose up -d
-# Обновите переменную DB_CONTAINER в скрипте+
 </code> </code>
  
-**Ошибка подключения к базе данных**+=== Ошибка дампа БД ===
 <code bash> <code bash>
-# Проверьте статус контейнера+# Проверяем доступность БД
 docker exec pgvector_postgres pg_isready -U postgres docker exec pgvector_postgres pg_isready -U postgres
  
-# Проверьте пароль +# Проверяем логи 
-docker exec -it pgvector_postgres psql -U postgres+docker logs pgvector_postgres
 </code> </code>
  
-==== Логи отладки ==== +=== Нет места на диске ===
 <code bash> <code bash>
-Запуск с подробными логами +Проверяем использование 
-sudo bash -/opt/scripts/pgvector-backup.sh+df -/opt/backups
  
-Проверка логов Docker +Удаляем старые бекапы 
-docker logs pgvector_postgres +find /opt/backups -name "*backup*.tar.gz" -mtime +5 -delete
-docker logs pgvector_pgadmin+
 </code> </code>
  
 ===== Безопасность ===== ===== Безопасность =====
- 
-<note important> 
-**Рекомендации по безопасности:** 
-  * Храните бекапы на отдельном диске или удаленном сервере 
-  * Регулярно проверяйте целостность бекапов 
-  * Ограничьте права доступа к директории с бекапами 
-  * Зашифруйте бекапы при передаче по сети 
-</note> 
- 
-==== Настройка прав доступа ==== 
  
 <code bash> <code bash>
-Ограничить доступ к директории бекапов +Устанавливаем правильные права 
-sudo chmod 750 /opt/backups/pgvector +sudo chmod 700 /opt/scripts/pgvector-backup.sh 
-sudo chown root:backup /opt/backups/pgvector+sudo chown root:root /opt/scripts/pgvector-backup.sh
  
-Ограничить доступ к скрипту +Защищаем директорию бекапов 
-sudo chmod 750 /opt/scripts/pgvector-backup.sh +sudo chmod 755 /opt/backups 
-</code> +sudo chown root:root /opt/backups
- +
-===== Дополнительные возможности ===== +
- +
-==== Отправка бекапов на удаленный сервер ==== +
- +
-Добавьте в конец скрипта+
- +
-<code bash> +
-# Отправка через rsync +
-rsync -avz "$FINAL_BACKUP" user@remote-server:/backup/pgvector+
- +
-# Отправка через scp +
-scp "$FINAL_BACKUP" user@remote-server:/backup/pgvector/ +
-</code> +
- +
-==== Интеграция с системой мониторинга ==== +
- +
-<code bash> +
-# Отправка метрик в InfluxDB +
-curl -X POST 'http://influxdb:8086/write?db=monitoring'+
---data-binary "pgvector_backup,host=$(hostname) size=${FINAL_SIZE_BYTES} $(date +%s)000000000"+
 </code> </code>
  
 ---- ----
  
-//Последнее обновление$(date)//+//Документация обновлена{{ CURRENTUSER }} {{ date:j.m.Y H:i }}/
  • vm/pgvector/03-backup.1756456497.txt.gz
  • Последнее изменение: 2025/08/29 08:34
  • admin