Database administration

How to back up and restore an Odoo database

Choose the backup method for your hosting, restore a separate test copy, and check both business records and attachments. A downloaded file is only the start of a recovery plan.

By OdooMatrix Published Updated 7 min read

At a glance

Odoo Online uses the account database manager. Odoo.sh uses the branch Backups tab. A self-hosted installation can use its database manager when the administrator has enabled it. Always verify a restore before depending on a backup.

1. Identify your hosting and recovery requirements

Start by finding out who operates the database. The backup buttons and available recovery options are different on each platform.

On small screens, scroll the table sideways to see every column.

Where to manage an Odoo backup
HostingStart hereImportant distinction
Odoo OnlineYour Odoo account’s database managerA testing duplicate is temporary; download a backup separately.
Odoo.shThe branch’s Backups tabProduction, staging, and development have different backup behavior.
Self-hostedYour administrator’s backup process or local database managerYou are responsible for the database, filestore, code, and configuration.

Record the Odoo version, installed custom modules, database name, backup date, and where the backup is stored. Keep the matching custom code and dependencies available. A database backup does not install those modules on a replacement server.

A restore is not a version upgrade

Use a compatible Odoo environment for the restore. Moving a database to another major Odoo version requires the appropriate upgrade process; uploading an old backup to a newer server does not perform that migration.

2. Download an Odoo Online backup

  1. Sign in with the database administrator’s Odoo account at Odoo’s database manager.
  2. Select the correct database and open Manage.
  3. Choose Download Backup and wait for the ZIP download to finish.
  4. Store the file in an access-controlled location. Record the database name and the time of the download.

Expected: you have a completed ZIP download for the intended database. Odoo documents daily backups for Online, but keeping your own accessible recovery copy can still be useful before a major change.

Create a temporary test database

From the same management screen, choose Duplicate, enter a distinct name, and keep For testing purposes enabled. The Odoo 20 documentation says these duplicates expire after 15 days and that up to five duplicates can be created per database.

A duplicate helps you rehearse an import or configuration change. It does not prove that your downloaded backup can be restored. For an Online recovery or a restore that your account does not expose, contact Odoo Support and specify the database and recovery point you need.

If Download Backup is disabled because the database is too large, Odoo directs you to Support for an alternative download method.

3. Use the Odoo.sh Backups tab

  1. Open your Odoo.sh project and select the intended branch. Check its name and whether it is production or staging.
  2. Open Backups. Identify the backup by its date and type.
  3. Before a risky change, create a manual backup where the branch supports it. Download a recovery copy if required by your process.
  4. Rehearse recovery on a staging branch with compatible code. Confirm the target branch before using the restore action.

Odoo.sh documents automatic production backups. Staging and development databases are not automatically backed up; manual backups are available for production and staging, rather than development. Do not assume a development branch contains a recoverable copy of yesterday’s work.

The documented production retention is seven daily, four weekly, and three monthly backups. The branch server’s list and the dedicated backup servers have different retention; Odoo says to contact Support for the older monthly copies. Check the current platform policy before using these figures in your own recovery agreement.

4. Back up and restore a self-hosted test database

Use this route on a local or otherwise administrator-controlled installation where database management is permitted. For the Windows developer setup, the local address is http://localhost:8069/web/database/manager. A production administrator may intentionally disable or restrict this page.

Create the backup

  1. Open the database manager and choose Backup next to the intended database.
  2. Enter the database-manager master password. This is separate from your Odoo user login and PostgreSQL role password.
  3. Choose zip and leave Include filestore selected so file attachments are included.
  4. Click Backup and wait for the download to complete.

Restore a separate copy

  1. Prepare a compatible local or isolated test server with the required addons.
  2. Choose Restore Database and select the backup file.
  3. Enter a new, unused database name, such as restore_check_20261020. Keep the original database.
  4. Select This database is a copy. Enable Neutralize for a test restoration.
  5. Complete the restore with the master password and sign in using a user account contained in the backup.

Expected: the original database remains available and the restored database opens under the new name. The Odoo 20 backup interface also offers a PostgreSQL dump format without the filestore; do not choose it when you expect attachments to be included in that file.

If your hosting hides the database manager, use the host’s supported backup procedure. Do not expose the manager publicly just to follow this example.

5. Verify the restored records and attachments

Pick checks that represent the work your organization must recover. Write down the result and the time taken.

  • Open a known contact and a recent quotation or other business record from before the backup time.
  • Open an attachment that existed before the backup. Seeing a filename alone is not enough; confirm that its contents load.
  • Check that the expected custom applications and fields are available.
  • Confirm the test database is neutralized and isolated from live integrations before exercising workflows.
  • Check the original database separately and confirm that users can still access it.

Neutralization disables several external actions, including outgoing email, scheduled actions, bank synchronization, payment providers, and delivery methods. Review custom integrations as well: a custom module may have its own credentials or outbound behavior. Do not perform a real payment or dispatch as a recovery test.

6. Make the backup routine repeatable

Agree how much recent work the business could lose and how long it could operate without Odoo. These two answers determine the backup schedule and recovery process; a generic daily schedule may be insufficient for a busy operation.

  • Assign ownership: name the person who checks backup jobs and handles a failed run.
  • Keep a separate copy: a backup on the same disk as the database will not help if that disk fails.
  • Protect access: backups contain business and personal data. Restrict downloads and use secure storage and transfer.
  • Retain the environment: keep compatible addon code, dependency information, and configuration recovery instructions alongside the plan.
  • Rehearse: repeat a restore after important environment changes and on an agreed schedule.

7. Resolve common backup and restore problems

The master password is rejected

Ask the administrator for the database-manager password configured for that server. Your normal Odoo account password is a different credential.

The restored database opens but attachments are missing

Check whether the backup included the filestore and whether the restored server can access it. A database-only dump can leave attachment references without the corresponding files.

The restore reports missing modules or incompatible data

Check the Odoo major version, Enterprise addons if used, and custom module versions. Recover the compatible environment before attempting another restore.

The backup is too large or the request times out

On Online, use Odoo Support’s alternative download process. On self-hosted systems, ask the administrator to inspect disk space, server logs, and request limits and use a supported server-side backup process.

8. Complete the recovery checklist

  • The backup belongs to the correct database and has a recorded recovery point.
  • The required filestore and addon code are available.
  • A separate test database has been restored without replacing the original.
  • Records, attachments, and custom applications were checked.
  • The test environment cannot send live transactions.
  • The recovery owner, storage location, and next rehearsal date are documented.

9. Frequently asked questions

Is a ZIP download enough to prove my backup works?

No. Restore it into a compatible, separate environment and open representative records and attachments. Record the result so the recovery procedure can be repeated.

Can I restore an Odoo 19 database directly into Odoo 20?

A normal restore does not perform a major-version upgrade. Follow Odoo’s upgrade process and check custom-module compatibility before changing major versions.

Is a temporary Odoo Online duplicate a permanent backup?

No. Odoo documents a 15-day lifetime for Online duplicates. Use the download and recovery options for your hosting as part of a separate backup plan.

10. Related articles and next steps

Menu labels and available actions can vary with your Odoo version, installed apps, and permissions.

Continue learning

Need help with your Odoo setup?

Describe the version, hosting, and workflow you want to improve. Email OdooMatrix to discuss the next step.

← Back to all articles