SOLUTION · REPLICATE TO SUPABASE
Real-time data replication to Supabase from your operational databases
Committed changes from your systems of record land in Supabase Postgres continuously, over TLS and through the same batch and COPY write path as PostgreSQL, instead of waiting for the next sync job.
Gluesync by MOLO17 captures changes from Oracle, SQL Server, MySQL, MongoDB, PostgreSQL, and other heterogeneous sources with a dedicated agent per database, then writes them into the tables of your Supabase project. The Supabase agent speaks the PostgreSQL wire protocol and needs only a database connection, so it works with projects hosted on supabase.com and with self-hosted Supabase. Core Hub, the Gluesync control plane, runs snapshots and CDC for every pipeline from one web UI and REST API.
WHO THIS IS FOR
Teams that want Supabase to hold current operational data, not last night's extract
- Application teams building on Supabase who need the data of the systems of record in
publicor in their own schemas, ready for the Supabase client libraries, APIs, and dashboards - Platform leads who want one Core Hub for every source feeding Supabase instead of one sync script per database, backed by best-in-class enterprise support, rated 4.9/5 by customers
- Architects who need ingestion that works with the project as Supabase runs it: the standard
postgresrole, TLS only, row level security on the tables, and extension types such asvectorand PostGIS - Engineers replacing scheduled extracts, Debezium with a JDBC sink, or custom loaders that exist only to fill Supabase, who want every source delivered by one product with snapshots and monitoring built in
THE PROBLEM
A Supabase project fed by scheduled loads is always behind the source
Most Supabase projects that mirror an operational database are filled by a script: a job queries the source on a timer, writes files or staging tables, and merges them in. Apps and dashboards then show the last run, each run adds read load to production, and every new source adds a job and the credentials to reach it. Teams looking for real-time Supabase ingestion or a CDC feed into Supabase Postgres usually weigh managed ELT from Fivetran or Airbyte, a Debezium and Kafka Connect chain with a JDBC sink, or scripts they maintain themselves.
Gluesync addresses that with per-agent CDC into Supabase. A source agent reads each database's native change log or change stream, Core Hub routes the changes, and the Supabase agent applies them to your tables with JDBC batches or COPY bulk loads. Oracle to Supabase, SQL Server to Supabase, and MongoDB to Supabase pipelines share the same model, the same snapshot, and the same operations.
HOW IT WORKS
How Gluesync writes to Supabase
The PostgreSQL write path, with Supabase's connection defaults
Supabase is PostgreSQL, so the Supabase agent is the PostgreSQL target with Supabase's defaults: it connects through the bundled PostgreSQL JDBC driver to database postgres as user postgres, with TLS on. It is a target agent: it applies the change stream from any Gluesync source agent in real time, in commit order per entity, after a snapshot seeds each table.
- Same type mapping: values are written with the PostgreSQL target's type mapping, including enum types, arrays, and extension types.
- Optimized batches, never row by row: changes are grouped into JDBC batches, and a connection pool is on by default so several pipelines share the project's connections.
- Native bulk load: rows can go through PostgreSQL's
COPY, for snapshots and for CDC, as described below. - Database connection only: Gluesync calls neither the Supabase REST API nor the management API. Supabase agent overview ↗
COPY bulk loads for snapshots and CDC
With bulk load on, the agent stages rows with COPY in a table of the GLUESYNC schema and merges them into the target table, for the snapshot and for the change stream. Rows never go through single-row SQL.
In each CDC cycle with bulk operations on, an update is applied as a DELETE of the existing row plus an INSERT of the new version, in one pass from the staging table. Entities whose target table has an identity column apply their updates as UPDATE statements.
- Seed, then stream: each entity loads its full table, then follows the source agent's change mechanism.
- TRUNCATE before snapshot: the option for a clean reload is supported on the target tables.
- Scheduled reloads: the Chronos scheduler runs a snapshot, or a snapshot followed by CDC, on a cadence for tables you refresh on a timetable. See schedules and events.
Tables, schemas, and Supabase features
Target tables live in public or in the schemas you created. When a table does not exist, Core Hub generates a CREATE TABLE from the source definition, and the agent writes any table in the project that the connection user owns or can write to, including tables you created in a Supabase migration.
- Managed schemas stay out of the way: the schemas Supabase manages for itself, such as
auth,storage,realtime,vault,extensions, andgraphql, are system schemas for discovery in Core Hub, soauth.usersand its password hashes are never read. Your own tables are discovered as usual. - Row level security: tables with row level security enabled are written. The
postgresrole bypasses it on Supabase, so a table needs no policy for Gluesync, also with forced row level security. - Extension types:
vectorfrom pgvector,geometry,geography, andrasterfrom PostGIS, andhstoreare written on snapshot and CDC.
Data types
The type coverage is the PostgreSQL target's, written as column values and as primary keys through snapshots and CDC, with binary and text COPY and with batch statements.
- Numbers and booleans:
smallint,integer,bigint, the serial types,boolean,numericanddecimalwith and without precision,money,real, anddouble precision, withNaNand infinity. - Dates and times:
date,time,timetz,timestamp,timestamptz, andinterval, with dates before 1582 keeping their value. - Text and documents:
varchar,char,text,json,jsonb,xml,uuid, enum types,tsvector, andtsquery. - Binary, network, geometric, and ranges:
byteaand bit strings,inet,cidr, andmacaddr, the geometric types, and the range and multirange types. - Arrays of all of the above, such as
integer[],text[],uuid[], andjsonb[].
Setup in your Supabase project
The agent needs the database connection details from the Connect page of the Supabase dashboard and the password of the database user. The postgres role is enough: the agent creates its GLUESYNC schema and staging tables as that role. Full settings are in the Supabase target setup guide ↗.
- Choose the connection: the direct connection,
db.<project-ref>.supabase.coon port 5432 with userpostgres, or the session pooler,aws-0-<region>.pooler.supabase.comon port 5432 with userpostgres.<project-ref>. Use the session pooler when Core Hub has IPv4 connectivity only. - In Core Hub, enter the host, port 5432, database
postgres, and the user and password of the project. - Keep TLS on, which is the default and matches Supabase's enforced SSL. To verify the server certificate, turn off Trust server certificate and provide a trust store with the project's CA certificate from the Supabase dashboard.
- Map each entity to a table, or let Core Hub create the tables from the source definition. Gluesync starts with a snapshot and then follows the changes.
Architecture around Core Hub
Source agents sit close to each database, and Core Hub orchestrates them through its web UI and REST APIs. A pipeline groups a source agent with the Supabase agent and the tables it replicates. The agent keeps no local state: writes go straight to your Supabase Postgres tables, and pipeline state lives in Core Hub metadata. Core Hub and agents deploy with Docker, Docker Compose, or Kubernetes. See CDC streaming for the wider pattern.
WRITE OPTIONS
The Supabase target agent: one agent, the PostgreSQL write path
Supabase has one Gluesync target agent. It writes snapshots and CDC changes into Supabase Postgres tables over the PostgreSQL wire protocol, with JDBC batches and COPY bulk loads.
| Agent | Write technique | Versions | Best for |
|---|---|---|---|
| Supabase agent ↗ | Bundled PostgreSQL JDBC driver over the PostgreSQL wire protocol, with TLS on by default; optimized batches, and COPY bulk load through a staging table for snapshots and CDC | Supabase Postgres 15 and later, hosted or self-hosted; tested on Supabase Postgres 17.6 | Teams feeding a Supabase project from Oracle, SQL Server, MySQL, MongoDB, or PostgreSQL, over the direct connection or the session pooler, with TLS, row level security, and extension types supported. |
SOURCES AND TOPOLOGIES
Feed Supabase from the systems of record you already run
Any Gluesync source agent can feed Supabase, each with its own native capture technique. Open the integrations finder with Supabase pre-selected to see every source that pairs with it.
One Core Hub runs Oracle to Supabase, SQL Server to Supabase, and MongoDB to Supabase pipelines side by side, with the same snapshot, monitoring, and write settings for each. Gluesync keeps pace with your change volume at any scale, and MOLO17 Professional Services can help with schema design and the choice of write path for each table.
- Oracle to Supabase from the redo logs through LogMiner or XStream: see Oracle CDC
- SQL Server to Supabase through Change Data Capture or Change Tracking: see SQL Server CDC
- MySQL to Supabase from the binary log: see MySQL CDC
- PostgreSQL to Supabase from the write-ahead log: see PostgreSQL CDC
- MongoDB to Supabase from change streams: see MongoDB CDC
FAIR, HIGH-LEVEL COMPARISON
Where Gluesync fits among Supabase ingestion approaches
| Approach | What buyers usually get | Where Gluesync fits |
|---|---|---|
| Fivetran, Airbyte, and other ELT tools | Managed or open-source connectors with Postgres destinations that load on a sync schedule; change capture varies by source connector | Log-based capture with a commercial agent per source and MOLO17 enterprise support, writing continuously rather than on a sync schedule |
| Debezium with Kafka Connect and a JDBC sink | Open-source capture into Kafka topics, then a JDBC sink that writes rows into Postgres; you run Connect, offsets, and schema changes, and usually a merge step into current-state tables | Changes applied to Supabase tables by key, with no Kafka cluster in the path. Read the Debezium alternative comparison |
| AWS DMS, Qlik Replicate, and Striim | Commercial replication services with Postgres among their targets; capture and load options differ by product and version | Agents deployed next to each source, native capture per engine, and COPY bulk cycles into Supabase, all run from one Core Hub |
| Scheduled scripts and custom loaders | Full control; your team owns the extract queries, staging files, merge logic, retries, and the load each run puts on the source database | Log-based capture with no polling queries against production, staged bulk cycles, and snapshot restarts handled by the agent; see migrating to Gluesync |
RELATED CONTENT
Supabase replication research and implementation detail
- Batch ETL vs real-time data replication: how to choose
- Log-based CDC: how real-time replication works
- CDC streaming without source overhead
- Debezium alternative: managed CDC versus Kafka + Debezium
- Replicate to PostgreSQL
- Supabase agent overview ↗
- Supabase target setup guide ↗
- Supabase agent changelog ↗
- Bulk load: staging, COPY, and apply phases ↗
FAQ
Supabase replication questions
What does replicating to Supabase with Gluesync involve?
A Gluesync source agent captures committed changes from your database through its native change mechanism, Core Hub routes them, and the Supabase agent writes them into Supabase Postgres tables. Each table is seeded with a snapshot first and then follows the change stream.
How does Gluesync write data into Supabase?
Through the bundled PostgreSQL JDBC driver over the PostgreSQL wire protocol, with the PostgreSQL target's type mapping. Changes go in optimized batches, and COPY bulk load into a staging table is available for snapshots and for CDC.
Does Gluesync use the Supabase API?
No. The agent needs only a database connection, so it works with projects hosted on supabase.com and with self-hosted Supabase. It calls neither the Supabase REST API nor the management API.
Which Supabase connection should I use?
The direct connection on port 5432 with user postgres, or the session pooler on port 5432 with user postgres.<project-ref>. The direct connection is the recommended one, and the session pooler suits a Core Hub that has IPv4 connectivity only.
Is the connection encrypted?
Yes. TLS is on by default, matching Supabase's enforced SSL. Turn off Trust server certificate and provide a trust store with the project's CA certificate to verify the server certificate.
Which Supabase versions are supported?
Supabase Postgres 15 and later, hosted or self-hosted. MOLO17 tests the agent against Supabase Postgres 17.6.
Does the agent work with row level security and extension types?
Yes. Tables with row level security are written, because the postgres role bypasses it on Supabase. Columns of type vector, geometry, geography, raster, and hstore are written on snapshot and CDC.
Will Gluesync read the auth schema or other Supabase-managed schemas?
No. The schemas Supabase manages for itself, such as auth, storage, realtime, vault, extensions, and graphql, are treated as system schemas for discovery in Core Hub, so auth.users and its password hashes are never read. Your own tables are discovered as usual.
Does Gluesync create the tables in Supabase?
Yes. When a target table is missing, Core Hub generates a CREATE TABLE from the source definition. Tables you created yourself, for example in a Supabase migration, are written as they are.
Which sources can replicate to Supabase?
Any Gluesync source agent. Oracle, SQL Server, MySQL, PostgreSQL, and MongoDB can all feed Supabase, and each one uses its own native capture technique.
REPLICATE TO A TARGET
Other targets Gluesync delivers to
- Replicate to Aerospike
- Replicate to DynamoDB
- Replicate to Redshift
- Replicate to Amazon S3 & S3-compatible
- Replicate to Cassandra
- Replicate to Kafka
- Replicate to Cosmos DB
- Replicate to Azure Data Lake
- Replicate to ClickHouse
- Replicate to CockroachDB
- Replicate to Couchbase
- Replicate to Databricks
- Replicate to Elasticsearch and OpenSearch
- Replicate to file stores
- Replicate to BigQuery
- Replicate to Google Cloud Storage
- Replicate to Google Pub/Sub
- Replicate to GridGain
- Replicate to Db2
- Replicate to Informix
- Replicate to MariaDB
- Replicate to Microsoft Fabric
- Replicate to SQL Server
- Replicate to MongoDB
- Replicate to MySQL
- Replicate to Oracle
- Replicate to PostgreSQL
- Replicate to RavenDB
- Replicate to Redis
- Replicate to Redis Streams
- Replicate to SAP ASE
- Replicate to SAP HANA
- Replicate to ScyllaDB
- Replicate to SingleStore
- Replicate to Snowflake
- Replicate to Solace PubSub+
- Replicate to Vertica
- Replicate to YugabyteDB
Evaluate Gluesync with your Supabase project
Start a trial against your Supabase project, or talk to MOLO17 about your sources, table design, and the write path for each table.