Files
supabase/apps/docs/content/guides/database/replication/setting-up-replication.mdx
Charis e2fecc0f5d chore(docs linter): bump version (#36715)
* chore(docs linter): bump version

* style: format
2025-07-03 14:46:29 +00:00

87 lines
3.2 KiB
Plaintext

---
id: 'setting-up-replication'
title: 'Setting up replication and CDC with Supabase'
description: 'Performing Extract Transform Load (ETL) with Supabase'
sidebar_label: 'Setting up replication and CDC'
---
## Prerequisites
To set up replication, the following is recommended:
- Instance size of XL or greater
- [IPv4 add-on](/docs/guides/platform/ipv4-address) enabled
To create a replication slot, you will need to use the `postgres` user and follow the instructions in our [guide](/docs/guides/database/postgres/setup-replication-external).
<Admonition type="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.
</Admonition>
If you are replicating to an external system and using any of the tools below, check their documentation first and we have added additional information where the setup with Supabase can vary.
<Tabs
scrollable
size="small"
type="underlined"
defaultActiveId="estuary"
queryGroup="tool"
>
<TabPanel id="airbyte" label="Airbyte">
Airbyte has the following [documentation](https://docs.airbyte.com/integrations/sources/postgres/) for setting up Postgres as a source, either in their cloud offering or by self-hosting.
You can follow those steps with the following modifications:
1. Use the `postgres` user
2. Select `logical replication` as the replication method (`xmin` is possible, but not recommended)
## Troubleshooting
Airbyte has a known [issue](https://discuss.airbyte.io/t/postgres-source-replication-slot-safe-wal-size-only-reset-when-a-change-occurs/3263/7) where it does not clear WAL files on each successful sync. The recommended workaround is to have a `heartbeat` table that you write changes to once an hour.>
</TabPanel>
<TabPanel id="estuary" label="Estuary">
Estuary has the following [documentation](https://docs.estuary.dev/reference/Connectors/capture-connectors/PostgreSQL/Supabase/) for setting up Postgres as a source.
</TabPanel>
<TabPanel id="fivetran" label="Fivetran">
Fivetran has the following [documentation](https://fivetran.com/docs/connectors/databases/postgresql/setup-guide) for setting up Postgres as a source.
You can follow those steps with the following modifications:
1. In Step 2, choose `logical replication` as the sync mechanism
2. In Step 3, do not create a user and use the existing `postgres` user for replication
3. In Step 5, no need to modify any WAL settings as we have done that for you
</TabPanel>
<TabPanel id="materialize" label="Materialize">
Materialize has the following [documentation](https://materialize.com/docs/sql/create-source/postgres/) on setting up Postgres as a source.
You can follow those steps with the following modifications:
1. Follow the steps in our [guide](/docs/guides/database/postgres/setup-replication-external) to create a publication slot
</TabPanel>
<TabPanel id="stitch" label="Stitch">
Stitch has the following [documentation](https://www.stitchdata.com/docs/integrations/databases/postgresql/v2#extract-data) on configuring Postgres as a source.
You can follow those steps with the following modifications:
1. Use the `postgres` user for replication
2. Skip step 3
</TabPanel>
</Tabs>