Резервные копии · PostgreSQL / MySQL

Мониторинг резервных копий баз данных

Следите за запуском, завершением и проверкой бэкапов PostgreSQL и MySQL. Получайте сигнал, если резервное копирование упало или не запускалось.

Free: 5 мониторов, Telegram и email.

Пример уведомления

● postgres-backup

Резервное копирование или его обязательная проверка завершились ошибкой.

Открыть монитор

Демонстрационные данные. Вид и состав сообщения зависят от канала и типа события.

Когда это нужно

Успешный pg_dump или mysqldump ещё не гарантирует, что копия попала в хранилище и пригодна для восстановления. Контролировать нужно всю цепочку: создание файла, проверку, передачу и сохранность. Сигнал успеха отправляется только после последнего обязательного шага.

Как подключить

  1. 1

    Объедините дамп, проверку файла и загрузку в хранилище в один скрипт с ненулевым кодом при сбое любого обязательного шага.

  2. 2

    Оберните этот скрипт и задайте монитор на расписание бэкапа с запасом на его обычную длительность.

  3. 3

    Для регулярного пробного восстановления заведите отдельную задачу и отдельный монитор.

Готовый пример

Нужны Bash, curl и uuidgen на сервере задачи. Сохраните код как /opt/tickwatch-run.sh, замените URL пинга своим и укажите абсолютный путь к рабочему скрипту. Ключ пинга не публикуйте. Обёртка сохраняет код завершения задачи; ошибка отправки сигнала её не прерывает. backup-and-verify.sh — ваш существующий скрипт резервного копирования и проверки, а не команда, поставляемая Tickwatch.

tickwatch-run.sh
#!/usr/bin/env bash
# Save as tickwatch-run.sh; run: bash tickwatch-run.sh /path/to/job.sh
if [ "$#" -eq 0 ]; then echo "Usage: $0 command [args...]" >&2; exit 2; fi
PING='https://ping.tickwatch.dev/YOUR_PING_KEY'
RID=$(uuidgen) || exit 1
ping() {
  curl -fsS --connect-timeout 3 --max-time 5 --retry 2 --retry-max-time 12 \
    -X POST "$PING/$1?rid=$RID" >/dev/null 2>&1 || true
}
finish() {
  code=$?
  trap - EXIT
  if [ "$code" -eq 0 ]; then ping ""; else ping fail; fi
  exit "$code"
}
trap finish EXIT
trap 'exit 130' INT
trap 'exit 143' TERM
ping start
"$@"
Запуск или настройка
0 3 * * * /usr/bin/bash /opt/tickwatch-run.sh /usr/local/bin/backup-and-verify.sh

Что проверить перед запуском

  • Если используется конвейер pg_dump | gzip, настройте pipefail в Bash-скрипте бэкапа: успешный gzip не должен скрыть ошибку pg_dump.

  • Пустой или старый файл не считается новым бэкапом. Проверяйте размер, время создания и результат загрузки в удалённое хранилище.

  • Обёртка передаёт только сигналы состояния. Не отправляйте дампы, строки подключения или пароли в тело пинга.

Частые вопросы

Зелёный монитор доказывает, что данные восстановятся?

Только если сама задача действительно выполняет нужную проверку восстановления. Tickwatch фиксирует присланный результат, а не анализирует содержимое дампа.

Подходит для PostgreSQL и MySQL?

Да, мониторинг не зависит от СУБД. Важно, чтобы скрипт корректно возвращал код завершения и сообщал успех после всех этапов.

Проверьте первый запуск, пока задача ещё работает

Создайте монитор, подставьте свой URL пинга и убедитесь, что приходят сигналы и уведомления.

Мониторинг резервных копий баз данных · Tickwatch