Browse articles

Database backup

# Restoring a backup from the dashboard or manually

Restore a MySQL, PostgreSQL, or MongoDB backup from the run page, including incremental points, or download the artifact and restore it manually with age and database tools.

3 min readUpdated: October 22, 2026[Baca dalam Bahasa Indonesia](/docs/restore)

Every successful run stores one artifact that can be restored to a database with the same engine, on the same server or another one. The restore is performed by the agent on the target server.

## 1\. Choose the run to restore

1.  Open **History** in the sidebar. Use the **Success** filter to narrow the list.
2.  Click the run you want. The run page shows the job, server, engine, type (full or incremental), size, duration, object, and **Agent log**.
3.  The **Actions** card offers **Download (15 minutes)**, **Restore…**, and **Delete**.

## 2\. Restore from the dashboard

1.  Click **Restore…**.
2.  Choose the **Target connection (same engine)**. It can be on another server as long as the engine is the same.
3.  Fill in **Target database name (empty = same)** if you want to restore into a different database, for example `shop_restored`.
4.  Click **Restore now** and confirm. The restore **overwrites** data in the target database.
5.  Follow the status: _Waiting for the agent to pick up the restore command…_, then _Restore is running on the server…_, until **Restore completed** or **Restore failed** with its message.

Notes per engine:

-   **PostgreSQL**: the target database must already exist. A full restore uses `pg_restore --clean --if-exists`.
-   **MySQL / MariaDB**: the dump contains `CREATE DATABASE`, so the target name is ignored.
-   **MongoDB**: the target name maps the namespace; the restore uses `mongorestore --drop`.

Tip: restore to a staging database first to check the backup contents before overwriting production.

## 3\. Restoring an incremental point

If the selected run is incremental, the agent automatically restores its base full backup first, then every incremental up to that point, in order. Incremental PostgreSQL restores require a superuser, and incremental MongoDB restores can only target the same database name.

## 4\. Manual restore from the artifact

Click **Download (15 minutes)** to get a download link valid for 15 minutes. For encrypted artifacts (`.age`) you need the organisation passphrase and the `age` tool:

```bash
# decrypt: age prompts for the organisation passphrase
age --decrypt -o shop-020000.sql.zst shop-020000.sql.zst.age
zstd -d shop-020000.sql.zst

# MySQL / MariaDB
mysql -u root -p < shop-020000.sql
```

For the other engines:

```bash
# PostgreSQL (custom format, target database already created)
pg_restore --clean --if-exists -d shop shop-020000.dump

# MongoDB
mongorestore --archive=shop-020000.archive --drop
```

Unencrypted artifacts only need to be decompressed (`zstd -d` or `gunzip`) and then restored with the database tool.

## Troubleshooting

-   **"run ini tidak punya artefak"** (this run has no artifact): the run failed, or it was an incremental with no changes (no artifact was created). Choose another successful run.
-   **"engine koneksi target berbeda dengan backup"**: choose a connection with the same engine.
-   **"rantai backup tidak lengkap"** (incomplete backup chain): the base full or one of the incrementals in between has been deleted. Choose another point or a newer full.
-   **"restore incremental MongoDB hanya bisa ke nama database yang sama"**: leave the target database name empty.
-   **The restore keeps waiting for the agent**: the target server must be online.
-   **Decryption fails**: the artifact was created with an older passphrase. See [Backup passphrase](/help/passphrase-backup).
-   **Restore failed**: read the message and the agent log on the run page.

## See also

-   [Scheduling backups](/docs/jadwal-backup)
-   [Backup failed](/help/backup-gagal)

Still need help?

Open a support ticket from the dashboard and our team will reply as soon as possible.

[Help center](/en/help)[Open a ticket](/app/support/new)