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.