PostgreSQL स्ट्रीमिंग रेप्लिकेशन प्राथमिक (मास्टर) नोड से स्टैंडबाय (स्लेव) नोड्स तक राइट-अहेड लॉग (WAL) डेटा को लगातार स्ट्रीम करता है, जिससे हाई उपलब्धता और फॉल्ट टॉलरेंस के लिए निकट-रीयल-टाइम डेटाबेस कॉपी बनती है।
मास्टर नोड कॉन्फ़िगरेशन
1. WAL आर्काइविंग सक्षम करें
postgresql.conf संपादित करें:
archive_mode = on archive_command = 'cp %p /var/lib/pgsql/12/archive/%f' wal_level = replica max_wal_senders = 3
2. रेप्लिकेशन कनेक्शन की अनुमति दें
pg_hba.conf संपादित करें:
# TYPE DATABASE USER ADDRESS METHOD host replication repluser 192.168.1.20/32 md5
3. रेप्लिकेशन उपयोगकर्ता बनाएं
CREATE ROLE repluser WITH REPLICATION LOGIN PASSWORD 'securepass';
इन परिवर्तनों के बाद मास्टर पर PostgreSQL पुनः आरंभ करें।
स्लेव नोड कॉन्फ़िगरेशन
1. मास्टर से बेस बैकअप
sudo -u postgres pg_basebackup -h master_ip -D /var/lib/pgsql/12/data -U repluser -P -R
2. recovery.conf कॉन्फ़िगर करें
/var/lib/pgsql/12/data/recovery.conf बनाएं:
standby_mode = 'on' primary_conninfo = 'host=master_ip port=5432 user=repluser password=securepass' restore_command = 'cp /var/lib/pgsql/12/archive/%f "%p"'
3. स्लेव शुरू करें
sudo systemctl start postgresql-12 sudo systemctl enable postgresql-12
रेप्लिकेशन सत्यापित करें
कनेक्टेड रेप्लिका जांचने के लिए मास्टर पर चलाएं:
SELECT client_addr, state, sync_state FROM pg_stat_replication;
client_addr | state | sync_state ----------------+-----------+------------ 192.168.1.20 | streaming | async
मैनुअल फेलओवर
यदि मास्टर विफल होता है:
- विफल मास्टर से रेप्लिकेशन डिस्कनेक्ट करें
- स्लेव पर,
recovery.confमेंrecovery_target_timeline = 'latest'सेट करें - प्रमोटेड स्लेव पर PostgreSQL पुनः आरंभ करें
pg_stat_replicationका उपयोग करके अन्य स्लेव्स को नए मास्टर से कनेक्ट करें
निष्कर्ष
CentOS 8 पर PostgreSQL 12 स्ट्रीमिंग रेप्लिकेशन में मास्टर पर WAL आर्काइविंग और रेप्लिकेशन एक्सेस कॉन्फ़िगर करना, स्लेव पर बेस बैकअप और recovery.conf बनाना, फिर pg_stat_replication के साथ सत्यापित करना शामिल है। मैनुअल फेलओवर जरूरत पड़ने पर स्लेव को मास्टर में प्रमोट करता है।