Documentation

Backup & Recovery

How Odento protects your data against loss. Learn about our automated backup schedule, point-in-time recovery, disaster recovery plan, and data export capabilities.

Overview

Data loss is one of the most serious risks for any healthcare platform. Odento implements a multi-layered backup and recovery strategy: automated daily full backups, continuous write-ahead log (WAL) archiving for point-in-time recovery, off-site backup replication, and a documented disaster recovery plan with defined RTO and RPO targets.

All backups are encrypted, stored in India (Mumbai region), and regularly tested for restorability. Backup operations are monitored 24/7 with alerts on any failures.

Recovery Targets

RTO (Recovery Time Objective): 4 hours — maximum time to restore service after a disaster. RPO (Recovery Point Objective): 15 minutes — maximum data loss in a disaster scenario.

Screenshot — Overview

Automated Daily Backups

Odento performs automated full database backups daily. Backups are scheduled during low-traffic hours (2:00 AM IST) to minimize impact on performance. The backup process is fully automated and monitored — no manual intervention required.

Backup Schedule

Backup TypeFrequencyRetentionStorage
Full database backupDaily (2:00 AM IST)30 daysGCS Coldline (Mumbai)
WAL archiveContinuous (every 60s)7 daysGCS Standard (Mumbai)
Redis snapshotEvery 6 hours7 daysGCS Standard (Mumbai)
File storage (GCS)Continuous (GCS versioning)30 days of versionsGCS Standard (Mumbai)
Weekly archiveEvery Sunday12 weeksGCS Coldline (Mumbai)

Backup Encryption

All backups are encrypted with AES-256-GCM before being written to GCS. Encryption keys are managed via Cloud KMS and are separate from the production database keys. This means even if backup storage is compromised, the data cannot be decrypted without the specific backup encryption key.

Screenshot — Automated Daily Backups

Point-in-Time Recovery

Point-in-time recovery (PITR) allows restoring the database to any specific moment within the last 7 days. This is powered by PostgreSQL's write-ahead log (WAL) archiving — every database transaction is logged to WAL files, which are continuously shipped to GCS every 60 seconds.

PITR is essential for recovering from accidental data deletion, corrupted transactions, or application bugs that modify data incorrectly. Instead of restoring to the last daily backup (which could be up to 24 hours old), you can restore to the exact moment before the incident occurred.

How Point-in-Time Recovery Works

1. Incident detected (e.g., accidental deletion at 3:15 PM)
   ├── Admin identifies the exact time of the incident
   └── Recovery target: 3:14 PM (1 minute before)

2. Restore process initiated
   ├── Select base backup (previous night's full backup)
   ├── Replay WAL files up to the target timestamp
   └── Database restored to 3:14 PM state

3. Verification
   ├── Verify restored data integrity
   ├── Confirm the incident is reversed
   └── Application reconnects to restored database

4. Recovery time
   ├── Typical: 30-60 minutes
   └── Maximum: 4 hours (RTO)

PITR Limitations

Point-in-time recovery can only restore data within the WAL retention period (7 days). For older recovery needs, the last daily backup from the target date is used, which may result in up to 24 hours of data loss.

Disaster Recovery Plan

Odento has a documented and tested disaster recovery (DR) plan that covers scenarios ranging from single-component failures to complete regional outages. The plan is reviewed quarterly and tested with full recovery drills twice a year.

Disaster Scenarios and Response

  • Database failure: VM disk failure or PostgreSQL corruption. Recovery: restore from latest backup + WAL replay. RTO: 1 hour.
  • VM failure: Compute Engine VM becomes unavailable. Recovery: provision new VM, attach disk snapshot, restore services. RTO: 2 hours.
  • Redis failure: Redis data loss or corruption. Recovery: restart Redis, replay AOF/RDB. RTO: 30 minutes. Minimal data impact (cache only).
  • GCS outage: File storage unavailable. Recovery: GCS is highly available (99.95% SLA). If regional outage, switch to multi-regional bucket. RTO: 15 minutes.
  • Regional outage: Complete Mumbai region failure. Recovery: provision infrastructure in secondary region, restore from cross-region backup. RTO: 4 hours.
  • Ransomware/cyberattack: Recovery: isolate systems, restore from known-good backups, rotate all credentials, forensic analysis. RTO: 4-8 hours.

DR Testing

The disaster recovery plan is tested regularly:

  • Monthly: Automated backup restoration test — a random backup is restored to a test environment and verified.
  • Quarterly: Component failure simulation — a non-production service is intentionally failed to test failover.
  • Semi-annually: Full DR drill — complete infrastructure is provisioned from backups in an isolated environment.
  • Annually: Full regional failover test — infrastructure provisioned in a secondary region from cross-region backups.

99.9% Uptime SLA

Odento targets 99.9% uptime (max 8.76 hours downtime per year). The DR plan ensures rapid recovery from any failure scenario, keeping actual downtime well below this target.

Data Export

Organization owners can export their data at any time. Data export is available in multiple formats and includes all data belonging to the organization:

  • Patient records: CSV or JSON with all clinical notes, treatment plans, and medical history.
  • Appointments: CSV with full appointment history.
  • Financial data: CSV with invoices, payments, and GST reports.
  • Files (X-rays, photos): ZIP archive of all files from GCS (download links valid for 24 hours).
  • Audit logs: CSV or JSON export of all audit log entries.

Export Process

  1. Navigate to Settings → Data Management → Export.
  2. Select the data types to export.
  3. Select the date range (or export all data).
  4. Choose the export format (CSV, JSON, or ZIP for files).
  5. Click Request Export. The export is prepared asynchronously.
  6. You receive a WhatsApp and email notification when the export is ready.
  7. Download the export from the dashboard. Download links are valid for 24 hours.

Export Security

Data exports contain sensitive patient information. Export files are encrypted and download links are single-use. Ensure you store exported data securely and delete it when no longer needed.

Data Restoration Requests

If you need to restore data from a backup (e.g., after accidental deletion), contact our support team. Restoration requests are processed within 4 hours during business hours and 8 hours outside business hours. The following information is required:

  • Organization name and ID
  • Specific data to restore (patient records, appointments, invoices, etc.)
  • Target restore date and time (for point-in-time recovery)
  • Reason for restoration
  • Authorization from the organization owner

Contact support@odento.app or use the live chat in the dashboard to initiate a restoration request.

Screenshot — Data Restoration Requests

Was this page helpful?

Help us improve our documentation