Set up manual replication
This guide covers setting up manual logical replication using your own tools. If you prefer a managed solution, read Set up Pipelines instead.
Note
For deploying read-only databases across multiple regions, see read replicas.
Prerequisites
To set up replication, the following is recommended:
- Instance size of XL or greater
- IPv4 add-on enabled
Note
If you are running Postgres 17 or higher, you can create a new user and grant them replication permissions with the postgres user. For versions below 17, you will need to use the postgres user.
Choose your replication tool
Follow your tool's setup guide, using the Supabase-specific notes below. If you are building your own consumer, follow the logical replication example to create a publication and replication slot.
Follow the Airbyte Postgres source guide for its cloud or self-hosted service.
Apply these Supabase-specific settings:
- Use the
postgresuser - Select
logical replicationas the replication method (xminis possible, but not recommended)
Follow the Estuary Supabase source guide.
Follow the Fivetran Postgres setup guide.
Apply these Supabase-specific settings:
- In Step 2, choose
logical replicationas the sync mechanism - In Step 3, do not create a user and use the existing
postgresuser for replication - In Step 5, don't copy generic WAL settings without sizing them for your database. Supabase supports logical replication, but you still need to size
max_slot_wal_keep_sizefor your write rate and expected replication lag, then monitor the slot.
Follow the Materialize Postgres source guide.
Use the logical replication example for the Supabase publication and replication slot setup.
Follow the Stitch Postgres extraction guide.
Apply these Supabase-specific settings:
- Use the
postgresuser for replication - Skip step 3
Follow the AWS DMS documentation to configure Postgres as a source.
DMS is notably useful if you have infrastructure running in AWS and/or you have custom networking. An additional benefit is that DMS is able to replicate schema changes.
Apply these Supabase-specific settings:
- Use the
postgresuser for replication (or create a new user with replication permissions:ALTER USER <user> WITH REPLICATION;) - Set
pluginnametotest-decoding - Depending on your databases the pre-assessment may fail. It is not required.
- Increase
wal_sender_timeoutand other settings (max_wal_size) using the Supabase CLI
Monitor replication
After starting your consumer, monitor replication slots, WAL retention, and progress.