66 lines
2.1 KiB
Bash
66 lines
2.1 KiB
Bash
#!/bin/bash
|
|
|
|
# Скрипт для создания бэкапов БД PROD и DEV
|
|
|
|
set -e
|
|
|
|
BACKUP_DIR="./backups"
|
|
TIMESTAMP=$(date +%Y%m%d_%H%M%S)
|
|
|
|
echo "=========================================="
|
|
echo "Создание бэкапов БД (PROD и DEV)"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# Создать директорию для бэкапов
|
|
mkdir -p "$BACKUP_DIR"
|
|
|
|
# Функция для создания бэкапа
|
|
backup_db() {
|
|
local CONTAINER_NAME=$1
|
|
local DB_USER=$2
|
|
local DB_NAME=$3
|
|
local BACKUP_NAME=$4
|
|
|
|
echo "Создание бэкапа: $BACKUP_NAME"
|
|
|
|
# Проверить, что контейнер запущен
|
|
if ! docker ps | grep -q "$CONTAINER_NAME"; then
|
|
echo "⚠️ Контейнер $CONTAINER_NAME не запущен, пропускаем..."
|
|
return 1
|
|
fi
|
|
|
|
BACKUP_FILE="$BACKUP_DIR/${BACKUP_NAME}_${TIMESTAMP}.sql.gz"
|
|
|
|
# Создать бэкап
|
|
if docker exec "$CONTAINER_NAME" pg_dumpall -U "$DB_USER" -c 2>/dev/null | gzip > "$BACKUP_FILE"; then
|
|
BACKUP_SIZE=$(du -h "$BACKUP_FILE" | cut -f1)
|
|
echo " ✓ Бэкап создан: $BACKUP_FILE ($BACKUP_SIZE)"
|
|
return 0
|
|
else
|
|
echo " ✗ Ошибка создания бэкапа для $BACKUP_NAME"
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
# Бэкап PROD БД
|
|
echo "--- PROD БД ---"
|
|
backup_db "platform_prod_db" "platform_prod_user" "platform_prod_db" "platform_prod_db"
|
|
|
|
echo ""
|
|
|
|
# Бэкап DEV БД
|
|
echo "--- DEV БД ---"
|
|
backup_db "platform_dev_db" "platform_dev_user" "platform_dev_db" "platform_dev_db"
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo "Бэкапы сохранены в: $BACKUP_DIR"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "Для восстановления PROD БД:"
|
|
echo " gunzip < $BACKUP_DIR/platform_prod_db_*.sql.gz | docker exec -i platform_prod_db psql -U platform_prod_user -d postgres"
|
|
echo ""
|
|
echo "Для восстановления DEV БД:"
|
|
echo " gunzip < $BACKUP_DIR/platform_dev_db_*.sql.gz | docker exec -i platform_dev_db psql -U platform_dev_user -d postgres"
|