Πώς ενεργοποιούμε το Native Steaming Replication σε PostgreSQL

- Πώς ενεργοποιούμε το Native Steaming Replication σε PostgreSQL - 19 Οκτώβριος 2026
- Πώς κάνουμε Partitioning σε υφιστάμενο πίνακα στη PostgreSQL και πώς το συντηρούμε - 12 Οκτώβριος 2026
- Πώς μπορούμε να παρακολουθούμε με ένα report το performance (τύπου Oracle AWR) στη PostgreSQL με το pg_profile extension - 5 Οκτώβριος 2026
Όταν διαχειριζόμαστε κρίσιμες βάσεις δεδομένων, το High Availability και το Disaster Recovery είναι μονόδρομος. Πριν δούμε όμως σύνθετα εργαλεία replication, αξίζει να δούμε πώς δουλεύει απευθείας το native Physical Streaming Replication της PostgreSQL με έναν Primary και έναν Standby server. Σε αυτό το άρθρο θα δούμε βήμα βήμα έναν οδηγό με ολόκληρη τη διαδικασία για PostgreSQL 14 σε Oracle Linux.
Η εγκατάσταση
Πρώτα προσθέτουμε το απαραίτητο configuration στο Primary Node.
Ανοίγουμε το postgresql.conf και βάζουμε τις παρακάτω ρυθμίσεις:
sudo -u postgres vi $PGDATA/postgresql.conf
listen_addresses = '*'
wal_level = replica
wal_log_hints = on
max_wal_senders = 10
wal_keep_size = 1024
archive_mode = on
#hot_standby = on #uncomment for read only replica.
Προσθέτουμε δικαίωμα σύνδεσης για τον replication χρήστη στο pg_hba.conf:
sudo -u postgres vi $PGDATA/pg_hba.conf
# TYPE DATABASE USER ADDRESS METHOD
host replication replicator 10.0.0.206/32 md5
host replication replicator 10.0.0.9/32 md5
Στη συνέχεια δημιουργούμε τον χρήστη replication:
CREATE ROLE replicator WITH REPLICATION LOGIN ENCRYPTED PASSWORD 'password';
Έπειτα κάνουμε επανεκκίνηση της PostgreSQL στον Primary:
sudo systemctl restart postgresql-14
Δημιουργία του Clone στον Standby
Πριν ξεκινήσει το replication, ο Standby θα πρέπει να πάρει ένα Βackup του Primary.
Για αρχή θα πρέπει να σταματήσουμε την PostgreSQL αν τρέχει ήδη:
sudo systemctl stop postgresql-14
Στη συνέχεια με τον χρήστη postgres καθαρίζουμε τον φάκελο δεδομένων του Standby και τρέχουμε το pg_basebackup παίρνοντας τα δεδομένα απευθείας από τον Primary:
su postgres rm -rf /var/lib/pgsql/14/data/* pg_basebackup -h 10.0.0.9 -U replicator -D $PGDATA -P -R
Έπειτα ξεκινάμε το Standby:
sudo systemctl start postgresql-14
Για να επιβεβαιώσουμε ότι παίζουν όλα καλά τρέχουμε απο το Primary το παρακάτω query:
SELECT client_addr, state, sync_state FROM pg_stat_replication;

Αν δούμε το status να είναι streaming, σημαίνει ότι το physical replication λειτουργεί και ο Standby ακολουθεί τον Primary σε πραγματικό χρόνο.
Πώς κάνουμε Manual Switchover χωρίς repmgr
Στο απλό Streaming Replication χωρίς repmgr, το switchover δεν γίνεται με ένα μαγικό κουμπί, αλλά ακολουθώντας μια συγκεκριμένη σειρά ενεργειών:
Ας δούμε τα βήματα βήμα-βήμα.
Πρώτα σταματάμε το Primary για να μην έχουμε Split-Brain:
sudo systemctl stop postgresql-14
Στη συνέχεια προάγουμε το Standby σε νεό Primary:
su postgres pg_ctl -D /var/lib/pgsql/14/data promote
Τέλος θα πρέπει να ξαναδημιουργήσουμε με το pg_basebackup full re-clone του παλιού Standby στον παλιό Primary ώστε να είναι αυτό πλέον το υγιές Standby.
Σε επόμενο άρθρο θα δούμε πώς αυτοματοποιούμε την διαδικασία του switchover με ένα μόνο command με την χρήση του εργαλείου repmgr.

