Wie man eine Matrix Synapse PostgreSQL-Datenbank sichert und wiederherstellt

Eine zuverlässige Synapse-Wiederherstellung beginnt mit einem lesbaren PostgreSQL-Dump, einer leeren Zieldatenbank und den zugehörigen Homeserver-Dateien. Für eine typische Einzeldatenbankinstallation empfiehlt Synapses Backup-Anleitung das benutzerdefinierte PostgreSQL-Dump-Format und schließt den Inhalt von `/etc/postgresql` aus e2e_one_time_keys_json. Stellen Sie die Daten in einer neu erstellten, leeren Datenbank wieder her; überschreiben Sie keine Tabellen, die von einer früheren Installation vorhanden waren. Überprüfen Sie anschließend, ob Synapse mit der wiederhergestellten Datenbank startet und ob lokale Medien und Signaturschlüssel vorhanden sind.

Diese Anleitung setzt einen Linux-Host, eine PostgreSQL-Datenbank namens `<Datenbankname>` synapseund eine Datenbankrolle namens `<Datenbankrolle>` voraus synapse_user. Ersetzen Sie `<Datenbankname>`, `<Rolle>`, `Backup-Pfad`, `Servicename` und `Konfigurationspfad` durch die in Ihrer Umgebung verwendeten Angaben. Für Docker Compose, Kubernetes, verwaltete PostgreSQL-Datenbanken und Synapse-Bereitstellungen mit mehreren Datenbanken benötigen Sie entsprechende Befehle.

Was ein Datenbank-Dump schützt – und was nicht.

pg_dumpEs wird eine PostgreSQL-Datenbank in einem konsistenten Snapshot erfasst, sodass PostgreSQL und Synapse während des Dump-Vorgangs online bleiben können. Ein Archiv im benutzerdefinierten Format ( -Fc) kann mit untersucht und wiederhergestellt werden pg_restore. Die Synapse-Anleitung empfiehlt ausdrücklich, Daten von Tabellen mit Einmalschlüsseln auszuschließen: Die Wiederherstellung älterer, verwendeter Schlüssel kann dazu führen, dass Clients die Schlüssel erneut erhalten und Nachrichten entschlüsselt werden müssen. Die Tabellendefinition kann weiterhin im Archiv enthalten sein. Suchen Sie beim Überprüfen der Archivliste nach Tabellendateneinträgen und gehen Sie nicht davon aus, dass eine aufgeführte Tabelle Zeilen enthält.

Ein Datenbank-Dump allein reicht für eine vollständige Homeserver-Sicherung nicht aus. Bewahren Sie zusätzlich homeserver.yamlalle darin referenzierten Dateien, den Server-Signaturschlüssel und das Medienverzeichnis auf. Synapses Sicherungsleitfaden weist darauf hin, dass lokal hochgeladene Medien wichtig sind, da sich möglicherweise die einzige Kopie auf dem Homeserver befindet. Wenn Ihre Konfiguration mehrere Datenbankeinträge verwendet, erstellen Sie für jede von Synapse genutzte Datenbank einen Dump.

Bevor Sie beginnen

  • Bitte überprüfen Sie den konfigurierten Datenbanknamen, Benutzer, Host, Port und ob Synapse eine oder mehrere Datenbanken verwendet.
  • Prüfen Sie, ob die PostgreSQL-Client-Dienstprogramme pg_dump, pg_restore, createdbund psqlinstalliert und mit Ihrem PostgreSQL-Server kompatibel sind.
  • Wählen Sie ein geschütztes Backup-Ziel mit ausreichend freiem Speicherplatz. Backups können private Nachrichten und Kontodaten enthalten; beschränken Sie daher den Zugriff und verschlüsseln Sie die Backups sowohl im Ruhezustand als auch während der Übertragung.
  • Notieren Sie das Synapse-Konfigurationsverzeichnis, den Pfad zum Signaturschlüssel und media_store_path. Sichern Sie Geheimnisse, ohne sie in der Shell-Historie, im Chat oder in Protokollen preiszugeben.
  • Entscheiden Sie, wie Sie die Wiederherstellung testen. Eine Testwiederherstellung auf einem isolierten Host oder einer Staging-Datenbank ist ein aussagekräftigerer Beweis als ein erfolgreicher Dump-Befehl allein.

PostgreSQL-Backup erstellen und überprüfen

1. Bestätigen Sie die Zieldatenbank und die Rolle.

Melden Sie sich auf einem selbstverwalteten PostgreSQL-Host als PostgreSQL-Administrator an und überprüfen Sie die Datenbankliste und die Beziehungen. Verwenden Sie dabei nicht einfach einen angenommenen Namen aus einer Beispielkonfiguration. Wenn Ihr Homeserver eine Remote- oder verwaltete Datenbank nutzt, verwenden Sie die dafür vorgesehene Verbindungsmethode und stellen Sie sicher, dass das Dump-Konto über die erforderlichen Leserechte verfügt.

Ein PostgreSQL-Terminal listet die Synapse-Datenbankrelationen und den Besitzer synapse_user auf.
Eine Terminalansicht der Synapse-Beziehungen und ihrer Besitzer hilft zu bestätigen, dass der Backup-Befehl die beabsichtigte Datenbank anvisiert.

2. Erstellen Sie einen benutzerdefinierten Datenspeicherabbild.

Erstellen Sie ein Verzeichnis, auf das nur das Backup-Konto oder Administratoren Zugriff haben. Das folgende Beispiel wird pg_dumpals lokales PostgreSQL-Betriebssystemkonto ausgeführt und schreibt in einen geschützten Pfad. Ändern Sie den Pfad in einen Pfad, der in Ihrer Umgebung existiert und beschreibbar ist.

sudo -u postgres pg_dump -Fc \
  --exclude-table-data e2e_one_time_keys_json \
  synapse -f /var/backups/synapse/synapse.dump

Bei entfernten Datenbanken verwenden Sie für die Verbindungseinstellungen die in Ihrer Umgebung übliche Methode, z. B. eine geschützte .pgpassDatei oder libpq-Umgebungsvariablen. Geben Sie Passwörter nicht direkt in der Befehlszeile an. Verwenden Sie die Ausschlussoption nur, wenn Sie einen triftigen, dokumentierten Grund haben, die Einmalschlüsseltabelle anders zu behandeln.

Ein Terminal, in dem pg_dump im benutzerdefinierten Format ausgeführt wird, wobei die e2e_one_time_keys_json-Daten ausgeschlossen sind, gefolgt von einer Dateiauflistung.
Der Backup-Befehl schließt Einmalschlüsseldaten aus und erstellt ein Archiv im benutzerdefinierten Format zur späteren Überprüfung mit pg_restore.

3. Überprüfen Sie das Archiv und speichern Sie eine Prüfsumme.

Prüfen Sie, ob die Dump-Datei existiert, einen Wert ungleich null enthält und als PostgreSQL-Archiv lesbar ist. Eine erfolgreiche Auflistung ist ein nützlicher erster Test, beweist aber weder, dass die Wiederherstellung abgeschlossen wird, noch dass der gesamte Homeserver betriebsbereit ist.

sudo -u postgres pg_restore --list /var/backups/synapse/synapse.dump
sha256sum /var/backups/synapse/synapse.dump

Speichern Sie die Prüfsumme neben dem Sicherungsdatensatz und kopieren Sie den Dump anschließend auf ein separates System oder einen Sicherungsdienst. Berechnen Sie die Prüfsumme nach dem Kopieren neu und vergleichen Sie die Werte. Für die Wiederherstellung im Produktivbetrieb sollten Sie regelmäßige Sicherungen planen, mehrere Generationen aufbewahren, diese verschlüsseln und regelmäßig Wiederherstellungsübungen durchführen.

Wiederherstellung in einer sauberen Datenbank

4. Synapse stoppen und ein leeres Ziel vorbereiten.

Für eine Wiederherstellung muss Synapse zuerst gestoppt werden, damit keine Verbindung hergestellt werden kann, während die Datenbank ersetzt oder getestet wird. Der unten stehende Dienstname ist bei einigen Paketinstallationen üblich, kann aber variieren. Docker-Benutzer sollten den Synapse-Dienst über ihr Compose-Projekt stoppen, und orchestrierte Bereitstellungen sollten ihr normales Wartungsverfahren verwenden. PostgreSQL selbst muss nicht gestoppt werden.

Ein Linux-Terminal zeigt, dass der Synapse-Dienst vor der Wiederherstellung einer Datenbank gestoppt wurde.
Stoppen Sie die Synapse-Anwendung, bevor Sie ihre Datenbank auf eine wiederhergestellte Kopie umschalten; verwenden Sie den auf Ihrem Host konfigurierten Dienstnamen.

Verwenden Sie für die Wiederherstellung eine neue, leere Datenbank. Stellen Sie keine bestehende Synapse-Datenbank oder eine Datenbank mit bereits vorhandenen Tabellen wieder her. Wenn Sie die aktuelle Datenbank für ein Rollback benötigen, lassen Sie sie unverändert und stellen Sie die Datenbank unter einem temporären Datenbanknamen wieder her. Überprüfen Sie die Datenbank anschließend, bevor Sie die Synapse-Konfiguration ändern.

sudo -u postgres createdb \
  --encoding=UTF8 --locale=C --template=template0 \
  --owner=synapse_user synapse

Der Datenbankbesitzer und das Gebietsschema müssen den Anforderungen Ihrer Synapse-Konfiguration entsprechen. Falls der Zielname bereits existiert, prüfen Sie, welche Datenbank Sie verwenden möchten; gehen Sie nicht davon aus, dass das Löschen der Datenbank unbedenklich ist. Erstellen Sie zunächst alle erforderlichen PostgreSQL-Rollen. Eine einzelne Datenbank pg_dumpumfasst keine clusterweiten Rollen. Daher benötigt ein Administrator, der zu einem neuen PostgreSQL-Cluster wechselt, möglicherweise auch eine separat geschützte Sicherung der globalen Variablen pg_dumpall --globals-only.

Ein Terminal erstellt eine leere UTF8-PostgreSQL-Datenbank mit C-Locale, template0 und synapse_user als Eigentümer.
Erstellen Sie das Ziel als leere Datenbank mit der von Synapse erwarteten Kodierung, dem Gebietsschema und dem Eigentümer.

5. Archiv wiederherstellen und Einmalschlüssel verwalten

Laden Sie das benutzerdefinierte Archiv in das leere Zielverzeichnis. Die Option „Explizite Fehlerbehandlung“ bewirkt, dass die Wiederherstellung bei einem Fehler abgebrochen wird, anstatt fortzufahren und ein unvollständiges Ergebnis zu hinterlassen, das leicht übersehen werden kann.

sudo -u postgres pg_restore --exit-on-error \
  --dbname=synapse /var/backups/synapse/synapse.dump

Falls Ihr Backup die Tabelle nicht ausschloss e2e_one_time_keys_json, stellen Sie eine Verbindung zur wiederhergestellten Datenbank her und leeren Sie diese Tabelle, bevor Sie Synapse starten. Dies ist die von Synapse dokumentierte Sicherheitsmaßnahme für Backups, die diese Zeilen enthalten. Führen Sie diesen Befehl nicht ohne Weiteres auf einer aktiven Datenbank aus: Er löscht alle Zeilen in dieser Tabelle.

Ein PostgreSQL-Terminal, auf dem pg_restore ausgeführt wird, um ein Synapse-Archiv im benutzerdefinierten Format in die Synapse-Datenbank zu laden.
Das Archiv sollte erst nach dem Erstellen einer neuen, leeren Zieldatenbank wiederhergestellt werden. Überprüfen Sie alle Fehlermeldungen, bevor Sie fortfahren.
Ein psql-Terminal, das mit Synapse verbunden ist und TRUNCATE e2e_one_time_keys_json anzeigt.
Verwenden Sie diese Option nur, wenn der wiederhergestellte Dump Zeilen mit Einmalschlüsseln enthielt; Synapse sollte so lange gestoppt bleiben, bis die Tabelle gelöscht wurde.
sudo -u postgres psql -d synapse \
  -c 'TRUNCATE e2e_one_time_keys_json;'

Wenn Sie den empfohlenen Ausschluss verwendet haben, enthält die Wiederherstellung keine alten Einmalschlüsselzeilen mehr, und dieser Kürzungsschritt ist überflüssig. Ein Tabelleneintrag pg_restore --listkann eine Tabellendefinition ohne die zugehörigen Daten darstellen. Prüfen Sie TABLE DATAbeim Durchsehen der Archivinhalte auf solche Einträge; der sicherste Betriebsdatensatz ist der exakt verwendete Dump-Befehl.

Synapse wiederherstellen und die Wiederherstellung überprüfen.

6. Begleitdateien wiederherstellen und Synapse starten

Stellen Sie vor dem Neustart sicher, dass die wiederhergestellte Konfiguration auf die vorgesehene Datenbank verweist und der erwartete Signaturschlüssel sowie der Medienspeicher für den Synapse-Prozess verfügbar sind. Wenn Sie die Wiederherstellung unter einem temporären Datenbanknamen durchgeführt haben, aktualisieren Sie die Datenbankeinstellungen sicher, validieren Sie die Datei und aktivieren Sie sie anschließend mit Ihrem üblichen Bereitstellungsprozess. Bewahren Sie die alte Datenbank und die vorherige Konfiguration so lange auf, bis die neue Instanz die Prüfungen bestanden hat.

Starten Sie den Dienst mit dem für Ihre Bereitstellung geeigneten Befehl. Überprüfen Sie auf einem Systemd-Host den Dienststatus und die aktuellen Protokolle. Überprüfen Sie in Containern den Containerzustand und die Protokolle. Ein laufender Prozess ist ein erstes Signal, aber kein Beweis dafür, dass Benutzer Räume lesen, Nachrichten senden oder Anhänge abrufen können.

Ein Terminalfenster, das die PostgreSQL-Archivliste durchgeht und die Befehle zum Starten und zum Status der Dienste von Synapse anzeigt.
Nach der Wiederherstellung sollten Sie die Archiv- und Serviceprotokolle prüfen und anschließend die tatsächlichen Clientvorgänge verifizieren, bevor Sie die Wiederherstellung als abgeschlossen erklären.

7. Testfunktionen, auf die die Benutzer angewiesen sind

  • Prüfen Sie, ob Synapse ohne Datenbankmigrations-, Berechtigungs-, Gebietsschema- oder Verbindungsfehler startet.
  • Melden Sie sich mit einem Testkonto an und lesen Sie die vorhandenen Räume; senden Sie eine Testnachricht, sofern Ihr Wartungsvertrag dies zulässt.
  • Prüfen Sie das Verhalten von Verbunddiensten und Anwendungsdiensten, falls diese Funktionen Teil Ihrer Bereitstellung sind.
  • Öffnen Sie einen bekannten, lokal hochgeladenen Anhang oder Avatar, um zu testen, ob der Medienspeicher mit der wiederhergestellten Datenbank übereinstimmt.
  • Prüfen Sie nach dem Start die Synapse- und PostgreSQL-Protokolle auf wiederholte Fehler, nicht nur auf den ersten erfolgreichen Integritätscheck.

Eine Wiederherstellung kann technisch erfolgreich sein, auch wenn Mediendateien, referenzierte Konfigurationen oder Rollen fehlen. Falls Benutzer fehlende Anhänge feststellen, überprüfen Sie den konfigurierten Medienspeicher und stellen Sie die entsprechende lokale Mediensicherung wieder her. Kann Synapse keine Verbindung herstellen, vergleichen Sie den wiederhergestellten Datenbankbesitzer, die Anmeldeinformationen, den Host, den Datenbanknamen, das Gebietsschema und die aktive Konfigurationsdatei.

Häufige Fehlersignale und wann die Methode geändert werden sollte

SignalWas Sie als Nächstes überprüfen sollten
pg_restoreMeldet bestehende Beziehungen oder EigentumsfehlerStellen Sie sicher, dass das Zielverzeichnis leer ist und die erforderlichen Rollen vorhanden sind. Stellen Sie die Daten in einer neuen Datenbank wieder her; verwenden Sie diese Methode nicht --cleanals Abkürzung für eine Datenbank, deren Inhalt erhalten bleiben muss.
Der Befehl dump gibt einen Rückgabewert ungleich Null zurück oder erzeugt eine unlesbare Datei.Prüfen Sie die Client-/Server-Kompatibilität, Berechtigungen, den verfügbaren Speicherplatz, die Zielberechtigungen und die PostgreSQL-Protokolle. Erstellen Sie einen neuen Dump und validieren Sie diesen, bevor Sie ihn verwenden.
Synapse startet, aber alte Einmal-Schlüssel wurden miteinbezogen.Stoppen Sie Synapse und befolgen Sie die dokumentierte Vorgehensweise zur Datenkürzung, bevor Sie es wieder Clients zur Verfügung stellen.
Die Räume funktionieren, aber die lokalen Verbindungen fehlen.Stellen Sie den passenden lokalen Medienspeicher und die Konfiguration wieder her; ein PostgreSQL-Dump enthält keine hochgeladenen Mediendateien.
Die Wiederherstellungszeit oder die Datenbankgröße überschreitet das akzeptable ZeitfensterBewerten Sie die anderen Backup-Ansätze von PostgreSQL, wie z. B. Basis-Backups und Point-in-Time-Recovery mittels WAL-Archivierung, im Hinblick auf Ihre Recovery Point und Recovery Time Objectives.

Logische Backups sind portabel und für viele kleine und mittlere Installationen unkompliziert, ihre Wiederherstellung kann jedoch mit zunehmender Datenbankgröße zeitaufwendig sein. Für große oder hochverfügbare Dienste sollten Sie die aktuelle Backup-Dokumentation von PostgreSQL konsultieren und ein getestetes physisches Backup oder eine Wiederherstellung zu einem bestimmten Zeitpunkt planen. Erstellen Sie ein separates logisches Backup, wenn dieses einem separaten Portabilitäts- oder Audit-Zweck dient. Beide Methoden schützen keine Dateien, die außerhalb von PostgreSQL gespeichert sind, es sei denn, diese werden separat gesichert.

Ein Terminal berechnet eine SHA-256-Prüfsumme für synapse.dump und listet eine Kopie an einem separaten Sicherungsort auf.
Vergleichen Sie die Prüfsumme nach dem Kopieren des Archivs vom Synapse-Host, um Übertragungs- oder Speicheränderungen zu erkennen.

Checkliste zur Wiederherstellung

  • Der Dump ist lesbar pg_restore --listund seine Prüfsumme stimmt mit der externen Kopie überein.
  • Die Wiederherstellung erfolgte in einer neuen, leeren Datenbank mit der erwarteten Kodierung, dem Gebietsschema, dem Eigentümer und den Rollen.
  • Einmalige Schlüsselzeilen wurden ausgeschlossen oder die Tabelle wurde vor dem Neustart von Synapse gekürzt.
  • Konfigurationsdateien, Signaturschlüssel und die erforderlichen lokalen Medien wurden aus kompatiblen Backups wiederhergestellt.
  • Die Synapse-Protokolle sind für den Dienst ausreichend sauber, und die Prüfungen auf Clientebene für Räume und Medien sind erfolgreich.
  • Eine Wiederherstellungsübung hat die dokumentierten Wiederherstellungsschritte bestätigt und die tatsächliche Wiederherstellungszeit gemessen.

Offizielle Referenzen

Die Dokumentation wurde am 6. Oktober 2026 geprüft. Befehlsnamen und Dienstverwaltung variieren je nach Betriebssystem, Container-Image, PostgreSQL-Version und Synapse-Bereitstellung. Vergleichen Sie die Anweisungen mit der Dokumentation für die von Ihnen verwendete Version und Paketierungsmethode.

Einen Kommentar hinterlassen

So konfigurieren Sie die LDAP-Authentifizierung in ownCloud Infinite Scale

So konfigurieren Sie die LDAP-Authentifizierung in ownCloud Infinite Scale

Konfigurieren Sie die LDAP-gestützte Anmeldung für ownCloud Infinite Scale, ordnen Sie Benutzer und Gruppen zu, wählen Sie zwischen integriertem und externem OIDC, schützen Sie Anmeldeinformationen und überprüfen Sie die Authentifizierung sicher.

So migrieren Sie von ownCloud 10 Classic zu ownCloud Infinite Scale

So migrieren Sie von ownCloud 10 Classic zu ownCloud Infinite Scale

Planen Sie eine Migration von ownCloud Classic 10 zu Infinite Scale mit der unterstützten Anwendung „migrate-to-ocis“. Erfahren Sie, welche Daten übertragen werden, welche nicht, welche LDAP-Voraussetzungen gelten, welche Befehle benötigt werden und welche Prüfungen beim Übergang durchzuführen sind.

So richten Sie benutzerdefinierte SpamAssassin-Regeln in Zimbra ein (sicher)

So richten Sie benutzerdefinierte SpamAssassin-Regeln in Zimbra ein (sicher)

Erfahren Sie, wo Zimbra benutzerdefinierte SpamAssassin-Regeln lädt, wie man eine .cf-Regel schreibt und validiert, wie man Amavis neu startet, wie man Nachrichtenkopfzeilen testet und wie man sicher ein Rollback durchführt.

So sichern und stellen Sie einzelne Postfächer in Zimbra CE wieder her

So sichern und stellen Sie einzelne Postfächer in Zimbra CE wieder her

Sichern und stellen Sie ein einzelnes Zimbra CE-Postfach mit zmmailbox wieder her. Exportieren Sie ein ZIP-Archiv mit Metadaten, überprüfen Sie es und testen Sie die Wiederherstellung sicher in einem Testkonto.

So konfigurieren Sie Speicherkontingente für Benutzer in ownCloud oCIS

So konfigurieren Sie Speicherkontingente für Benutzer in ownCloud oCIS

Erfahren Sie, wie Sie ein persönliches Speicherplatzkontingent für einen ownCloud Infinite Scale-Benutzer festlegen, dieses von Projektbereichs- und globalen Limits unterscheiden und neuen Benutzern rollenbasierte Standardeinstellungen zuweisen.

Behebung von BigBlueButton FreeSWITCH SIP-Registrierungs-Timeouts: Ein praktischer Diagnoseleitfaden

Behebung von BigBlueButton FreeSWITCH SIP-Registrierungs-Timeouts: Ein praktischer Diagnoseleitfaden

Diagnostizieren Sie BigBlueButton FreeSWITCH SIP-Registrierungstimeouts, indem Sie den Dienststatus, SIP- und ESL-Listener, NAT-Adressen, Firewall-Regeln und Protokolle überprüfen.

So beheben Sie den Fehler „Verbindung abgelehnt“ in der ownCloud Mobile App

So beheben Sie den Fehler „Verbindung abgelehnt“ in der ownCloud Mobile App

Beheben Sie Verbindungsfehler der ownCloud-Mobil-App, indem Sie die Server-URL, den HTTPS-Port, den Webserver, die Firewall, den Proxy, TLS und die vertrauenswürdigen Domänen überprüfen.

So schränken Sie die Benutzerregistrierung auf einem selbstgehosteten Matrix-Server ein

So schränken Sie die Benutzerregistrierung auf einem selbstgehosteten Matrix-Server ein

Vergleichen Sie die Möglichkeiten zur Kontrolle neuer Matrix-Konten auf Synapse, von der Deaktivierung der öffentlichen Registrierung bis zur Ausstellung von Token mit begrenzter Nutzungsdauer, mit Konfigurationsbeispielen und Prüfungen.

Fix the ownCloud Blank Page / White Screen of Death: Choose the Right Recovery Path

Fix the ownCloud Blank Page / White Screen of Death: Choose the Right Recovery Path

Fix an ownCloud blank page by separating browser, PHP, app, permissions, upgrade, and proxy failures, then choose the least disruptive recovery path.

So beheben Sie den Zimbra-Fehler „Nginx-Proxy-Dienst wurde gestoppt“.

So beheben Sie den Zimbra-Fehler „Nginx-Proxy-Dienst wurde gestoppt“.

Diagnostizieren Sie den gestoppten NGINX-Proxy von Zimbra, lesen Sie die entsprechenden Protokolle, starten Sie ihn sicher neu und überprüfen Sie gezielte Korrekturen für fehlende Konfigurationen, ungültige Ports, Zertifikate und Upstream-Fehler.