backup-scripts
This commit is contained in:
parent
399bc57977
commit
4ee1788912
68
mongo-backup.sh
Normal file
68
mongo-backup.sh
Normal file
@ -0,0 +1,68 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Конфигурация
|
||||||
|
BACKUP_DIR="dump"
|
||||||
|
ARCHIVE_NAME="mongo-staging-backup.tar.gz"
|
||||||
|
S3_TARGET="tw/3c580be9-5ad7b4ab-08c3-4eeb-90b9-767746b1d4a7/mongo-staging"
|
||||||
|
TELEGRAM_BOT_TOKEN="6414077478:AAFk03HezovLT2kO_i9OYswH8Weirsgp9GU"
|
||||||
|
TELEGRAM_CHAT_ID="-1002045305199"
|
||||||
|
|
||||||
|
# Функция для отправки сообщения в Telegram
|
||||||
|
send_telegram() {
|
||||||
|
local message="$1"
|
||||||
|
curl -s -X POST \
|
||||||
|
"https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
||||||
|
-d "chat_id=${TELEGRAM_CHAT_ID}" \
|
||||||
|
-d "text=${message}" \
|
||||||
|
-d "parse_mode=Markdown" >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
# Логирование
|
||||||
|
log() {
|
||||||
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Создаем дамп MongoDB
|
||||||
|
log "Создание дампа MongoDB..."
|
||||||
|
mongodump --host=localhost --out="$BACKUP_DIR"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
error_msg="❌ Ошибка при создании дампа MongoDB"
|
||||||
|
log "$error_msg"
|
||||||
|
send_telegram "$error_msg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Архивируем дамп
|
||||||
|
log "Создание архива $ARCHIVE_NAME..."
|
||||||
|
tar -czvf "$ARCHIVE_NAME" "$BACKUP_DIR"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
error_msg="❌ Ошибка при создании архива"
|
||||||
|
log "$error_msg"
|
||||||
|
send_telegram "$error_msg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Загружаем в S3
|
||||||
|
log "Загрузка архива в S3..."
|
||||||
|
mc cp "$ARCHIVE_NAME" "$S3_TARGET/$ARCHIVE_NAME"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
error_msg="❌ Ошибка при загрузке в S3"
|
||||||
|
log "$error_msg"
|
||||||
|
send_telegram "$error_msg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Удаляем временные файлы
|
||||||
|
log "Очистка временных файлов..."
|
||||||
|
rm -rf "$BACKUP_DIR" "$ARCHIVE_NAME"
|
||||||
|
|
||||||
|
# Отправляем уведомление
|
||||||
|
success_msg="✅ Бэкап MongoDB произведён\n\nАрхив: $ARCHIVE_NAME\nS3 путь: $S3_TARGET/$ARCHIVE_NAME"
|
||||||
|
log "$success_msg"
|
||||||
|
send_telegram "$success_msg"
|
||||||
|
|
||||||
|
log "Процесс завершен успешно"
|
||||||
|
exit 0
|
85
postgres-backup.sh
Normal file
85
postgres-backup.sh
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Конфигурация
|
||||||
|
PG_HOST="10.7.0.10"
|
||||||
|
PG_USER="squiz" # Пользователь с правами бэкапа
|
||||||
|
PG_PASS="Redalert2" # Пароль (если есть)
|
||||||
|
BACKUP_DIR="postgres_backup"
|
||||||
|
ARCHIVE_NAME="$BACKUP_DIR.tar.gz"
|
||||||
|
S3_TARGET="tw/3c580be9-5ad7b4ab-08c3-4eeb-90b9-767746b1d4a7/postgres-staging"
|
||||||
|
TELEGRAM_BOT_TOKEN="6414077478:AAFk03HezovLT2kO_i9OYswH8Weirsgp9GU"
|
||||||
|
TELEGRAM_CHAT_ID=""-1002045305199
|
||||||
|
|
||||||
|
# Функции
|
||||||
|
send_telegram() {
|
||||||
|
local message="$1"
|
||||||
|
curl -s -X POST \
|
||||||
|
"https://api.telegram.org/bot${TELEGRAM_BOT_TOKEN}/sendMessage" \
|
||||||
|
-d "chat_id=${TELEGRAM_CHAT_ID}" \
|
||||||
|
-d "text=${message}" \
|
||||||
|
-d "parse_mode=Markdown" >/dev/null
|
||||||
|
}
|
||||||
|
|
||||||
|
log() {
|
||||||
|
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Создаем директорию для бэкапа
|
||||||
|
mkdir -p "$BACKUP_DIR"
|
||||||
|
|
||||||
|
# Получаем список всех баз (исключая шаблонные)
|
||||||
|
DATABASES=$(PGPASSWORD="$PG_PASS" psql -h "$PG_HOST" -U "$PG_USER" -t -c "SELECT datname FROM pg_database WHERE datname NOT IN ('template0', 'template1', 'postgres')")
|
||||||
|
|
||||||
|
if [ -z "$DATABASES" ]; then
|
||||||
|
error_msg="❌ Не удалось получить список баз данных PostgreSQL"
|
||||||
|
log "$error_msg"
|
||||||
|
send_telegram "$error_msg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Делаем бэкап каждой базы
|
||||||
|
for DB in $DATABASES; do
|
||||||
|
log "Бэкап базы $DB..."
|
||||||
|
PGPASSWORD="$PG_PASS" pg_dump -h "$PG_HOST" -U "$PG_USER" -F d -f "$BACKUP_DIR/$DB" "$DB"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
error_msg="❌ Ошибка при бэкапе базы $DB"
|
||||||
|
log "$error_msg"
|
||||||
|
send_telegram "$error_msg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Архивируем
|
||||||
|
log "Создание архива $ARCHIVE_NAME..."
|
||||||
|
tar -czvf "$ARCHIVE_NAME" "$BACKUP_DIR"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
error_msg="❌ Ошибка при создании архива"
|
||||||
|
log "$error_msg"
|
||||||
|
send_telegram "$error_msg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Загружаем в S3
|
||||||
|
log "Загрузка в S3..."
|
||||||
|
mc cp "$ARCHIVE_NAME" "$S3_TARGET/$ARCHIVE_NAME"
|
||||||
|
|
||||||
|
if [ $? -ne 0 ]; then
|
||||||
|
error_msg="❌ Ошибка при загрузке в S3"
|
||||||
|
log "$error_msg"
|
||||||
|
send_telegram "$error_msg"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Очистка
|
||||||
|
log "Очистка временных файлов..."
|
||||||
|
rm -rf "$BACKUP_DIR" "$ARCHIVE_NAME"
|
||||||
|
|
||||||
|
# Уведомление
|
||||||
|
success_msg="✅ Бэкап PostgreSQL произведён\n\nАрхив: $ARCHIVE_NAME\nS3 путь: $S3_TARGET/$ARCHIVE_NAME\nБаз: $(echo "$DATABASES" | wc -w)"
|
||||||
|
log "$success_msg"
|
||||||
|
send_telegram "$success_msg"
|
||||||
|
|
||||||
|
log "Готово!"
|
||||||
|
exit 0
|
Loading…
Reference in New Issue
Block a user