SettleMint
Self-HostingHigh Availability

Backup and recovery

Backup scope, recovery dependencies, PostgreSQL point-in-time recovery, namespace snapshots, monitoring signals, and disaster recovery drills for self-hosted DALP deployments.

Self-hosted DALP restore coverage spans five surfaces: the database, Kubernetes resources, object storage, observability data, and configuration history. Verify the full set before treating an environment as production ready.

DALP can provision chart-level Velero backup resources for the release namespace, but HA/DR commitments come from the operated environment. Treat RTO and RPO as deployment targets that must be proven by restore drills using the selected backup storage, database recovery path, object storage setup, route-switch procedure, and operating team.

This page is a recovery reference for self-hosted deployments, not an SLA.

System context

Rendering diagram...

Recovery spans live DALP services, their state stores, the Kubernetes namespace, configuration history, observability data, and the external EVM networks used to reconcile restored state. Test recovery in an isolated environment before routing clients back to the restored stack.

Recovery scope

DALP provides chart-level backup resources and deployment guidance, but the recovery promise belongs to the operated environment. RTO and RPO values depend on the selected infrastructure, object storage, PostgreSQL setup, restore automation, and runbook staffing. Set those targets for your deployment, then prove them through recovery drills.

Do not publish an RTO or RPO as an external commitment until your target has passed a drill using the chosen backup location, database restore path, object storage configuration, and route-switch procedure.

Fix the operating inputs that determine whether the target is realistic before running a drill. The table below covers the main decisions:

Input to decideWhy it changes the recovery target
Backup storage providerS3-compatible storage, AWS S3, Azure Blob, and GCS each have different access requirements, region constraints, and restore procedures.
Backup schedule and retentionThe schedule, retention period, and minimum retained backups determine the oldest and newest usable restore points.
PostgreSQL restore methodContinuous WAL shipping, base backups, managed PITR, or a snapshot-only setup changes the achievable recovery point.
Namespace and volume coverageRestoring only part of the Kubernetes namespace can leave services, secrets, routes, or filesystem-backed volumes incomplete.
Route-switch and health checksRecovery time is not complete until DALP services pass health checks and their state is reconciled with the relevant EVM network.
Operator ownership and staffingManual approval, credential access, incident handoff, and on-call coverage affect the measured recovery time as much as tooling.

What the DALP chart contributes

When backups are enabled, the DALP chart can create the Velero backup storage location and schedule for the release namespace. The default schedule is daily at 02:00, targets DALP-labelled resources, includes persistent volumes through filesystem backup, excludes Kubernetes event resources, and derives the Velero TTL from the configured retention period.

These chart resources give operators a repeatable backup mechanism, but they do not prove disaster recovery on their own. Production evidence still needs each restored surface to work: the database, Kubernetes resources, object storage, application health checks, and reconciliation against the relevant EVM networks.

What gets backed up

ComponentBackup methodFrequencyRetentionRecovery purpose
PostgreSQL dataManaged PITR or CNPG WAL shipping to object storageContinuous30 daysRestore application state to a selected point in time.
Kubernetes resourcesVelero backups, with snapshots when availableHourly/Daily/Weekly48h/7d/30dRecreate namespace resources after cluster loss or drift.
Object storageBucket versioningAutomatic90 daysRecover uploaded files, backup payloads, and exported artifacts.
Observability dataVelero backups when self-hostedDaily3 daysPreserve enough telemetry for incident review.
ConfigurationHelm values in GitEach committed values updateIndefiniteRebuild the same deployment shape after an outage.

Chart-backed backup resources

The DALP chart can create Velero backup resources when backup.enabled is set. The chart configures a BackupStorageLocation and, when scheduled backups are enabled, a Velero Schedule for the release namespace plus any configured additional namespaces.

Chart settingDefaultRecovery meaning
backup.enabledfalseBackup resources are opt-in and require a Velero-compatible environment.
backup.storage.providers3Backup storage can use S3-compatible storage, AWS S3, Azure Blob, or GCS.
backup.schedule.cron0 2 * * *The DALP chart schedule runs daily at 02:00 when scheduled backups are enabled.
backup.retention.days30Velero backup TTL is derived from this value.
backup.includeAllPVCstrueVelero uses filesystem backup for volumes in the included namespace set.
backup.labelSelector.matchLabels.kots.io/app-slugsettlemint-dalpBackups select DALP-labelled resources instead of every resource in the cluster.
backup.schedule.pausedfalseOperators can pause the schedule without deleting the backup definition.

The support chart also carries a Velero schedule for platform support backups. In that chart, the default schedule runs every 4 hours with a 7-day TTL and excludes Kubernetes event resources. Treat both charts as separate backup surfaces when you test recovery.

PostgreSQL PITR

For CloudNativePG deployments:

  • WAL shipping to object storage is continuous.
  • Base backups run daily.
  • Point-in-time recovery can restore to a moment within the retention window.

Velero can use CSI snapshots when a compatible CSI driver and VolumeSnapshot CRDs are installed. Without that support, Velero performs file-level backups.

Recovery checks

Run restore tests in an isolated environment. Record elapsed time and compare it against your RTO target. Validate the achieved RPO from the restored timestamp and reconciliation result. All five checks below must pass.

  1. PostgreSQL restores to the selected timestamp inside the PITR window.
  2. Kubernetes resources restore with the expected secrets, config maps, services, ingress, and persistent volumes.
  3. Object storage data is present at the expected version.
  4. DALP services start against the restored database and configuration.
  5. You record the achieved RTO and RPO, then compare them with the deployment target.
Rendering diagram...

The diagram is the minimum drill loop. Database recovery alone does not close a drill. DALP services must start and indexed state must reconcile with chain state before you record the elapsed time. Any missing runbook step is a failure: document it and repeat.

Restore evidence to keep

EvidenceWhy it matters
Backup name and creation timeShows which recovery point was used.
Restore target timestampLets operators compare the intended RPO with the achieved restore point.
Database checkpoint or WAL endConfirms the database restored to the expected point before services started.
Restored namespace inventoryConfirms workloads, services, secrets, ingress, and persistent volumes exist.
Object version checkConfirms uploaded files and exported artifacts match the restored environment.
Application health checksConfirms DALP services can read the restored state and serve traffic.
Reconciliation resultConfirms that indexed state, off-chain records, and on-chain state are consistent enough to run.

For Velero filesystem backups, include the pod resources in the restore. Restoring only persistent volume claims can recreate empty volumes because the node agent downloads filesystem data when the restored pods run the restore wait flow.

Monitoring

Key metrics to monitor

  • Pod availability for application health.
  • Pod restart counts for service stability.
  • PostgreSQL replication lag for data consistency.
  • Backup success and failure counts for recoverability.
  • Certificate expiration for TLS continuity.
  • Treat any backup failure as critical.
  • Warn when replication lag exceeds 60 seconds.
  • Warn when pod restarts exceed 5 per hour.
  • Warn when a certificate expires in less than 14 days.
  • Warn when disk usage exceeds 80%.

DR testing requirements

Quarterly DR drills

  1. Restore from backup to a test environment.
  2. Verify data integrity.
  3. Test application functionality.
  4. Document your recovery time.
  5. Update runbooks if needed.

Annual full DR test

  1. Simulate cluster failure.
  2. Execute the full recovery procedure.
  3. Measure your actual RTO/RPO against the deployment targets.
  4. Report the result to the accountable operating team.
  5. Update the SLA or operating target if needed.

On this page