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 минута
4 декабря 2025