Zum Hauptinhalt springen
Version: 1.89.x (Q2 26)

Managed Service Backups

Codesphere ermöglicht es, automatisierte Backups für Managed Services zu aktivieren, um Datenverlust zu verhindern. Aktuell ist die Konfiguration und Verwaltung von Backups nur über die öffentliche API möglich. Zukünftig wird diese Funktionalität auch über die Codesphere-UI verfügbar sein.

Unterstützte Services sind PostgreSQL und Object Store, wobei die Sicherung in einen beliebigen S3-kompatiblen Backup Store erfolgen kann.

Grundlegende Konzepte

  • Backup Store: Der externe Speicherort, an dem die Backups gesichert werden. Dies kann ein externer S3-kompatibler Dienst (wie AWS S3) oder ein Codesphere S3 Managed Service sein.
  • Aufbewahrungszeitraum: Die Anzahl der Tage, die ein Backup aufbewahrt wird, bevor es automatisch von Codesphere gelöscht wird (deleteRetentionDays).
  • Intervall: Wie oft ein neues Backup erstellt wird, gemessen in Stunden (intervalH). Codesphere übernimmt die Planung automatisch.
  • Wiederherstellung (Recovery): Das Erstellen eines neuen Managed Service im exakten Zustand eines vorherigen Backups oder Zeitpunkts.

Provider-Fähigkeiten prüfen

Nicht alle Managed Services unterstützen Backups oder Point-in-Time Recovery. Um zu prüfen, ob ein Provider dies unterstützt, kann der API-Endpunkt /managed-services/providers verwendet werden. Das capabilities-Objekt listet zwei spezifische Funktionen auf:

  • backups: Der Provider unterstützt das Erstellen automatisierter Backups und die Wiederherstellung eines Services in den exakten Zustand zum Zeitpunkt eines bestimmten Backups.
  • pointInTimeRecovery: Zusätzlich zu Standard-Backups unterstützt der Provider die Wiederherstellung eines Services zu einem beliebigen Zeitpunkt (z. B. einer bestimmten Minute) zwischen zwei Backups.

Wenn pointInTimeRecovery den Wert true hat, ist auch backups immer true.

Backups aktivieren

Backups können sowohl bei der Erstellung eines neuen Managed Service als auch durch Aktualisieren eines bestehenden Service aktiviert werden.

Um Backups zu aktivieren, wird der backups-Block im Request-Body mit enabled: true, dem gewünschten intervalH, deleteRetentionDays sowie der Storage-config und den secrets angegeben.

info

Die Werte, die für config und secrets angegeben werden (sowohl im backups-Block als auch im unten beschriebenen recoverFrom-Block), sind spezifisch für den jeweiligen Managed-Service-Provider. Codesphere validiert diese anhand des backups.configSchema und backups.secretsSchema, die vom Provider definiert werden. Diese Schemas können in der Antwort des API-Endpunkts /managed-services/providers eingesehen werden.

Bei der Erstellung

Verwende den Endpunkt POST /managed-services:

curl -X POST "https://api.codesphere.com/managed-services" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"teamId": 123,
"name": "my-postgres-with-backups",
"provider": {
"name": "postgresql",
"version": "15"
},
"plan": {
"id": 1,
"parameters": { "storage": 10 }
},
"config": {
"max_connections": "100"
},
"secrets": {
"password": "secure-password"
},
"backups": {
"enabled": true,
"intervalH": 24,
"deleteRetentionDays": 7,
"config": {
"endpointUrl": "https://s3.eu-central-1.amazonaws.com",
"destinationPath": "s3://my-codesphere-backups/"
},
"secrets": {
"accessKey": "YOUR_S3_ACCESS_KEY",
"secretKey": "YOUR_S3_SECRET_KEY"
}
}
}'

Bei einem bestehenden Service

Verwende den Endpunkt PATCH /managed-services/{id}, um die backups-Konfiguration zu aktualisieren:

curl -X PATCH "https://api.codesphere.com/managed-services/YOUR_SERVICE_ID" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"backups": {
"enabled": true,
"intervalH": 12,
"deleteRetentionDays": 30,
"config": {
"endpointUrl": "https://s3.eu-central-1.amazonaws.com",
"destinationPath": "s3://my-codesphere-backups/"
},
"secrets": {
"accessKey": "YOUR_S3_ACCESS_KEY",
"secretKey": "YOUR_S3_SECRET_KEY"
}
}
}'

Aus einem Backup wiederherstellen (Recovery)

Das Wiederherstellen eines Backups in Codesphere erstellt immer einen neuen Managed Service, anstatt die Daten des bestehenden Service zu ersetzen. Der bestehende Managed Service bleibt dabei unangetastet und vollständig unabhängig.

Um ein Backup wiederherzustellen, wird ein neuer Managed Service erstellt, wobei die Eigenschaft recoverFrom verwendet wird, um entweder eine bestimmte Backup-ID oder eine vorherige Managed-Service-ID zusammen mit einem Wiederherstellungszeitpunkt (Timestamp) anzugeben.

info

Bei der Wiederherstellung ist der backups-Block nicht unbedingt erforderlich. Er steuert lediglich, ob der wiederhergestellte Service selbst Backups von sich erstellt.

Point-in-Time Recovery:

curl -X POST "https://api.codesphere.com/managed-services" \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"teamId": 123,
"name": "my-postgres-recovered",
"provider": {
"name": "postgresql",
"version": "15"
},
"plan": {
"id": 1,
"parameters": { "storage": 10 }
},
"config": {
"max_connections": "100"
},
"secrets": {
"password": "secure-password"
},
"recoverFrom": {
"msId": "OLD_MANAGED_SERVICE_ID",
"time": "2026-04-10T12:00:00Z",
"config": {
"endpointUrl": "https://s3.eu-central-1.amazonaws.com",
"destinationPath": "s3://my-codesphere-backups/"
},
"secrets": {
"accessKey": "YOUR_S3_ACCESS_KEY",
"secretKey": "YOUR_S3_SECRET_KEY"
}
}
}'

Von einem bestimmten Backup wiederherstellen:

Alternativ kann id ohne msId oder time verwendet werden:

"recoverFrom": {
"id": "BACKUP_UUID_HERE",
"config": { ... },
"secrets": { ... }
}

Ein manuelles Backup auslösen

Für einen Service, der dies unterstützt, kann sofort ein Backup auf Anfrage (on-demand) eingeplant werden:

curl -X POST "https://api.codesphere.com/managed-services/YOUR_SERVICE_ID/backups" \
-H "Authorization: Bearer YOUR_API_TOKEN"

Haftungsausschlüsse und Einschränkungen

Bei der Nutzung von Managed Service Backups sind folgende Punkte zu beachten:

  • Eigenverantwortung für S3-Storage: Die Verschlüsselung und Redundanz der Backups liegt in der Verantwortung des Nutzers. Es muss sichergestellt werden, dass der konfigurierte S3-Storage den Sicherheits- und Redundanzanforderungen der eigenen Organisation entspricht.
  • Zeitpunkt der Backups: Es gibt keine Garantie für den exakten Zeitpunkt, zu dem ein geplantes Backup ausgeführt wird. Die tatsächliche Erstellung des Backups kann sich je nach Systemlast und Netzwerkbedingungen um einige Minuten verzögern.

Besonderheiten bei PostgreSQL

Für das Abrufen und Wiederherstellen von PostgreSQL-Datenbanken gelten folgende spezifische Einschränkungen und Voraussetzungen:

  • Transaktion erforderlich: Um eine Postgres-Datenbank wiederherzustellen, muss mindestens eine Datenbanktransaktion stattgefunden haben.
  • Vorheriges Backup erforderlich: Vor dem gewünschten Wiederherstellungszeitpunkt muss mindestens ein abgeschlossenes Backup vorliegen.
  • Zeitliche Einordnung der WAL-Datei: Der Wiederherstellungszeitpunkt muss vor der letzten Transaktion in der aktuellsten Write-Ahead-Log-Datei (WAL) liegen. Es kann einige Minuten dauern, bis die aktuellste WAL-Datei im Backup-Storage-Bucket gespeichert wird.
  • Versionskompatibilität: Es ist nicht garantiert, dass die Wiederherstellung eines Backups mit einer anderen Datenbankversion als der ursprünglichen funktioniert.
  • Übereinstimmende Zugangsdaten: Bei der Wiederherstellung können Datenbankbenutzer, Datenbankname und Passwörter nicht auf andere Werte geändert werden, als ursprünglich im Backup gespeichert wurden.