Databases
Reference for connecting databases to Sequin
Supported databases
Sequin works with any PostgreSQL database version 12 or higher that supports Logical Replication.
You can find guides for connecting to local and hosted databases in the connect postgres guide.
Database connection details
Sequin requires the following details to connect to your database:
- Host: The hostname of your database
- Port: The port number of your database
- Database: The name of your database
- Username: The username of a database user with the necessary permissions
- Password: The password for the database user
You can also enable or disable SSL mode for your database connection.
Tunneling to your database
Use the Sequin CLI to create a secure tunnel between Sequin Cloud and a database running on your local machine.
If your database is hosted by a cloud provider and requires a VPN to connect, Sequin can create a secure tunnel through a bastion host. Please contact support to enable this.
Database user permissions
We recommend creating a dedicated database user for Sequin. Grant that user the following permissions:
connect
permission on the database.select
permission on all the tables you want to connect to Sequin.replication
permission (to read from replication slots).
You can create a user with those permissions with the following commands:
Please create a strong password for Sequin’s database user. You can generate a secure password using the following command:
Enabling logical replication
Sequin requires logical replication to be enabled on your database. You can check if it’s enabled:
If the value isn’t logical
, you’ll need to enable it. The process for enabling logical replication varies by provider. You can find more information in the following guides:
- Standard PostgreSQL: Modify
postgresql.conf
to setwal_level = logical
- AWS RDS: Create a parameter group with
rds.logical_replication = 1
- Google Cloud SQL: Enable through the console or API
- Azure: Configure through server parameters
- Neon: Enable through project settings
- Supabase: Enabled by default
Enabling logical replication often requires a database restart.
Publications
Publications identify which tables to track for changes.
As a best practice, create the publication before creating the replication slot. Creating the slot first can create a race condition that can lead to data loss.
Creating a publication
The simplest publication includes all tables:
To specify a subset of tables, use the following command:
Or all tables in a schema:
Working with partitioned tables
When using partitioned tables, you have two options to ensure Sequin captures changes correctly:
-
Enable
publish_via_partition_root
: -
Add each partition table explicitly to the publication:
Choose the first option if you’re dynamically creating partitions. The second option is fine if you have a fixed set of partitions.
If you created your publication using for all tables
or for all tables in schema
, partitioned tables will work automatically without additional configuration.
Modifying Publications
To add or remove tables from a publication, use the ALTER PUBLICATION
statement:
Deleting a Publication
You can delete a publication using the DROP PUBLICATION
statement:
Replication slots
Replication slots ensure that PostgreSQL retains WAL (Write-Ahead Log) data needed by Sequin.
Creating a Replication Slot
Deleting a Replication Slot
Best practices
As a best practice, create the publication before creating the replication slot. Creating the slot first can create a race condition that can lead to data loss.
Monitor slot lag Excessive lag in a replication slot can cause WAL buildup and disk space issues. Monitor lag with:
Clean up unused slots: Delete slots that are no longer in use to prevent WAL retention:
Monitoring
Sequin will run health checks against your database connection automatically. You can view the status of the connection at any time in your database’s “Overview” page.
Was this page helpful?