Postgresql प्रतिकृति कनेक्शन को स्वीकार नहीं करता है


19

सादा पुरानी स्ट्रीमिंग प्रतिकृति। PostgreSQL: 9.2.7 विंडोज 8.1 64 बिट

मेरे प्राथमिक और द्वितीयक क्लस्टर एक ही विंडोज़ मशीन पर हैं। मैंने पहले ही pg_start_backup () और सब कुछ कर लिया है, इसलिए दोनों नोड्स में एक समान डेटा है।

अब प्रतिकृति के साथ समस्या यह है कि दास सर्वर से "प्रतिकृति कनेक्शन" प्राथमिक सर्वर से कनेक्ट नहीं होता है लेकिन मैं psql शेल का उपयोग करके समान पार्म्स का उपयोग करके कनेक्ट कर सकता हूं। मुझे क्या लगता है कि अपराधी गुलाम की वसूली में कनेक्शन स्ट्रिंग है।

primary_conninfo = 'host = 127.0.0.1 port = 5432 user = postgres password = postgres'

मैंने लोकलहोस्ट की कोशिश की, 0.0.0.0, लैन आईपी सब कुछ लेकिन पीजी लॉग कहता है:

 FATAL:  could not connect to the primary server: FATAL:  no pg_hba.conf entry for replication connection from host "127.0.0.1", user "postgres", SSL off

अब मेरे मास्टर के pg_hba.conf को देखें:

host     all     all     0.0.0.0/0   trust
host    all             postgres             127.0.0.1/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 md5
hostnossl    all     postgres    127.0.0.1/32    trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5

यह पसंद है कि मैं हर संभव कनेक्शन की अनुमति देता हूं, फिर भी दास कनेक्ट नहीं कर सकता। क्या आप कोई मदद कर सकते हैं?

जवाबों:


25

डेटाबेस नाम के replicationरूप में allप्रतिकृति कनेक्शन को कवर नहीं करता है।

host    replication    postgres             127.0.0.1/0               trust

PostgreSQL प्रलेखन आगे कहते हैं:

मान replicationनिर्दिष्ट करता है कि रिकॉर्ड मेल से मेल खाता है यदि प्रतिकृति कनेक्शन का अनुरोध किया गया है (ध्यान दें कि प्रतिकृति कनेक्शन किसी विशेष डेटाबेस को निर्दिष्ट नहीं करता है)। अन्यथा, यह एक विशिष्ट PostgreSQL डेटाबेस का नाम है। एकाधिक डेटाबेस नामों को कॉमा के साथ अलग करके आपूर्ति की जा सकती है। एक अलग फ़ाइल जिसमें डेटाबेस का नाम है, फ़ाइल नाम से पहले के द्वारा निर्दिष्ट किया जा सकता है @


क्या हमें एक प्रतिकृति डेटाबेस बनाने की आवश्यकता है? या यह अंतर्निहित है ??
गिमिबारक

यह इनबिल्ट नहीं है और आपको प्रतिकृति सेट करना होगा। यहाँ संदर्भ है: digitalocean.com/community/tutorials/…
सचिन वर्मा

ध्यान दें कि यह तार्किक प्रतिकृति के लिए मामला नहीं है।
mlissner

3

नीचे की लाइन जोड़ना pg_hba.confऔर पुनः लोड करना मेरे लिए काम किया। प्रकार को 'स्थानीय' मानना, स्पष्ट रूप से एक पते को निर्दिष्ट करना आवश्यक नहीं है।

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   replication     postgres                                peer

और याद रखना pg_ctl reload


2

एक अन्य संभव समाधान यहाँ है कि मैं भाग गया। यदि आप तार्किक प्रतिकृति कर रहे हैं और आपके पास प्रतिकृति के लिए DATABASE सेट है, तो यह काम नहीं करेगा। इसे बस एक नियमित पैरामीटर प्राप्त करने की आवश्यकता है। replicationपैरामीटर शारीरिक प्रतिकृति, नहीं तार्किक प्रतिकृति के लिए है।

यार, किसी को पता लगाने के लिए कुछ काम किया। आशा है कि ये आपकी मदद करेगा!


1
इसे और अधिक उभारने की जरूरत है। जब तक मुझे यह नहीं मिला, मैंने वॉल 2json प्लगइन को समस्याग्रस्त करने में घंटों बिताए और यह मेरे लिए सही उत्तर था। ऐसा प्रतीत होता है कि Wal2json प्लगइन तार्किक प्रतिकृति का उपयोग करता है ताकि उनका उदाहरण pg_recvlogical कमांड प्राप्त करने के लिए मुझे काम करने के लिए pg_hba.conf को कीवर्ड 'प्रतिकृति' के बजाय 'परीक्षण' डेटाबेस नाम का उपयोग करने की आवश्यकता हो
Alf47
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.