Wiederherstellung von Backups
In diesem Dokument wird das Vorgehen zur Wiederherstellung aus einem Backup beschrieben.
Voraussetzung
Auf dem Host ist Restic installiert und der Zugriff auf die Snapshots funktioniert.
Alle Dienste sind installiert und bereit zur Wiederherstellung.
Restic Restore
Als erstes gilt es mit Restic die Backups vom Restic-Server herunterzuladen.
Angenommen man möchte das folgende Backup wiederherstellen:
restic snapshots a1dd23e2
# repository b7435fcd opened successfully, password is correct
# ID Time Host Tags Paths
# ------------------------------------------------------------------------
# a1dd23e2 2020-09-30 01:00:05 apollo odoo,odoo03 /var/tmp/erp.zip
# ------------------------------------------------------------------------
# 1 snapshots
Gibt man den folgenden Befehl ein:
restic restore a1dd23e2 --target /
# repository b7435fcd opened successfully, password is correct
# restoring <Snapshot a1dd23e2 of [/var/tmp/erp.zip] at 2020-09-30 01:00:05.957738501 +0200 CEST by root@apollo> to /
Odoo Backup
Hat man das Odoo Backup wiederhergestellt, kann man die Daten einfach importieren.
~ odoo-restore -d erp -r -f /var/tmp/erp.zip
# No errors detected in compressed data of /var/tmp/erp.zip.
# Deleting Odoo database erp ...
# Requesting restore for Odoo database erp ...
# The restore for Odoo database erp has finished.
Docker Volumes
Der Container nextcloud03
hat ein Volume nextcloud_data03
und wiederhergestellter Export unter /var/tmp/nextcloud03/nextcloud_data03.tar
.
Mit Helper-Scripts
Bestehendes Volume erstetzen.
docker-postgres-restore -c postgres11 -f /var/tmp/postgres11/nextcloud.sql -r
Ohne Helper-Scripts
Dieser Export kann ganz einfach importiert werden.
docker run --rm -v nextcloud_data03:/_data -v /var/tmp:/var/tmp ubuntu bash -c "cd /_data && tar xvf /var/tmp/nextcloud03/nextcloud_data03.tar --strip 1"
Postgres Dump
Der Datenbank-Export /var/tmp/postgres11/nextcloud.sql
soll für den Container postgres11
wiederhergestellt werden.
Mit Helper-Scripts
Bestehende Datenbank erstetzen.
docker-postgres-restore -c postgres11 -f /var/tmp/postgres11/nextcloud.sql -r
Ohne Helper-Scripts
Bestehende Datenbank anzeigen und löschen.
docker exec -i postgres11 psql -U nextcloud -l
# List of databases
# Name | Owner | Encoding | Collate | Ctype | Access privileges
# -----------+-----------+----------+------------+------------+-------------------------
# nextcloud | nextcloud | UTF8 | en_US.utf8 | en_US.utf8 | nextcloud=CTc/nextcloud+
| | | | | oc_admint=c/nextcloud
# ...
docker exec -i postgres11 psql -U nextcloud -d template1 -c "DROP DATABASE \"nextcloud\";"
Datenbank wieder erstellen und Export importieren.
docker exec -i postgres11 psql -U nextcloud -d template1 -c "CREATE DATABASE \"nextcloud\";"
cat /var/tmp/postgres11/nextcloud.sql | docker exec -i postgres11 psql -U nextcloud
docker exec -i postgres11 psql -U nextcloud -d template1 -c "GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud;"