PeerDB adalah platform CDC (Change Data Capture) real-time yang memungkinkan replikasi data dari database sumber ke database target.
peerdb/
├── docker-compose.yml # Konfigurasi container PeerDB
├── run-peerdb.sh # Script untuk menjalankan PeerDB
├── quickstart_prepare_peers.sh # Script setup database
├── insert.ps1 # Script stress test INSERT
├── monitoring.ps1 # Script monitoring pipeline
├── testing-results/ # Folder hasil testing dan logs
└── README.md # Dokumentasi ini
git clone https://github.com/khoirulamars/peerdb-cdc-psql-psql
cd peerdbdocker --version
docker-compose --version# Menggunakan Docker Compose
docker compose up -d
# Atau menggunakan script run-peerdb.sh ( menggunakan WSL/Linux)
./run-peerdb.shOutput yang diharapkan:
[+] Running 11/11
✔ Container catalog Healthy
✔ Container peerdb-server Started
✔ Container temporal Started
✔ Container peerdb-ui Started
✔ Container flow-worker Started
✔ Container flow_api Started
...
docker psPastikan semua container dalam status Up dan healthy.
./quickstart_prepare_peers.shPastikan tidak terjadi error.
-
Akses UI: Buka http://localhost:3000
-
Create Peer:
- Klik "Add Peer"
- Source Peer:
- Name:
postgres_source - Type: PostgreSQL
- Host:
catalog - Port:
5432 - Database:
source - Username:
postgres - Password:
postgres
- Name:
- Target Peer:
- Name:
postgres_target - Type: PostgreSQL
- Host:
catalog - Port:
5432 - Database:
target - Username:
postgres - Password:
postgres
- Name:
-
Create Mirror:
- Klik "Create Mirror"
- Source:
postgres_source - Target:
postgres_target - Tables: Pilih
customers,products,orders - Mirror Name:
postgres_to_postgres_mirror
-
Start Replication: Klik "Start" pada mirror yang telah dibuat
# Test basic (100 records, batch 10)
.\insert.ps1 -RecordCount 100 -BatchSize 10 -ShowProgress
# Test dengan parameter custom
.\insert.ps1 -RecordCount 1000 -BatchSize 50 -DelayBetweenBatches 2 -ShowProgress
# Test performa tinggi
.\insert.ps1 -RecordCount 5000 -BatchSize 500 -DelayBetweenBatches 1Parameter yang tersedia:
-RecordCount: Jumlah record yang akan diinsert (default: 5000)-BatchSize: Ukuran batch per transaksi (default: 500)-DelayBetweenBatches: Delay antar batch dalam detik (default: 1)-ShowProgress: Menampilkan progress detail
Output yang diharapkan:
[17:41:09] PeerDB CDC Pipeline INSERT Stress Test
[17:41:09] Test ID: 2025-09-01-17-41-09
[17:41:09] Target Records: 100
[17:41:09] Batch Size: 10
[17:41:09] Success Rate: 100%
[17:41:09] Throughput: 1.04 operations/second
- Stress Test Log:
testing-results/peerdb-stress-test-[timestamp].log - Resource Usage Log:
testing-results/peerdb-resource-usage-[timestamp].log
.\monitoring.ps1Pilihan monitoring:
- [A] Auto-select: Otomatis memilih file log terbaru
- [M] Manual: Pilih file log secara manual
- [Q] Quit: Keluar dari monitoring
- System Resource Usage: CPU, Memory, Container stats
- Server Health Check: Status koneksi database
- Table Statistics: Jumlah row, ukuran tabel source vs target
- Flow Analysis: Status CDC replication
- Operations Analysis: INSERT/UPDATE/DELETE operations
- Container Health: Status semua container Docker
- Performance Summary: Ringkasan performa pipeline
- Database Metrics: Metrik performa database
- Flow Health: Kesehatan konfigurasi CDC
- Analysis Summary: Rekomendasi berdasarkan analisis
# Cek status container
docker ps -a
# Cek logs container bermasalah
docker logs <container_name>
# Restart container
docker restart <container_name># Test koneksi ke catalog
docker exec catalog psql -U postgres -d postgres -c "SELECT 1;"
# Cek apakah database source/target sudah dibuat
docker exec catalog psql -U postgres -d postgres -c "\l"# Cek status container UI
docker ps | grep peerdb-ui
# Restart container UI
docker restart peerdb-ui
# Cek logs UI
docker logs peerdb-ui- Cek di PeerDB UI: Pastikan mirror sudah dibuat dan started
- Cek WAL Level: Database PostgreSQL harus menggunakan
wal_level = logical - Cek Replication Slots:
SELECT * FROM pg_replication_slots;
# Stop semua container
docker compose down
# Hapus volume (WARNING: Akan menghapus semua data)
docker compose down -v
# Restart clean
docker compose up -d- Data Insert ke database source
- PostgreSQL WAL menangkap perubahan
- PeerDB Flow Worker membaca WAL
- Temporal Workflow mengatur replikasi
- Data Replicated ke database target
- Monitoring melacak status dan performa
