Backup247

Supabase backup guide

How to back up Supabase automatically

A practical guide to protecting Supabase tables, RLS policies and schema against bad migrations, RLS mistakes and destructive SQL.

Last updated

To back up Supabase automatically, connect your project to a dedicated backup service such as Backup247 using a read-only Postgres role, pick a schedule (typically daily, hourly for busy tables), and let it snapshot every table, view, function, policy and index to encrypted storage in the EU. When a migration ships a broken RLS policy or a DELETE without a WHERE clause slips through, you restore individual rows or a full table from a point-in-time snapshot instead of doing a full-project restore that also rolls back everything else.

Why Supabase backups matter

Supabase is where a lot of teams keep their entire product database: users, tenants, billing state, content. Because you write SQL and manage RLS yourself, a small mistake in a migration or an over-permissive policy can quietly change or delete rows across every tenant at once.

A concrete scenario: a migration adjusts an RLS policy so authenticated users can update their own row, but the USING clause omits the tenant check. Within a day, one tenant's user updates leak into another tenant's records. You need to restore the affected rows without rolling back yesterday's other work. A row-level restore from a point-in-time snapshot does this; a full-project PITR does not.

  • Migrations that drop columns or tables and cascade to referenced rows.
  • Broken RLS policies exposing or overwriting rows across tenants.
  • Manual UPDATE or DELETE in the SQL editor without a WHERE clause.
  • Buggy edge functions performing bulk writes with the service role key.
  • GDPR right to erasure needing evidence of what a record looked like on a specific date.

What Supabase gives you natively

Supabase paid plans include daily backups and, on Pro and above, PITR up to seven days. Both are full-project restores.

Understand exactly what is and is not covered before you decide you do not need external backups:

  • Daily backups. Retained for 7 days on Pro, 14 days on Team, 30 days on Enterprise. Restore is a full-project rollback.
  • Point-in-time recovery. Up to 7 days on Pro, longer on higher tiers. Also a full-project restore, not a per-row or per-table one.
  • pg_dump. You can run pg_dump yourself against the connection string. You still need to build storage, retention and restore around it.

None of Supabase's built-in options let you restore a single row or table back into the live project without also rolling back everything else that happened since.

Backup methods compared

MethodGranularityRetentionRestore effort
Supabase daily backupWhole project7 to 30 days by planFull-project rollback
Supabase PITRWhole project7 days on ProFull-project rollback
Manual pg_dumpWhole databaseYour storageYou script and test the restore
Backup247 automated backupRow, table or schemaUp to 365 daysOne-click row or table restore

For any Supabase project with real users, an automated backup with row-level restore is the only method that recovers from a mistake without also throwing away everything good that happened in the meantime.

Set up automated Supabase backups

Connecting Supabase to Backup247 takes about ten minutes. It uses a read-only Postgres role you create yourself; no service role key is ever needed.

  1. Create your Backup247 account

    Start the 14-day trial from the sign up page. No card required.

  2. Create a read-only role

    Run the SQL snippet provided in the connector setup to create a role with SELECT on the schemas you want to back up.

  3. Connect the project

    Paste your Supabase project URL and the read-only role credentials into the Supabase connector.

  4. Scope the connector

    Pick which schemas and tables are in scope. RLS policies, indexes, functions and triggers are captured automatically for those schemas.

  5. Pick a schedule

    Daily is the default. Increase to hourly for busy tables such as orders, sessions or events.

  6. Verify the first snapshot

    Once the first run completes, browse the snapshot to confirm tables, row counts and schema objects are captured before you rely on it.

See the connector details on the Supabase integration page, or compare plans on pricing.

How restore works

The point of a backup is the restore. Backup247 gives you three restore paths for Supabase, all from the same snapshot browser:

  • Single row. Preview the diff between the snapshot and the live row, then restore just that row. Foreign keys are respected.
  • Whole table. Restore every row in a table to a chosen point in time. Existing rows are diffed so you can accept or reject each change.
  • Schema. Replay policies, indexes, functions and triggers exactly as they were on any past day, useful when a migration goes wrong.

Supabase backup checklist

  • Daily automated snapshot of every schema that holds business data.
  • Hourly snapshots for high-write tables such as orders or sessions.
  • Retention of at least 90 days, longer if you have compliance obligations.
  • Backup storage in the EU with encryption at rest and a DPA on file.
  • Alerts when a scheduled backup fails or when row counts drop unexpectedly.
  • A restore drill every quarter: pick a random row, restore it, confirm it matches.
  • The backup role is read-only and its password is rotated at least once a year.

Frequently asked questions

Does Supabase have automatic backups?+

Yes. Paid plans include daily backups and PITR up to 7 days, but both restore the whole project at once. Backup247 adds row, table and schema-level restore plus longer retention.

How often should I back up Supabase?+

Daily is enough for most projects. Move to hourly for high-write tables such as orders, sessions or events.

Can I restore a single row?+

Yes. Preview the diff between the snapshot and the live row, restore just that row, and leave the rest of the table untouched.

Does the backup include RLS policies?+

Yes. Schema snapshots capture policies, indexes, functions and triggers, so a schema restore replays them exactly.

Where is my Supabase backup data stored?+

Encrypted at rest in the EU (Frankfurt), independent of your Supabase region. A DPA and sub-processor list are available on request for GDPR compliance.

What permissions does the connector need?+

A read-only Postgres role scoped to the schemas you choose. No service role key and no write access are required for backups.

Protect your Supabase project

Start a 14-day trial and take your first Supabase snapshot in minutes. No card required.