ObjectStackObjectStack

Disaster Recovery

Disaster Recovery protocol schemas

Backup Strategy Schema

Defines backup methods for disaster recovery.

  • full: Complete snapshot of all data
  • incremental: Only changes since last backup
  • differential: All changes since last full backup

@example

const backup: BackupConfig = {
  strategy: 'incremental',
  schedule: '0 2 * * *',
  retention: { days: 30, minCopies: 3 },
  encryption: { enabled: true, algorithm: 'AES-256-GCM' },
};

Source: packages/spec/src/system/disaster-recovery.zod.ts

TypeScript Usage

import { BackupConfigSchema, BackupRetentionSchema, BackupStrategySchema, DisasterRecoveryPlanSchema, FailoverConfigSchema, FailoverModeSchema, RPOSchema, RTOSchema } from '@objectstack/spec/system';
import type { BackupConfig, BackupRetention, BackupStrategy, DisasterRecoveryPlan, FailoverConfig, FailoverMode, RPO, RTO } from '@objectstack/spec/system';

// Validate data
const result = BackupConfigSchema.parse(data);

BackupConfig

Backup configuration

Properties

PropertyTypeRequiredDescription
strategyEnum<'full' | 'incremental' | 'differential'>optionalBackup strategy
schedulestring | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }optionalCron expression for backup schedule — cron0 2 * * *
retention{ days: number; minCopies?: number; maxCopies?: number }Backup retention policy
destination{ type: Enum<'s3' | 'gcs' | 'azure_blob' | 'local'>; bucket?: string; path?: string; region?: string }Backup storage destination
encryption{ enabled?: boolean; algorithm?: Enum<'AES-256-GCM' | 'AES-256-CBC' | 'ChaCha20-Poly1305'>; keyId?: string }optionalBackup encryption settings
compression{ enabled?: boolean; algorithm?: Enum<'gzip' | 'zstd' | 'lz4' | 'snappy'> }optionalBackup compression settings
verifyAfterBackupbooleanoptionalVerify backup integrity after creation

BackupRetention

Backup retention policy

Properties

PropertyTypeRequiredDescription
daysnumberRetention period in days
minCopiesnumberMinimum backup copies to retain
maxCopiesnumberoptionalMaximum backup copies to store

BackupStrategy

Backup strategy type

Allowed Values

  • full
  • incremental
  • differential

DisasterRecoveryPlan

Complete disaster recovery plan configuration

Properties

PropertyTypeRequiredDescription
enabledbooleanoptionalEnable disaster recovery plan
rpo{ value: number; unit?: Enum<'seconds' | 'minutes' | 'hours'> }Recovery Point Objective
rto{ value: number; unit?: Enum<'seconds' | 'minutes' | 'hours'> }Recovery Time Objective
backup{ strategy?: Enum<'full' | 'incremental' | 'differential'>; schedule?: string | object; retention: object; destination: object; … }Backup configuration
failover{ mode?: Enum<'active_passive' | 'active_active' | 'pilot_light' | 'warm_standby'>; autoFailover?: boolean; healthCheckInterval?: number; failureThreshold?: number; … }optionalMulti-region failover configuration
replication{ mode?: Enum<'synchronous' | 'asynchronous' | 'semi_synchronous'>; maxLagSeconds?: number; includeObjects?: string[]; excludeObjects?: string[] }optionalData replication settings
testing{ enabled?: boolean; schedule?: string | object; notificationChannel?: string }optionalAutomated disaster recovery testing
runbookUrlstringoptionalURL to disaster recovery runbook/playbook
contacts{ name: string; role: string; email?: string; phone?: string }[]optionalEmergency contact list for DR incidents

FailoverConfig

Failover configuration

Properties

PropertyTypeRequiredDescription
modeEnum<'active_passive' | 'active_active' | 'pilot_light' | 'warm_standby'>Failover mode
autoFailoverbooleanEnable automatic failover
healthCheckIntervalnumberHealth check interval in seconds
failureThresholdnumberConsecutive failures before failover
regions{ name: string; role: Enum<'primary' | 'secondary' | 'witness'>; endpoint?: string; priority?: number }[]Multi-region configuration (minimum 2 regions)
dns{ ttl: number; provider?: Enum<'route53' | 'cloudflare' | 'azure_dns' | 'custom'> }optionalDNS failover settings

FailoverMode

Failover mode

Allowed Values

  • active_passive
  • active_active
  • pilot_light
  • warm_standby

RPO

Recovery Point Objective (maximum acceptable data loss)

Properties

PropertyTypeRequiredDescription
valuenumberRPO value
unitEnum<'seconds' | 'minutes' | 'hours'>RPO time unit

RTO

Recovery Time Objective (maximum acceptable downtime)

Properties

PropertyTypeRequiredDescription
valuenumberRTO value
unitEnum<'seconds' | 'minutes' | 'hours'>RTO time unit

On this page