- Batch query
- Log replication

Batch query
Mage will query PostgreSQL in batches usingSELECT, WHERE, and ORDER BY
statements.
Log replication
Mage will read the logs from PostgreSQL and use those as instructions to either create new rows, update existing rows, or delete rows in the destination.How to setup log replication with PostgreSQL
Setup in PostgreSQL
-
Enable logical replication in Postgres config
- Local Postgres
-
Open the
postgresql.conffile. Here is an example location on Mac OSX:/Users/Mage/Library/Application Support/Postgres/var-14/postgresql.conf. -
Under the settings section, change the value of
wal_leveltological. The line in yourpostgresql.conffile should look like this: -
Restart the PostgreSQL service or database. You can do this via the PostgreSQL app or if you’re
on Linux, run the following commands:
-
Run the following query in your PostgreSQL database:
SHOW wal_level. The result should be:wal_levellogical
-
Open the
- AWS RDS/Aurora
- Follow this doc to set up PostgreSQL logical replication for an Aurora PostgreSQL DB cluster
- Logical replication for AWS RDS (PostgreSQL) can be set up in a similar way with the Aurora cluster.
- Local Postgres
-
Run the following command in PostgreSQL to create a replication slot:
The replication slot name
mage_slotquoted is used as an example in the guide. The actual replication slot name should be unique for each pipeline source. The result should looking something like this:pg_create_logical_replication_slot(mage_slot,0/51A80778) -
Create a publication for all tables or for 1 specific table using the following commands:
mage_pubis used in Mage’s code or for 1 table:Replacesome_schemawith the schema of the table andsome_table_namewith the name of the table you want to replicate. Run the following command to add or remove a table from publication. -
Verify that the publication was created successfully by running the following command in PostgreSQL:
The result should looking something like this:
pubnameschemanametablenamemage_pubpublicusers -
Grant the database user permission to read the replication slot:
Create data integration pipeline in Mage
Follow this guide to create a data integration pipeline in Mage. However, choose PostgreSQL as the source and chooseLOG_BASED as the
replication method.
Testing pipeline end-to-end
Once you’ve created the pipeline, add a few rows into your PostgreSQL table that you just created a logical replication for. You can use theINSERT command to add rows. For example:
some_schema with the schema of the table and some_table_name with the name
of the table you want to replicate.
Change the VALUES to match the columns in your table.