Manual replication FAQ
Common questions and considerations when setting up manual replication.
Which connection string should be used?#
Use the direct connection string for logical replication. Connections through a pooler, such as Supavisor, will not work.
The tool in use does not support IPv6#
You can enable the IPv4 add-on for your project.
Can replication be configured in the Dashboard?#
You can inspect publications and change their published operations and table selection in the Dashboard. Use the SQL Editor, a CLI, or your consumer's setup flow for the remaining setup. Connect and operate the external consumer separately; the Dashboard doesn't manage a manual replication pipeline.
How to configure database settings for replication?#
Using the Supabase CLI, you can configure database settings to optimize them for your replication needs. These values can vary depending on your database size and activity.
What are some important configuration options?#
Some of the more important options to be aware of are:
max_wal_size: Soft limit for WAL written between automatic checkpoints. Postgres can exceed it under some conditions.max_slot_wal_keep_size: Per-slot limit on retained WAL at checkpoint time.-1lets replication slots retain unlimited WAL. A finite limit can cause a lagging slot to lose required WAL.wal_keep_size: Minimum amount of old WAL retained for standby servers. It does not replace the per-slot limit.max_wal_senders: Maximum number of concurrent WAL sender processes for standby servers, logical replication consumers, and streaming backups.
Size WAL retention for the consumer's maximum expected lag or downtime and the database's WAL generation rate. Higher values reduce the risk that a consumer needs a new initial sync, but can use more database storage. Monitor each slot's retained WAL and wal_status instead of treating a configured limit as a guarantee.
What is XMIN and should it be used?#
Xmin is a different form of replication from logical replication and should only be used if logical replication is not available for your database, such as with older versions of Postgres.
Xmin performs replication by checking the xmin system column and determining if that row has already been synchronized.
It does not capture deletion of data and is not recommended, particularly for larger databases.