PostgreSQL

[PostgreSQL] Logical Replication di Postgres 10

Kondisi saat ini, sampai PostgreSQL 9.x, untuk replikasi database dengan batasan tertentu alias tidak replikasi data secara keseluruhan pada cluster database dapat dilakukan dengan dua cara yaitu dump-restore, dan replikasi dengan memanfaatkan trigger. Jika menggunakan trigger, maka pilihan alatnya adalah Londiste dari Skytools atau Bucardo yang masing-masing memiliki nilai plus dan minus. Dengan memanfaatkan trigger ini replikasi cukup bisa diandalkan karena nyaris realtime. Sementara memanfaatkan dump-restore tentu saja tidak dapat dilakukan secara realtime akan tetapi masing-masing host memiliki sedikit ketergantungan. Intinya adalah, apa yang sesuai untuk kebutuhan saja.

Namun, berkat kerja keras developer Postgres, urusan replikasi dengan batasan tidak lagi menyusahkan berkat kehadiran LOGICAL REPLICATION.

Dengan logical replication, replikasi tidak lagi harus dilakukan secara menyeluruh pada cluster, melainkan dapat dibatasi pada tabel-tabel tertentu saja. Dan ini berjalan secara realtime layaknya streaming replication. Dengan demikian satu provider (master) dapat mengirimkan replikasi tabel-tabel pada banyak subscriber (slave) atau sebaliknya. Selain itu dengan logical replication kita bisa melakukan replikasi pada level row atau kolom tertentu.

Logical replication memanfaatkan metode publish dan subscribe dengan cara kerja yaitu subscriber akan menarik data dari provider(-provider) yang di daftarnya. Dan jika diperlukan subscriber akan mem-publish data yang diterimanya untuk dapat diambil oleh subscriber lain di bawahnya (cascaded).

Dari penjelasan di atas, dapat ditarik kesimpulan bahwa logical replication bisa berguna pada banyak kasus contohnya:

  • upgrade versi Postgres tanpa downtime
  • database analitik kumpulan berbagai cluster
  • pemisahan database dari cluster tertentu
  • dan lain sebagainya

Leave a comment