convex-backup

작성자: get-convex

Convex 백업을 설정하고 복구가 실제로 가능함을 증명하는 복구 드릴을 실행하세요 — 스냅샷 생성, 임시 프리뷰로 복원, 데이터가 복구되었는지 확인 — 그리고 RPO에 맞춘 일정과 승인 절차를 포함한 복구 런북까지 포함됩니다.

npx skills add https://github.com/get-convex/agent-skills --skill convex-backup

Back up — and prove the restore works

Every backup story has two halves and most people only do the first: taking the backup, and proving you can get it back. This capability does both — it sets up regular snapshot exports and then runs a RESTORE DRILL that actually recovers the data into a disposable preview and asserts it's intact. The drill reuses migrate-rehearse's exact primitives (snapshot export → preview deploy → snapshot import) pointed at recovery instead of a forward change, so the safety net is tested, not assumed.

Workflow

  1. GUARD: deploy-guard — classify + announce the deployment being backed up (reading/exporting is safe; the drill's restore target is a throwaway preview, never prod).
  2. TAKE the snapshot: npx convex export --path backup-<date>.zip (add --include-file-storage if the app stores files). This is the backup artifact; treat it as sensitive real data.
  3. SCHEDULE it (the ongoing half): recommend a cadence matched to how fast the data changes and how much loss is tolerable (RPO) — e.g. a daily npx convex export via CI/cron to durable storage the user controls, with a retention window. Convex's own platform backups exist; this adds a user-owned, portable copy.
  4. RESTORE DRILL (the half almost nobody does — this is the point): (a) PRECONDITION: a Preview Deploy Key as CONVEX_DEPLOY_KEY (same requirement as migrate-rehearse; a paid-tier feature). If unavailable, drill against a fresh personal dev deployment instead and say so. (b) create a throwaway preview from the CURRENT code: npx convex deploy --preview-create restore-drill-<date>. (c) restore the snapshot into it: npx convex import backup-<date>.zip --deployment restore-drill-<date> --replace (import targets a deployment by NAME with --deployment; there is no --preview-name on import). (d) ASSERT recovery: read the restored data back (MCP tables for row counts, data/runOneoffQuery for spot-checks) and confirm the critical tables came back with the expected row counts and a sample of real records — a restore that 'succeeds' but lands 0 rows is a FAILED drill. Compare against the source's counts where available.
  5. REPORT the drill result plainly: what was backed up, that the restore was ACTUALLY performed and verified (or that it FAILED and why — a failed drill is the most valuable output, found before a real disaster), the recommended schedule + retention, and the recovery runbook (the exact commands to restore to prod: npx convex import backup.zip --replace --prod, gated by deploy-guard, with the post-snapshot-write-loss caveat stated).
  6. HYGIENE: delete local snapshot copies when done (real data); the drill preview auto-expires. Never commit a backup file.

Rules

  • A backup you have never restored is a hope, not a backup — always run (or offer to run) the restore DRILL, don't just take the export.
  • The drill restores into a THROWAWAY preview (or dev), never prod; the restore target and the backup source are different deployments.
  • Assert recovery, don't assume it: a restore that lands 0 rows is a FAILED drill — check critical-table row counts + a real-record sample against the source.
  • A FAILED drill is the most valuable output — surface it loudly; that's the whole reason to drill before a real disaster.
  • Schedule matched to RPO (how much data loss is tolerable); keep a user-owned portable copy alongside Convex's platform backups, with a retention window.
  • Snapshots are sensitive real data: delete local copies when done, never commit them; the restore-to-prod runbook is deploy-guard-gated with the post-snapshot-write-loss caveat stated.
  • Shares migrate-rehearse's snapshot+preview mechanics but aims them at RECOVERY, not a forward change — a forward schema change is migrate-rehearse.

get-convex의 다른 스킬

convex-performance-audit
get-convex
Convex 성능을 읽기, 구독, 쓰기 경합 및 함수 제한 측면에서 감사합니다. 느린 기능, 인사이트 발견, OCC 충돌 또는 읽기 증폭에 사용하세요.
developmentdatabasedata-analysis
convex
get-convex
일반적인 Convex 요청을 올바른 프로젝트 스킬로 라우팅합니다. 사용자가 어떤 Convex 스킬을 사용할지 묻거나 불완전하게 지정된 Convex 앱 작업을 제공할 때 사용하세요.
developmentdatabase
convex-setup-auth
get-convex
Convex 인증, 신원 매핑 및 접근 제어를 설정합니다. Convex 앱에서 로그인, 인증 제공자, 사용자 테이블, 보호된 함수 또는 역할에 사용하세요.
developmentdatabaseapi
convex-quickstart
get-convex
앱에 Convex를 생성하거나 추가합니다. 새 Convex 프로젝트, npm create convex@latest, 프론트엔드 설정, 환경 변수, 또는 첫 npx convex dev 실행에 사용합니다.
developmentdatabase
convex-migration-helper
get-convex
Convex 스키마 및 데이터 마이그레이션을 widen-migrate-narrow와 @convex-dev/migrations로 계획합니다. 스키마 변경, 백필, 테이블 재구성 또는 무중단 롤아웃에 사용하세요.
developmentdatabase
convex-create-component
get-convex
재사용 가능한 Convex 컴포넌트를 구축하며, 격리된 테이블과 앱 지향 API를 제공합니다. 새 컴포넌트, 재사용 가능한 백엔드 모듈, 통합 또는 컴포넌트 경계 작업에 사용하세요.
developmentdatabase
convex-migrate
get-convex
배포된 Convex 앱에서 @convex-dev/migrations를 사용하여 스키마를 마이그레이션하고 데이터를 백필합니다.
developmentdatabase
convex-optimize
get-convex
기존 Convex 앱을 감사하고 최적화합니다: 보안, 확장, 업그레이드, 관찰 가능성.