Please wait...
Suggest:

Panduan Lengkap Setup Konfigurasi Streaming Replication PostgreSQL 16

Last update at Oktober 8, 2024 by
Panduan Lengkap Setup Konfigurasi Streaming Replication PostgreSQL 16

PostgreSQL 16 menawarkan kemampuan replikasi yang kuat untuk memastikan data tetap tersedia dan terdistribusi secara real-time antara server utama (primary) dan server cadangan (standby). Berikut adalah langkah-langkah yang perlu diikuti untuk mengkonfigurasi streaming replication pada PostgreSQL 16.

Persiapan Awal

Instalasi PostgreSQL

Pastikan PostgreSQL 16 telah terinstal di kedua server (primary dan standby). Jika belum, Anda dapat menginstalnya dengan perintah berikut:

sudo apt-get update
sudo apt-get install postgresql-16

Buat User Replikasi

Buat user khusus untuk replikasi di server primary:

CREATE ROLE rep_user WITH REPLICATION LOGIN PASSWORD 'password';

Konfigurasi di Server Primary

1. Edit postgresql.conf

Lokasi file ini biasanya ada di /etc/postgresql/16/main/postgresql.conf. Tambahkan atau edit baris berikut:

wal_level = 'replica'
max_wal_senders = 10
max_replication_slots = 10
wal_log_hints = 'on'
synchronous_standby_names = 'FIRST 1 (standby1, standby2)'

2. Edit pg_hba.conf

Lokasi file ini biasanya ada di /etc/postgresql/16/main/pg_hba.conf. Tambahkan baris berikut untuk mengizinkan akses dari server standby:

host replication rep_user 10.0.0.2/32 scram-sha-256

3. Restart PostgreSQL

Setelah mengedit konfigurasi, restart PostgreSQL:

sudo systemctl restart postgresql

4. Buat Slot Replikasi (Opsional)

Untuk membuat slot replikasi, jalankan perintah berikut di PostgreSQL:

SELECT * FROM pg_create_physical_replication_slot('rep_slot');

Terima kasih atas koreksinya. Mulai PostgreSQL 12, file recovery.conf tidak lagi digunakan. Sebagai gantinya, pengaturan replikasi dilakukan di dalam file postgresql.conf dan melalui file sinyal. Berikut adalah langkah-langkah yang telah diperbarui untuk PostgreSQL 16:

Konfigurasi di Server Standby

1. Hentikan PostgreSQL:

sudo systemctl stop postgresql

2. Salin Data dari Primary ke Standby:

   pg_basebackup -h primary_server_ip -D /var/lib/postgresql/16/main -U rep_user -W -P --write-recovery-conf

Opsi --write-recovery-conf akan membuat file standby.signal dan memasukkan pengaturan replikasi yang diperlukan ke dalam postgresql.conf.

3. Edit postgresql.conf:

Pastikan file postgresql.conf memiliki pengaturan berikut:

   primary_conninfo = 'host=primary_server_ip port=5432 user=rep_user password=password'
   primary_slot_name = 'rep_slot'  # Jika menggunakan slot replikasi
   hot_standby = 'on'

4. Edit pg_hba.conf:

Tambahkan entri untuk mengizinkan koneksi ke server primary:

   host replication rep_user primary_server_ip/32 scram-sha-256

5. Start PostgreSQL:

   sudo systemctl start postgresql

Verifikasi

Cek Status Replikasi di Primary:

SELECT * FROM pg_stat_replication;

Contoh results

  pid   | usesysid | usename  | application_name | client_addr  | client_hostname | client_port |         backend_start         | backend_xmin |   state   |  sent_lsn   |  write_lsn  |  flush_lsn  | replay_lsn  | write_lag | flush_lag | replay_lag | sync_priority | sync_state |          reply_time           
--------+----------+----------+------------------+--------------+-----------------+-------------+-------------------------------+--------------+-----------+-------------+-------------+-------------+-------------+-----------+-----------+------------+---------------+------------+-------------------------------
 638369 |   340262 | rep_user | 16/main          | 34.50.82.145 |                 |       45992 | 2024-07-10 17:04:53.349471+00 |              | streaming | 30/7C014690 | 30/7C014690 | 30/7C014690 | 30/7C014690 |           |           |            |             0 | async      | 2024-07-10 17:05:23.409507+00
(1 row)

Cek Status di Standby:

SELECT * FROM pg_is_in_recovery();

Contoh results

postgres@hostname:~/16$ psql
psql (16.3 (Ubuntu 16.3-1.pgdg22.04+1))
Type "help" for help.

postgres=# SELECT * FROM pg_is_in_recovery();
 pg_is_in_recovery 
-------------------
 t
(1 row)

postgres=# 

Jika semuanya berjalan dengan baik, Anda sekarang memiliki setup PostgreSQL streaming replication yang aktif. Replikasi ini memastikan bahwa data di server standby selalu diperbarui secara real-time dari server primary, sehingga meningkatkan ketersediaan dan keandalan data Anda.

Sumber:

Dengan mengikuti panduan ini, Anda dapat mengatur streaming replication pada PostgreSQL 16 dengan mudah dan memastikan data Anda selalu sinkron antara server primary dan standby.

Postingan Lainnya

©2024