Database Backup Monitoring

Backup monitoring for missed runs and failed transfers.

Monitor recurring database backup jobs with a success check-in after the dump and required upload finish. Get alerted when a check-in is missed, then investigate the job and destination. Five monitors are free.

5 monitors free · No credit card · Verify your first check-in

Check the backup job, the stored copy, and the restore separately.

A green scheduler entry only shows that a command ran. A backup can still be incomplete, missing from the recovery destination, or impossible to decrypt. Decide which steps must succeed before your script reports success.

PingCron watches the check-ins your job sends. It does not inspect archives or restore databases. Use missed-run monitoring alongside destination checks and isolated restore drills so each check answers a specific recovery question.

Investigate a missing backup check-in in this order:

  • Check whether the scheduler started the expected job, using its configured timezone.
  • Read the dump and upload exit codes; inspect storage capacity and access errors.
  • Confirm that the expected new archive reached the recovery destination.
  • If the work succeeded, check heartbeat delivery and the monitor’s interval and grace.

Setup

Send success after the backup reaches its destination

Define the dump, transfer, and verification steps your recovery process requires. Only report success when all required steps complete.

Before

0 2 * * * /scripts/backup-and-upload.sh

After

0 2 * * * /scripts/backup-and-upload.sh && curl --max-time 10 -fsS YOUR_MONITOR_SUCCESS_URL

Use the monitor’s actual success URL. The script exits on a failed dump or upload, so the cron success heartbeat is skipped. A received heartbeat proves only that the script reported success; separately verify archive integrity, retention, encryption-key recovery, and restoration into an isolated database.

Real-world examples

Inside backup-and-upload.sh (illustrative paths)

#!/bin/sh
# Configure PostgreSQL connection settings securely in the environment.
# Supply a unique ARCHIVE path and your own upload command.
set -eu
: "${ARCHIVE:?Set a unique backup file path}"
pg_dump --format=custom --file="$ARCHIVE"
/usr/local/bin/upload-backup "$ARCHIVE"
# Exit zero only when every required backup step succeeded.

Backup jobs to monitor.

Any scheduled backup that needs to keep running.

PostgreSQL backups

Nightly pg_dump or pg_basebackup jobs.

MySQL backups

Daily mysqldump or Percona xtrabackup runs.

MongoDB backups

mongodump exports to disk or cloud.

SQLite backups

Sqlite3 .backup or file copies.

S3 upload jobs

Sync local backups to S3 or other object storage.

Offsite backup syncs

rclone, rsync, restic to remote destinations.

Daily snapshots

LVM snapshots, ZFS snapshots, EBS snapshots.

Client backup scripts

Per-tenant or per-customer backup workflows.

How it works

Review the backup, install monitoring, and verify completion.

01

Review the expectation

Match the deployed schedule and timezone, then choose grace for legitimate runtime and delay.

02

Create and install the monitor

Keep its actual heartbeat URL private and send success only after the required work finishes.

03

Verify the setup

Confirm the first successful heartbeat and receipt of an alert-destination test.

Alerts where you'll actually see them.

Save alert destinations for the owning account. Email, Slack, and Discord are included on every plan; custom webhooks require Pro or above.

Email

HTML alerts with monitor details and direct links.

Slack

Post to any Slack channel via incoming webhook.

Discord

Native Discord webhook integration.

Custom webhooks

POST alerts to any endpoint with full payload.

FAQ

Backup monitoring checks whether recurring backup work completes and whether the evidence you need for recovery is present. PingCron covers scheduled check-ins: your script reports success after its required steps, and a missing check-in triggers the configured missed-run alert.
Send it after every step required for that backup to count as complete. If recovery depends on an offsite copy, wait for the upload to succeed. Make the script exit nonzero on a failed dump or transfer, and keep the heartbeat URL in your secret configuration.
No. It records that your script reported success. Verify archive integrity, retention, access to decryption keys, and restoration into an isolated destination separately. Check the restored data and application behavior before relying on the recovery process.
Yes. A job that can make an HTTP request can send a check-in. Use your database’s supported backup method and preserve each required command’s exit status. PingCron does not create, store, or inspect the backup.
Match the expected interval to the deployed schedule and allow grace for normal runtime and scheduler delay. Investigate repeated delays before increasing grace; a wider window also postpones detection of a missing run.
PingCron Free includes 5 monitors, email, Slack and Discord alerts, and 7 days of history. Pro is $9.99/month for 50 monitors, 30-day history, and custom webhooks. Team is $29/month for 200 monitors, 90-day history, and up to 10 team members. Start with one verified backup job before choosing a larger plan.

From configuration to a verified first run

Define what a completed backup means before adding its heartbeat. If recovery depends on an offsite copy, send success after both the dump and upload succeed. A local file or a successful HTTP receipt alone cannot establish recoverability.

Check the backup crontab →
  • Preserve the exit status of each dump, compression, and upload command. Avoid pipelines that hide an earlier failure.
  • Choose grace to cover normal backup duration and expected scheduler delays. Keep separate monitors for independently scheduled backups.
  • Run restore drills into an isolated destination and verify the restored data. Keep decryption keys recoverable separately from encrypted backups.

Before relying on alerts

  1. Review the monitor’s schedule, timezone, and grace period against the deployed job.
  2. Save your alert destination in Settings, send a labeled test, and confirm that you received it.
  3. Run the actual workload through its scheduler and confirm its first successful heartbeat in PingCron. Copying the URL does not install monitoring.

A successful receipt records what the job reported; it does not prove the output is correct. Detection and delivery timing depend on the schedule, grace period, and alert provider.

Start with the backup your team would restore first

Free covers five monitors with email, Slack, and Discord alerts. Compare plans when you need more jobs, longer history, custom webhooks, or shared team access. A larger plan does not replace a restore drill.

Read the official PostgreSQL backup documentation

Related monitoring guides

Verify one backup job before adding the rest.

Start free, confirm its first successful check-in and alert destination, then add the jobs your recovery process depends on.

Start monitoring free

5 monitors free · No credit card · Verify your first check-in