Replication
Replication is a technique for copying the data from one database to another. Supabase uses replication functionality to provide a real-time API. Replication is useful for:
- Spreading out the "load." For example, if your database has a lot of reads, you might want to split it between two databases.
- Reducing latency. For example, you may want one database in London to serve your European customers, and one in New York to serve the US.
Replication is done through publications, a method of choosing which changes to send to other systems (usually another Postgres database). Publications can be managed in the Dashboard or with SQL.
Manage publications in the Dashboard#
- Go to the Database page in the Dashboard.
- Click on Replication in the sidebar.
- Control which database events are sent by toggling Insert, Update, and Delete.
- Control which tables broadcast changes by selecting Source and toggling each table.
Create a publication#
This publication contains changes to all tables.
_10create publication publication_name_10for all tables;
Create a publication to listen to individual tables#
_10create publication publication_name_10for table table_one, table_two;
Add tables to an existing publication#
_10alter publication publication_name_10add table table_name;
Listen to insert
#
_10create publication publication_name_10for all tables_10with (publish = 'insert');
Listen to update
#
_10create publication publication_name_10for all tables_10with (publish = 'update');
Listen to delete
#
_10create publication publication_name_10for all tables_10with (publish = 'delete');
Remove a publication#
_10drop publication if exists publication_name;
Recreate a publication#
If you're recreating a publication, it's best to do it in a transaction to ensure the operation succeeds.
_10begin;_10 -- remove the realtime publication_10 drop publication if exists publication_name;_10_10 -- re-create the publication but don't enable it for any tables_10 create publication publication_name;_10commit;