Odoo sichern: Backup-Strategie und Wiederherstellung
Kurz gesagt
Ein vollständiges Odoo-Backup umfasst die PostgreSQL-Datenbank und den Filestore mit den Anhängen. Odoo Online und Odoo.sh sichern die Produktivdatenbank täglich selbst; auf einem eigenen Server (On-Premise) nennt die Dokumentation tägliche Backups, kopiert auf ein fremdes System. Ob ein Backup taugt, zeigt erst eine Wiederherstellung.
Das Wichtigste
- Odoo Online: Laut Odoo Cloud Hosting SLA 14 Vollbackups über mindestens drei Monate (7 täglich, 4 wöchentlich, 3 oder mehr monatlich); die Wiederherstellungsziele sind Zielwerte, keine rechtsverbindliche Zusage.
- Odoo.sh: Die Produktivdatenbank wird täglich gesichert, mit 7 täglichen, 4 wöchentlichen und 3 monatlichen Backups; Staging und Entwicklung werden nicht automatisch gesichert.
- On-Premise: Die Odoo-Dokumentation nennt tägliche Backups von Datenbanken und Filestore, kopiert auf einen entfernten Archivserver, der vom Server selbst nicht erreichbar ist.
- Das Odoo-Backup im Format zip enthält standardmäßig den Filestore; ein reiner pg_dump enthält ihn nicht.
- Der db-Dienst der XML-RPC- und JSON-RPC-Schnittstellen, über den Skripte Datenbanken sichern konnten, ist in Odoo 20 entfernt.
Was Sie vorab brauchen
- Das Hostingmodell Ihrer Datenbank: Odoo Online, Odoo.sh oder eigener Server. Laut Editionsseite ist Hosting nur in Enterprise enthalten; die Community-Edition betreiben Sie selbst.
- Zugang zur Datenbankverwaltung (Online), zum Reiter „Backups“ des Projekts (Odoo.sh) oder zu Server und Master-Passwort beziehungsweise PostgreSQL-Zugang (On-Premise).
- Ein Ziel außerhalb des Servers oder Kontos, auf das Kopien gelegt werden.
- Eine Testumgebung, in der Sie eine Wiederherstellung üben können, ohne Produktivdaten zu berühren.
Was gesichert werden muss
Eine Odoo-Datenbank besteht aus zwei Teilen: der PostgreSQL-Datenbank und dem Filestore. Anhänge sind Dateien im Filestore, deren Zugriff Odoo regelt (Dokumentation „Deploying Odoo“). Das Backup im Format zip enthält den Filestore standardmäßig; mit --no-filestore entfällt er (odoo-bin db dump). Das Format dump ist ein pg_dump. Dessen Besonderheit nach der PostgreSQL-Dokumentation: Er sichert eine einzelne Datenbank, ist in sich konsistent (Stand bei Beginn des Dumps) und blockiert den laufenden Betrieb weitgehend nicht. Rollen und Tablespaces gehören nicht dazu.
Zwei Kennzahlen planen Sie vorab: wie viel Arbeitszeit Sie im schlimmsten Fall verlieren dürfen (Sicherungsabstand) und wie lange die Wiederherstellung höchstens dauern darf. Die Zahlen setzen Sie nach Ihrem Betrieb; Odoo nennt für Online eigene Zielwerte (siehe Tabelle).
Backup-Plan nach Hostingmodell
| Odoo Online | Odoo.sh | Eigener Server (On-Premise) | |
|---|---|---|---|
| Automatisches Backup | täglich laut Dokumentation; SLA: 14 Vollbackups (7 täglich, 4 wöchentlich, 3 oder mehr monatlich) über mindestens drei Monate | Produktion täglich: 7 täglich, 4 wöchentlich, 3 monatlich; Inhalt: Datenbank-Dump, Filestore, Logs, Sitzungen | keines; Ihre Aufgabe: laut Dokumentation täglich Datenbank und Filestore |
| Aufbewahrung | laut SLA auf mindestens drei Maschinen in verschiedenen Rechenzentren in Europa und Kanada repliziert, dazu eine eingefrorene Kopie; Region nicht wählbar | Der Produktionsserver hält nur 7 tägliche und 4 wöchentliche; die 3 monatlichen liegen auf dedizierten Backup-Servern und kommen über Odoo Support | Ihre Festlegung; Kopie auf entferntes Archivsystem, vom Server nicht erreichbar |
| Eigene Kopie | „Download Backup“ in der Datenbankverwaltung (ZIP); bei zu großer Datenbank gesperrt, dann Odoo Support | Reiter „Backups“: herunterladen und wiederherstellen; manuelles Backup (3 Tage verfügbar, höchstens 5 pro Tag) | Datenbankverwaltung, odoo-bin db dump oder pg_dump plus Filestore |
| Test- und Entwicklungsumgebungen | Kopie (Duplicate) läuft nach 15 Tagen ab; höchstens 5 Kopien | Staging und Entwicklung nicht automatisch gesichert; manuell nur Staging und Produktion | eigene Regel |
| Wiederherstellungsziel | SLA-Zielwerte, keine rechtsverbindliche Zusage. Dauerhafter Ausfall eines Servers: Datenverlust höchstens 24 h (für Odoo SaaS laut SLA nahe null), Betrieb wieder nach 6 h. Ausfall eines Rechenzentrums: Datenverlust höchstens 24 h, Betrieb wieder nach 24 h | nicht in diesen Quellen genannt | Ihre Festlegung |
Odoo.sh sichert zusätzlich automatisch, wenn ein Commit die Version eines Moduls oder dessen Python-Abhängigkeiten ändert (Typ „Update“). Ändert ein Commit nur Code ohne Versionssprung, entsteht kein Backup; die Dokumentation rät dann zu einem manuellen Backup vor Änderungen an der Produktion.
Schritt für Schritt: Sicherung einrichten
Schritt 1: Ziele festlegen
Notieren Sie Sicherungsabstand und maximale Wiederherstellungsdauer sowie, was zusätzlich zur Datenbank zu sichern ist, zum Beispiel die Konfigurationsdatei odoo.conf und eigene Modul-Quellen (redaktioneller Hinweis: Beides liegt weder in der Datenbank noch im Filestore).
Schritt 2 (Online): Eigene Kopie ablegen
Melden Sie sich in der Datenbankverwaltung an und wählen Sie „Download Backup“. Legen Sie die ZIP-Datei außerhalb von Odoo ab. Vor dem Löschen einer Datenbank empfiehlt die Dokumentation ausdrücklich ein Backup, denn Löschen entfernt alle Daten sofort und unwiederbringlich.
Schritt 3 (Odoo.sh): Reiter „Backups“ nutzen
Prüfen Sie im Reiter „Backups“ der Produktion, dass die täglichen Backups erscheinen. Laden Sie bei Bedarf eines herunter und legen Sie es extern ab. Erstellen Sie vor Eingriffen in die Produktion ein manuelles Backup.
Schritt 4 (On-Premise): Datenbank und Filestore sichern
Wählen Sie eine Methode, die zu Ihrem Betrieb passt:
- Odoo-Befehl
odoo-bin db dump <Datenbank> <Pfad>(Format zip mit Filestore als Standard). - Datenbankverwaltung unter
/web/database/manager. Sie ist durch das Master-Passwort (admin_passwd) geschützt. Für Internet-erreichbare Server empfiehlt die Dokumentation, sie abzuschalten (list_db = False); dann nutzen Sie Befehl oder pg_dump. - pg_dump für die Datenbank (zum Beispiel
pg_dump -Fc) plus Kopie des Filestore-Verzeichnisses im Datenverzeichnis. Das benutzerdefinierte Format stellen Sie mitpg_restorewieder her; für Rollen nutzen Siepg_dumpall --globals-only. - Kontinuierliche Archivierung (Basisbackup plus WAL-Archiv) erlaubt Wiederherstellung auf einen beliebigen Zeitpunkt, sichert aber nur den ganzen PostgreSQL-Cluster. pg_dump gehört nicht dazu. Das Verfahren ist laut PostgreSQL-Dokumentation aufwendiger und serverversionsspezifisch.
Skripte, die Datenbanken über den XML-RPC- oder JSON-RPC-Dienst db sichern, funktionieren in Odoo 20 nicht mehr. Der HTTP-Controller /web/database/backup erwartet Master-Passwort, Datenbankname und Backup-Format (Standard zip).
Schritt 5: Kopie vom Server wegbringen
Kopieren Sie die Sicherung auf ein entferntes Archivsystem, das der Odoo-Server selbst nicht erreichen kann, so die Dokumentation. Legen Sie vor jeder Änderung an der Installation, etwa einem Update, ein volles Backup auf einem anderen Rechner ab (Schritt 2 der Update-Anleitung).
Schritt 6: Wiederherstellung testen
Redaktionelle Checkliste, abgeleitet aus den dokumentierten Werkzeugen:
- Stellen Sie das Backup auf einem Testsystem wieder her, nie über die Produktivdatenbank. Für ein heruntergeladenes Online-Backup beschreibt die Hosting-Dokumentation beim Wechsel zu On-Premise die Wiederherstellung über die Datenbankverwaltung eines lokalen Servers.
- Neutralisieren Sie die Kopie (
odoo-bin db load -n, bei Odoo.sh sind Staging und Entwicklung neutralisiert). Neutralisierte Datenbanken deaktivieren unter anderem geplante Aktionen, ausgehende E-Mails, Bank-Synchronisierung und Zahlungsanbieter. - Melden Sie sich an, öffnen Sie in jeder genutzten App Stichproben und prüfen Sie, ob Anhänge (Filestore) geöffnet werden können.
- Vergleichen Sie wichtige Zähler (zum Beispiel Zahl der Kontakte, Verkaufsaufträge, Buchungen) mit der Produktion.
- Messen Sie die Dauer und halten Sie Datum, Verantwortliche, Backup-Datei und Ergebnis fest.
- Wiederholen Sie den Test nach jedem Versionswechsel und nach Änderungen an der Sicherung.
So prüfen Sie das Ergebnis
Die Sicherung gilt erst als brauchbar, wenn ein Wiederherstellungstest bestanden ist. Prüfen Sie außerdem, dass die Datei auf dem Offsite-Ziel angekommen ist und dass die Aufbewahrung der Tages-, Wochen- und Monatsstände Ihrem Plan entspricht.
Wenn etwas nicht klappt
| Symptom | Ursache nach Quelle | Lösung |
|---|---|---|
| „Download Backup“ ist gesperrt (Online) | Datenbank zu groß für den Download über die Datenbankverwaltung | Odoo Support um alternativen Download bitten |
| Altes Monats-Backup fehlt im Reiter (Odoo.sh) | Produktionsserver hält nur 7 tägliche und 4 wöchentliche | monatliche Backups über Odoo Support anfordern |
| Skript für Datenbank-Backups bricht ab | db-Dienst der RPC-Schnittstellen in Odoo 20 entfernt |
auf Controller, Befehl oder pg_dump umstellen |
| Wiederherstellung per psql meldet Eigentümer-Fehler | Benutzer, die Objekte besitzen, existieren nicht | Rollen vorher anlegen oder pg_dumpall --globals-only einspielen; Datenbank aus template0 anlegen |
| Datenbankverwaltung nicht erreichbar (On-Premise) | wegen list_db = False gesperrt |
Befehl odoo-bin db dump oder pg_dump verwenden |
Wann Sie Hilfe holen sollten
Bei Odoo Online und Odoo.sh sind Odoo Support (Download-Alternativen, Monatsbackups) und Ihr Partner die Ansprechpartner. Auf eigenen Servern holen Sie Hilfe, wenn Sie Zeitpunkt-Wiederherstellung (PITR) einrichten oder ein Test fehlschlägt. Redaktionelle Einschätzung: Zeitpunkt-Wiederherstellung verlangt PostgreSQL-Fachwissen, und ein Fehler im Verfahren zeigt sich sonst erst im Ernstfall.