Skip to content

docs: Add a Serverpod Cloud database backups page#688

Open
developerjamiu wants to merge 2 commits into
mainfrom
cloud-database-backups
Open

docs: Add a Serverpod Cloud database backups page#688
developerjamiu wants to merge 2 commits into
mainfrom
cloud-database-backups

Conversation

@developerjamiu

@developerjamiu developerjamiu commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a Serverpod Cloud Database backups concept page documenting the new scloud db backup and scloud db schedule commands: manual snapshots, scheduled backups, restore, plan gating, and pricing.

  • New page: cloud_docs/concepts/database-backups.md (Overview, when-to-use, the five operations, Pricing, Limits, Related).
  • Reconciles the outdated 2-line ## Backups stub on the Database page (it claimed backups were automatic and needed no configuration) into a short pointer to the new page.
  • Renumbers two sidebar positions so backups sits directly after Database (personal-access-tokens 6→7, deployment-hooks 7→8).

Do not merge until the feature is released

The backup CLI is on main in the cloud repo but not yet in a released scloud, and the web console is still in progress (CLD-505). Keep this open for review and merge once the feature ships (targeting ~week of Jul 20). Console sections will be added in a follow-up once the console lands.

Verification

Every claim was checked against the cloud repo at origin/main (backup CLI shipped in #2090):

  • CLI surface, flags, defaults, and output/confirmation wording read from the command source, not written from memory.
  • Growth-plan gating and the split of gated vs. any-plan commands confirmed in the databases domain/endpoint code.
  • Pricing ($6 / 10 GB, separate metered charge) and the 100 manual-snapshot cap confirmed in the billing and policy config.
  • npm run build passes (no broken links or anchors).

Notes for reviewers

  • Downgrade with backups is documented as if enforced (a Growth→smaller-plan change is blocked while backups exist). This behavior is intended but not yet implemented; documenting it as in effect was agreed with the platform team. Worth a final confirm before merge.
  • Scheduled-snapshot retention default is described as "the platform's default retention" rather than a specific number, matching the CLI's own wording. If we want to state the exact value, that's the one detail still to pin.
  • Pricing rate is stated on the page and linked to the plans page. Once a dedicated plans/pricing page exists, the exact rate can move there and this page can link out.
  • The provider is deliberately never named; backups are described as a feature of the managed database.

@developerjamiu developerjamiu self-assigned this Jul 15, 2026
@developerjamiu developerjamiu requested review from Isakdl and Zfinix July 15, 2026 12:51
@developerjamiu developerjamiu added the documentation Improvements or additions to documentation label Jul 15, 2026

@Zfinix Zfinix left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🚀 great work on this.

nit (non-blocking): the $6 / 10 GB rate will drift as plans change — consider dropping the exact number here and letting the plans page own it, keeping the "separate metered charge, same rate as database storage" framing.

Comment thread cloud_docs/concepts/database-backups.md Outdated

## Pricing

Backup storage is billed separately from your regular database storage, as its own charge rather than counting against your database usage. It uses the same package pricing as database storage, $6 per 10 GB per month, prorated for partial months, and applies only on the Growth plan. A schedule usually costs less than keeping the same number of manual snapshots. Each manual snapshot is a full copy, while a scheduled series stores one full copy plus the changes between snapshots. For current plan pricing, see [Serverpod Cloud plans](https://serverpod.dev/cloud).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit (non-blocking): the $6 / 10 GB rate will drift as plans change. Consider dropping the exact number here and letting the plans page own it, keeping the "separate metered charge, same rate as database storage" framing.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed!

@Isakdl Isakdl left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work! I like it,

I do have some thoughts and suggestions. I will probably not be available when you will merge this, so you can dismiss my needed rereview.

Comment thread cloud_docs/concepts/database-backups.md Outdated
Comment thread cloud_docs/concepts/database-backups.md Outdated
scloud db schedule set --frequency weekly --day 1 --hour 3 --retention 30d
```

Use `--day` to pick the day of the week (1-7) for a weekly schedule or the day of the month (1-31) for a monthly one; it defaults to 1 and does not apply to a daily schedule. Use `--hour` for the hour of the day (0-23, in UTC); it defaults to 0. Use `--retention` (for example `30d`) to set how long each scheduled snapshot is kept before it is deleted automatically. Without `--retention`, scheduled snapshots are kept for the platform's default retention.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

snapshots are kept for the platform's default retention.

Suggestion: This should specify what the default is not "platform's default" that will not help anyone reading this.

@developerjamiu developerjamiu Jul 15, 2026

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is the default value here @Isakdl @christerswahn?

Comment thread cloud_docs/concepts/database-backups.md Outdated
Do you want to proceed?
```

The connection string and database credentials do not change, so your deployed server keeps working against the same database with no config change. The state from just before the restore is kept as a separate backup, so an accidental restore can itself be recovered from.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment: This is true, but we have no mechanism exposed right now to do the recover. Sync with @christerswahn what will be available, but my hunch is that we should remove this from the docs until we have added this support.

Comment thread cloud_docs/concepts/database-backups.md Outdated

## Pricing

Backup storage is billed separately from your regular database storage, as its own charge rather than counting against your database usage. It uses the same package pricing as database storage, $6 per 10 GB per month, prorated for partial months, and applies only on the Growth plan. A schedule usually costs less than keeping the same number of manual snapshots. Each manual snapshot is a full copy, while a scheduled series stores one full copy plus the changes between snapshots. For current plan pricing, see [Serverpod Cloud plans](https://serverpod.dev/cloud).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants