info@solusidb.com

PostgreSQL – Logical Replication – Overview

Pada PostgreSQL memiliki fitur replikasi, yang bertujuan untuk menjaga availability data yang kita miliki, meminimalisir resiko terjadinya kehilangan data yang di akibatkan oleh hardware failure, os crash dan lain sebagainya. Selain itu juga pada PostgreSQL replikasi juga berguna untuk membagi beban kerja dari server / instance database untuk meningkatkan performance aplikasi kita.

Pada PostgreSQL memiliki dua type replikasi, yaitu:
1. Physical Replication
2. Logical Replication

Physical Replication, Fitur ini mulai ada pada PostgreSQL 9.0, yang mana mekanismenya adalah setiap perubahan pada server Master kemudian di stream dan di apply ke server tujuan / standby server melalui WAL (write-ahead logging). Physical replikasi memiliki beberapa keterbatasan diantaranya adalah :

  • Tidak bisa me-replikasi sebagian database / table
  • Pada standby server hanya bisa untuk read
  • Tidak bisa melakukan replikasi pada 2 major versi PostgreSQL
  • Tidak bisa melakukan replikasi terhadap platform yang berbeda (contohnya adalah antara linux & windows)

Logical Replication, Pada PostgreSQL versi 10 mulai di perkenalkan konsep Logical Replication, dengan mekanisme menggunakan WAL untuk me-record semua perubahan logical yang tidak bergantung pada versi & spesifik arsitektur. Mengusung konsep Publisher & Subscriber, semua perubahan yang terjadi pada Publisher akan di kirim ke Subscriber secara realtime.

Logical Replication Architecture

Pada logical replication terdiri dari dua komponen, yaitu Source ( Publisher atau Publication) dan Destination ( Subscriber atau Subscription).

Publication / Publisher bisa disebut sebagai Master server / node. Publisher bekerja pada level database, satu publisher bisa untuk satu table atau multiple table. Kita juga dapat membuat multiple publication untuk masing-masing table.

Subcription / Subscriber adalah destination dari replication, Koneksi source (publisher) di define pada Subscriber. Subscriber juga bisa menjadi Publisher untuk subscriber lainnya.

Ketika subscriber telah dibuat, Logical Replication meng-copy snapshot data dari Publisher, setelah itu menunggu perubahan delta data pada Publisher untuk di apply ke Subscriber. Proses nya hampir sama dengan physical replication, yaitu menggunakan Wal Sendel. Publication mengirim Wal sender menggunakan logical replication worker.

Use Cases Logical Replication

Penting untuk mengetahui kapan kita menggunakan Logical Replication untuk mendapatkan benefit yang maksimal. Berikut beberapa use case yang bisa menggunakan Logical Replication :

  • Penggabungan dari beberapa source database menjadi satu database, biasanya ini digunakan untuk kebutuhan analytic
  • Untuk replikasi data dari Major Version PostgreSQL
  • Untuk replikasi dari berbeda platform OS (Windows to Linux atau sebaliknya)

Limitations of Logical Replication

  • Tidak bisa mereplikasi Schema & DDL
  • Tidak bisa mereplikasi sequences
  • Tidak bisa mereplikasi Large Objects
  • Harus sebagai super user untuk menambahkan table
  • Table harus memiliki Primary Key
  • Tidak support bi-directional replikasi