Postgresql ไม่ยอมรับการเชื่อมต่อการจำลองแบบ


19

การจำลองแบบสตรีมมิ่งแบบธรรมดาธรรมดา PostgreSQL: 9.2.7 Windows 8.1 64 บิต

คลัสเตอร์หลักและรองของฉันอยู่บนเครื่อง Windows เดียวกัน ฉันทำpg_start_backup ()และทุกอย่างเรียบร้อยแล้วดังนั้นทั้งสองโหนดจึงมีข้อมูลเหมือนกัน

ขณะนี้ปัญหาเกี่ยวกับการจำลองแบบคือ "การเชื่อมต่อการจำลองแบบ" จากเซิร์ฟเวอร์ทาสไม่ได้เชื่อมต่อกับเซิร์ฟเวอร์หลัก แต่ฉันสามารถเชื่อมต่อโดยใช้ params เดียวกันโดยใช้เปลือก psql สิ่งที่ฉันคิดว่าผู้ร้ายคือสตริงการเชื่อมต่อในการกู้คืนของทาส:

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

ฉันพยายาม localhost, 0.0.0.0, lan IP ทุกอย่าง แต่บันทึก pg บอกว่า:

 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 เฉพาะ สามารถระบุชื่อฐานข้อมูลหลายชื่อได้โดยคั่นด้วยเครื่องหมายจุลภาค @ไฟล์แยกที่มีชื่อฐานข้อมูลที่สามารถระบุได้โดยก่อนหน้านี้ชื่อไฟล์ด้วย


เราจำเป็นต้องสร้างฐานข้อมูลการจำลองแบบหรือไม่ หรือมันสร้างขึ้นใน?
gimibarak

มันไม่ได้อยู่ในเครื่องและคุณต้องตั้งค่าการจำลองแบบ นี่คือข้อมูลอ้างอิง: digitalocean.com/community/tutorials/…
Sachin Verma

โปรดทราบว่านี่ไม่ใช่กรณีสำหรับการจำลองแบบเชิงตรรกะ
mlissner

3

การเพิ่มบรรทัดด้านล่างpg_hba.confและโหลดใหม่ทำงานได้สำหรับฉัน พิจารณาประเภทคือ 'ท้องถิ่น' ไม่จำเป็นต้องระบุที่อยู่อย่างชัดเจน

# TYPE  DATABASE        USER            ADDRESS                 METHOD
local   replication     postgres                                peer

และอย่าลืม pg_ctl reload


2

อีกวิธีหนึ่งที่เป็นไปได้ที่นี่ที่ฉันวิ่งเข้าไป หากคุณกำลังทำเรพลิเคชันแบบลอจิคัลและคุณได้ตั้งค่า DATABASE เป็นเรพลิเคชันแล้วมันจะไม่ทำงาน มันต้องการเพียงแค่รับพารามิเตอร์ปกติ replicationพารามิเตอร์สำหรับการจำลองแบบทางกายภาพการจำลองแบบไม่เชิงตรรกะ

ชายคนนั้นทำงานเพื่อคิดออก ฉันหวังว่านี่จะช่วยได้!


1
สิ่งนี้จำเป็นต้องได้รับการสนับสนุนเพิ่มเติม ฉันใช้เวลาหลายชั่วโมงในการแก้ไขปัญหาปลั๊กอิน wal2json จนกว่าฉันจะพบสิ่งนี้และนี่เป็นคำตอบที่ถูกต้องสำหรับฉัน ปรากฏว่าปลั๊กอิน wal2json ใช้การจำลองแบบเชิงตรรกะเพื่อรับตัวอย่างคำสั่ง pg_recvlogical เพื่อใช้งานฉันต้องตั้งค่า pg_hba.conf ให้ใช้ชื่อฐานข้อมูล 'ทดสอบ' แทนคำหลัก 'จำลอง'
Alf47
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.