# Backup failures (/docs/troubleshooting/backup-failures)

A failed backup shows its error on the backup's page and in the **Backup failed** alert. Errors that may fix themselves are retried first. While a backup waits to retry, its message starts with _Retrying:_. For connection errors, see [Connection errors](/docs/troubleshooting).

## Plan and storage [#plan-and-storage]

### This workspace has no active plan [#this-workspace-has-no-active-plan]

The full message is _This workspace has no active plan. Start the 14-day Starter trial or subscribe in Settings → Billing to resume backups._ Backups only run on a plan in good standing. See [Trial, changes and cancelling](/docs/billing/subscription).

### Spending cap reached [#spending-cap-reached]

Extra storage reached your spending cap, so new backups are paused. Raise or remove the cap in **Settings → Billing**, or free up space. See [Extra storage and spending cap](/docs/billing/extra-storage).

### Starter allows 12 manual backups per database per day [#starter-allows-12-manual-backups-per-database-per-day]

You've used the day's manual backups for this database. The count is over a rolling 24 hours. Scheduled backups are not affected.

### A backup of production is already running [#a-backup-of-production-is-already-running]

Only one backup of a database runs at a time. Wait for it to finish, or cancel it.

### A backup of production is already queued [#a-backup-of-production-is-already-queued]

A backup of this database is already waiting to start, for example a scheduled one. It covers your request.

## Size and time [#size-and-time]

### The backup ran longer than this plan's 3 h limit [#the-backup-ran-longer-than-this-plans-3-h-limit]

A backup can run for 3 hours on Starter and 6 hours on Pro. Upgrade, or contact us about a Custom plan for very large databases.

### The backup is larger than this plan's 50 GB per-backup limit [#the-backup-is-larger-than-this-plans-50-gb-per-backup-limit]

The stored, compressed backup grew past your plan's largest backup: 50 GB on Starter, 100 GB on Pro.

### This database (~… GB) won't fit in the … GB this backup may use [#this-database--gb-wont-fit-in-the--gb-this-backup-may-use]

backupd estimated before starting that the database is too large for your plan's largest backup, and didn't start the dump.

### No data from the database for 300s [#no-data-from-the-database-for-300s]

The dump sent nothing for 5 minutes, often because it was waiting on a lock. backupd stops it rather than keep a snapshot open on your database, and retries.

### A table was locked by a schema change; the backup will retry [#a-table-was-locked-by-a-schema-change-the-backup-will-retry]

PostgreSQL. A migration held a lock the dump needed. The backup is retried. If it keeps happening, schedule backups away from deploys.

### The database was busy; the backup will retry [#the-database-was-busy-the-backup-will-retry]

MySQL. A lock wait timeout or deadlock. The backup is retried.

## Dump errors [#dump-errors]

### The dump is truncated (no mysqldump completion marker) [#the-dump-is-truncated-no-mysqldump-completion-marker]

`mysqldump` stopped before finishing, often because the connection dropped. The backup is retried.

### Not a pg_dump custom-format archive [#not-a-pg_dump-custom-format-archive]

The integrity check found the stored file isn't a valid archive. The backup is not counted as good. Run **Backup now** to make a new one, and contact support@backupd.dev if it happens again.

## Restore tests [#restore-tests]

### Restore failed [#restore-failed]

The restore test couldn't restore the backup, or some tables came back with fewer rows than were dumped. The backup's page lists each table that came back short, with both counts. Click **Re-run restore test** to try again. Keep an older verified backup until it passes. See [Integrity checks and restore tests](/docs/backups/verification).

## Copies to your bucket [#copies-to-your-bucket]

### Copy to destination failed [#copy-to-destination-failed]

backupd couldn't copy a backup to one of your buckets, after retrying. Check that the bucket still exists and the keys still have read, write and list access under the prefix. If the keys changed, remove the destination and add it again with the new keys, using **Test connection** to check them. The backup itself is safe in backupd Storage.

## Restores [#restores]

### The target already has … Turn on "Replace existing tables" to overwrite them [#the-target-already-has--turn-on-replace-existing-tables-to-overwrite-them]

MySQL. The target database already has some of the backup's tables. Tick **Replace tables that already exist in the target**, or restore into an empty database.

### Convex backups restore into their own deployment only [#convex-backups-restore-into-their-own-deployment-only]

In-app Convex restores can only go back to the original deployment. To restore elsewhere, [download the backup](/docs/restoring/download) and use `npx convex import`.

### A restore of this backup is already running [#a-restore-of-this-backup-is-already-running]

Wait for the running restore to finish.

### The restore ran too long [#the-restore-ran-too-long]

The restore ran past your plan's longest run. Restore it yourself instead, see [Restore without backupd](/docs/restoring/without-backupd).
