Найти в Дзене
7 подписчиков

🧨 Бэкап базы Zabbix: как делал я (не повторяйте это вслепую)


Пару лет назад, накануне новогодних каникул, я внезапно осознал:

❗️ У меня нет ни одного бэкапа базы Zabbix.

Ситуация "горит" — сделал на скорую руку вот такую реализацию:

📅 cron-задача (раз в неделю в 2:10):
10 2 * * 0 /var/backup_database.sh >> /var/log/backup.log 2>&1
📝 Содержимое /var/backup_database.sh:
#!/bin/bash

# Конфигурация
DB_NAME="z"
DB_USER="z"
DB_PASS="M"
BACKUP_DIR="/home/user/backup/zabbix/sql"
DATE=$(date +"%Y-%m-%d_%H-%M-%S")
DB_BACKUP_FILE="$BACKUP_DIR/zabbix_db_backup_$DATE.sql.gz"

mkdir -p "$BACKUP_DIR"

echo "=== Бэкап базы данных Zabbix ==="

mysqldump -u "$DB_USER" -p"$DB_PASS" --single-transaction --quick --routines --triggers --databases "$DB_NAME" | pv | gzip > "$DB_BACKUP_FILE"

if [ $? -eq 0 ]; then
  echo "✅ Бэкап успешно создан: $DB_BACKUP_FILE"
else
  echo "❌ Ошибка при создании бэкапа!"
  exit 1
fi

echo "=== Удаление старых бэкапов ==="
find "$BACKUP_DIR" -type f -name "*.gz" -mtime +7 -exec rm {} \;

echo "Скрипт завершён успешно."

🔍 Быстрый разбор скрипта
mkdir -p "$BACKUP_DIR"
Создаёт папку для бэкапов, если не существует.

mysqldump ... | pv | gzip > файл
Дамп базы + сжатие через gzip, прогресс показывает pv.

if [ $? -eq 0 ]; then ...
Проверка: если дамп прошёл — ок, иначе ошибка.

 find ... -mtime +7 -exec rm
Удаляет бэкапы старше 7 дней.

🎯 Если у вас есть опыт реализации "по уму" — кидайте идеи в комменты.

🧩 P.S. У меня есть второй скрипт — этот бэкап заливает на FTP. Могу выложить, если будет интересно.

📡 Оперативные обновления — в Telegram (@netscripor). Там контент выходит раньше, иногда — с доп. деталями.
1 минута