wal2mongo
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
wal2mongo | 1.0.7 | ETL | Apache-2.0 | C |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 9640 | wal2mongo | No | Yes | No | No | No | No | - |
| Related | mongo_fdw wal2json decoderbufs decoder_raw documentdb pglogical test_decoding pgoutput |
|---|
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PIGSTY | 1.0.7 | 1817161514 | wal2mongo | - |
| RPM | PIGSTY | 1.0.7 | 1817161514 | wal2mongo_$v | - |
| DEB | PIGSTY | 1.0.7 | 1817161514 | postgresql-$v-wal2mongo | - |
| OS / PG | PG18 | PG17 | PG16 | PG15 | PG14 |
|---|---|---|---|---|---|
| el8.x86_64 | PIGSTY MISS | PIGSTY MISS | PGDG 1.0.7 el8.x86_64.pg16 : wal2mongo_16 wal2mongo_16-1.0.7-1PGDG.rhel8.x86_64.rpm
| PGDG 1.0.7 el8.x86_64.pg15 : wal2mongo_15 wal2mongo_15-1.0.7-1PGDG.rhel8.x86_64.rpm
| PGDG 1.0.7 el8.x86_64.pg14 : wal2mongo_14 wal2mongo_14-1.0.7-1PGDG.rhel8.x86_64.rpm
|
| el8.aarch64 | PIGSTY MISS | PIGSTY MISS | PGDG 1.0.7 el8.aarch64.pg16 : wal2mongo_16 wal2mongo_16-1.0.7-1PGDG.rhel8.aarch64.rpm
| PGDG 1.0.7 el8.aarch64.pg15 : wal2mongo_15 wal2mongo_15-1.0.7-1PGDG.rhel8.aarch64.rpm
| PGDG 1.0.7 el8.aarch64.pg14 : wal2mongo_14 wal2mongo_14-1.0.7-1PGDG.rhel8.aarch64.rpm
|
| el9.x86_64 | PIGSTY MISS | PIGSTY MISS | PGDG 1.0.7 el9.x86_64.pg16 : wal2mongo_16 wal2mongo_16-1.0.7-1PGDG.rhel9.x86_64.rpm
| PGDG 1.0.7 el9.x86_64.pg15 : wal2mongo_15 wal2mongo_15-1.0.7-1PGDG.rhel9.x86_64.rpm
| PGDG 1.0.7 el9.x86_64.pg14 : wal2mongo_14 wal2mongo_14-1.0.7-1PGDG.rhel9.x86_64.rpm
|
| el9.aarch64 | PIGSTY MISS | PIGSTY MISS | PGDG 1.0.7 el9.aarch64.pg16 : wal2mongo_16 wal2mongo_16-1.0.7-1PGDG.rhel9.aarch64.rpm
| PGDG 1.0.7 el9.aarch64.pg15 : wal2mongo_15 wal2mongo_15-1.0.7-1PGDG.rhel9.aarch64.rpm
| PGDG 1.0.7 el9.aarch64.pg14 : wal2mongo_14 wal2mongo_14-1.0.7-1PGDG.rhel9.aarch64.rpm
|
| el10.x86_64 | PIGSTY MISS | PIGSTY MISS | PGDG 1.0.7 el10.x86_64.pg16 : wal2mongo_16 wal2mongo_16-1.0.7-3PGDG.rhel10.x86_64.rpm
| PGDG 1.0.7 el10.x86_64.pg15 : wal2mongo_15 wal2mongo_15-1.0.7-3PGDG.rhel10.x86_64.rpm
| PGDG 1.0.7 el10.x86_64.pg14 : wal2mongo_14 wal2mongo_14-1.0.7-3PGDG.rhel10.x86_64.rpm
|
| el10.aarch64 | PIGSTY MISS | PIGSTY MISS | PGDG 1.0.7 el10.aarch64.pg16 : wal2mongo_16 wal2mongo_16-1.0.7-3PGDG.rhel10.aarch64.rpm
| PGDG 1.0.7 el10.aarch64.pg15 : wal2mongo_15 wal2mongo_15-1.0.7-3PGDG.rhel10.aarch64.rpm
| PGDG 1.0.7 el10.aarch64.pg14 : wal2mongo_14 wal2mongo_14-1.0.7-3PGDG.rhel10.aarch64.rpm
|
| d12.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY 1.0.7 d12.x86_64.pg16 : postgresql-16-wal2mongo postgresql-16-wal2mongo_1.0.7-1PIGSTY~bookworm_amd64.deb
| PIGSTY 1.0.7 d12.x86_64.pg15 : postgresql-15-wal2mongo postgresql-15-wal2mongo_1.0.7-1PIGSTY~bookworm_amd64.deb
| PIGSTY 1.0.7 d12.x86_64.pg14 : postgresql-14-wal2mongo postgresql-14-wal2mongo_1.0.7-1PIGSTY~bookworm_amd64.deb
|
| d12.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY 1.0.7 d12.aarch64.pg16 : postgresql-16-wal2mongo postgresql-16-wal2mongo_1.0.7-1PIGSTY~bookworm_arm64.deb
| PIGSTY 1.0.7 d12.aarch64.pg15 : postgresql-15-wal2mongo postgresql-15-wal2mongo_1.0.7-1PIGSTY~bookworm_arm64.deb
| PIGSTY 1.0.7 d12.aarch64.pg14 : postgresql-14-wal2mongo postgresql-14-wal2mongo_1.0.7-1PIGSTY~bookworm_arm64.deb
|
| d13.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY 1.0.7 d13.x86_64.pg16 : postgresql-16-wal2mongo postgresql-16-wal2mongo_1.0.7-1PIGSTY~trixie_amd64.deb
| PIGSTY 1.0.7 d13.x86_64.pg15 : postgresql-15-wal2mongo postgresql-15-wal2mongo_1.0.7-1PIGSTY~trixie_amd64.deb
| PIGSTY 1.0.7 d13.x86_64.pg14 : postgresql-14-wal2mongo postgresql-14-wal2mongo_1.0.7-1PIGSTY~trixie_amd64.deb
|
| d13.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY 1.0.7 d13.aarch64.pg16 : postgresql-16-wal2mongo postgresql-16-wal2mongo_1.0.7-1PIGSTY~trixie_arm64.deb
| PIGSTY 1.0.7 d13.aarch64.pg15 : postgresql-15-wal2mongo postgresql-15-wal2mongo_1.0.7-1PIGSTY~trixie_arm64.deb
| PIGSTY 1.0.7 d13.aarch64.pg14 : postgresql-14-wal2mongo postgresql-14-wal2mongo_1.0.7-1PIGSTY~trixie_arm64.deb
|
| u22.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY 1.0.7 u22.x86_64.pg16 : postgresql-16-wal2mongo postgresql-16-wal2mongo_1.0.7-1PIGSTY~jammy_amd64.deb
| PIGSTY 1.0.7 u22.x86_64.pg15 : postgresql-15-wal2mongo postgresql-15-wal2mongo_1.0.7-1PIGSTY~jammy_amd64.deb
| PIGSTY 1.0.7 u22.x86_64.pg14 : postgresql-14-wal2mongo postgresql-14-wal2mongo_1.0.7-1PIGSTY~jammy_amd64.deb
|
| u22.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY 1.0.7 u22.aarch64.pg16 : postgresql-16-wal2mongo postgresql-16-wal2mongo_1.0.7-1PIGSTY~jammy_arm64.deb
| PIGSTY 1.0.7 u22.aarch64.pg15 : postgresql-15-wal2mongo postgresql-15-wal2mongo_1.0.7-1PIGSTY~jammy_arm64.deb
| PIGSTY 1.0.7 u22.aarch64.pg14 : postgresql-14-wal2mongo postgresql-14-wal2mongo_1.0.7-1PIGSTY~jammy_arm64.deb
|
| u24.x86_64 | PIGSTY MISS | PIGSTY MISS | PIGSTY 1.0.7 u24.x86_64.pg16 : postgresql-16-wal2mongo postgresql-16-wal2mongo_1.0.7-1PIGSTY~noble_amd64.deb
| PIGSTY 1.0.7 u24.x86_64.pg15 : postgresql-15-wal2mongo postgresql-15-wal2mongo_1.0.7-1PIGSTY~noble_amd64.deb
| PIGSTY 1.0.7 u24.x86_64.pg14 : postgresql-14-wal2mongo postgresql-14-wal2mongo_1.0.7-1PIGSTY~noble_amd64.deb
|
| u24.aarch64 | PIGSTY MISS | PIGSTY MISS | PIGSTY 1.0.7 u24.aarch64.pg16 : postgresql-16-wal2mongo postgresql-16-wal2mongo_1.0.7-1PIGSTY~noble_arm64.deb
| PIGSTY 1.0.7 u24.aarch64.pg15 : postgresql-15-wal2mongo postgresql-15-wal2mongo_1.0.7-1PIGSTY~noble_arm64.deb
| PIGSTY 1.0.7 u24.aarch64.pg14 : postgresql-14-wal2mongo postgresql-14-wal2mongo_1.0.7-1PIGSTY~noble_arm64.deb
|
Build
You can build the DEB packages for wal2mongo using pig build:
pig build pkg wal2mongo # build DEB packages
Install
You can install wal2mongo directly. First, make sure the PGDG and PIGSTY repositories are added and enabled:
pig repo add pgsql -u # Add repo and update cache
Install the extension using pig or apt/yum/dnf:
pig install wal2mongo; # Install for current active PG version
pig ext install -y wal2mongo -v 16 # PG 16
pig ext install -y wal2mongo -v 15 # PG 15
pig ext install -y wal2mongo -v 14 # PG 14
dnf install -y wal2mongo_16 # PG 16
dnf install -y wal2mongo_15 # PG 15
dnf install -y wal2mongo_14 # PG 14
apt install -y postgresql-16-wal2mongo # PG 16
apt install -y postgresql-15-wal2mongo # PG 15
apt install -y postgresql-14-wal2mongo # PG 14
This extension does not require
CREATE EXTENSION
Usage
wal2mongo: PostgreSQL logical decoding output plugin for MongoDB
A logical decoding output plugin that formats PostgreSQL WAL changes as MongoDB-compatible commands, enabling data replication from PostgreSQL to MongoDB.
Configuration
In postgresql.conf:
wal_level = logical
max_replication_slots = 10
Using with SQL Functions
-- Create a logical replication slot
SELECT * FROM pg_create_logical_replication_slot('w2m_slot', 'wal2mongo');
-- Perform DML operations
CREATE TABLE books (id SERIAL PRIMARY KEY, title VARCHAR(100), author VARCHAR(100));
INSERT INTO books (id, title, author) VALUES (123, 'My Book', 'Author');
-- Peek at changes (MongoDB format)
SELECT * FROM pg_logical_slot_peek_changes('w2m_slot', NULL, NULL);
-- Output: db.books.insertOne( { id:123, title:"My Book", author:"Author" } )
-- Consume changes
SELECT * FROM pg_logical_slot_get_changes('w2m_slot', NULL, NULL);
-- Drop the slot
SELECT pg_drop_replication_slot('w2m_slot');
Using with pg_recvlogical
pg_recvlogical -d postgres --slot w2m_slot --create-slot -P wal2mongo
pg_recvlogical -d postgres --slot w2m_slot --start -f -
Replicating to MongoDB
The output can be applied directly in the MongoDB shell:
// Copy the output from pg_logical_slot_get_changes
db.books.insertOne( { id:123, title:"My Book", author:"Author" } )
Or save to a .js file and import:
mongo < changes.js
Output Format
- INSERT:
db.<table>.insertOne( { <columns> } ) - UPDATE:
db.<table>.updateOne( { <key> }, { $set: { <changes> } } ) - DELETE:
db.<table>.deleteOne( { <key> } )
Tables need a primary key or replica identity for UPDATE/DELETE operations to be captured.
Feedback
Was this page helpful?
Thanks for the feedback! Please let us know how we can improve.
Sorry to hear that. Please let us know how we can improve.