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

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

Όταν διαχειριζόμαστε κρίσιμες βάσεις δεδομένων, το 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;
Πώς ενεργοποιούμε το Native Steaming Replication σε PostgreSQL

Αν δούμε το 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.

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση