ปรับปรุง: ฉันได้โพสต์เกี่ยวกับเรื่องนี้ไปยังฟอรั่ม AWS - โปรดไปตีระฆังในและขอให้มันมี
ในขณะที่เขียน Amazon RDS ไม่สนับสนุนการจำลองแบบภายนอก RDS คุณสามารถGRANT
ผู้ใช้ที่REPLICATION
ถูกต้องโดยใช้การrds_superuser
เข้าสู่ระบบ แต่คุณไม่สามารถกำหนดค่าreplication
รายการสำหรับ IP ภายนอกpg_hba.conf
ได้
นอกจากนี้เมื่อคุณสร้างกลุ่มพารามิเตอร์ DB ใน RDS พารามิเตอร์ที่สำคัญบางอย่างที่จะแสดง แต่ล็อคเช่นซึ่งถูกล็อคไปarchive_command
/etc/rds/dbbin/pgscripts/rds_wal_archive %p
AWS RDS สำหรับ PostgreSQL ดูเหมือนจะไม่เปิดเผย WALs เหล่านี้สำหรับการเข้าถึงภายนอก (พูดผ่าน S3) ตามที่จำเป็นหากคุณใช้การจำลองแบบ WAL-shipping สำหรับ PITR ภายนอก
ดังนั้น ณ จุดนี้หากคุณต้องการจัดส่งสินค้าทางไปรษณีย์อย่าใช้ RDS มันเป็นฐานข้อมูลที่ใช้งานง่ายกระป๋อง แต่บ่อยครั้งที่ใช้งานง่ายหมายความว่ามันมี จำกัด และนั่นเป็นกรณีที่นี่อย่างแน่นอน ดังที่ Joe Love ชี้ให้เห็นในความคิดเห็นมันมีการจัดส่ง WAL และ PITR ภายใน RDSแต่คุณไม่สามารถเข้าถึง WAL ไปยังสิ่งนั้นได้จากนอก RDS
ดังนั้นคุณต้องใช้สิ่งอำนวยความสะดวกในการสำรองข้อมูลของ RDS เช่นดัมพ์สแน็ปช็อตและ PITR ที่ใช้ WAL ของตัวเอง
แม้ว่า RDS จะอนุญาตให้คุณทำการเชื่อมต่อการจำลองแบบ (สำหรับpg_basebackup
หรือการจำลองแบบสตรีมมิ่ง) และอนุญาตให้คุณเข้าถึง WAL ที่เก็บถาวรคุณอาจไม่สามารถใช้ WAL นั้นได้ RDS รัน PostgreSQL ที่ได้รับการแพตช์แล้ว แต่ไม่มีใครรู้ว่าแพทช์มีความแรงมากหรือว่ามีการเปลี่ยนแปลงรูปแบบบนดิสก์ มันยังทำงานบนสถาปัตยกรรมที่เลือกโดย Amazon ซึ่งอาจเป็น x64 Linux แต่ไม่สามารถระบุได้ง่าย เนื่องจาก PostgreSQL ใช้รูปแบบดิสก์และการจำลองแบบขึ้นอยู่กับสถาปัตยกรรมคุณจึงสามารถทำซ้ำไปยังโฮสต์ที่มีสถาปัตยกรรมเดียวกับที่ใช้โดย Amazon RDS และเฉพาะในกรณีที่การสร้าง PostgreSQL ของคุณเข้ากันได้เท่านั้น
เหนือสิ่งอื่นใดนั่นหมายความว่าคุณไม่มีวิธีง่ายๆในการย้ายออกจาก RDS คุณต้องหยุดการเขียนทั้งหมดไปยังฐานข้อมูลนานพอที่จะรับpg_dump
คืนค่าและเรียกใช้ฐานข้อมูลใหม่ เทคนิคปกติที่มีการเรพลิเคทและ failover ด้วย rsync และอื่น ๆ จะไม่ทำงานเพราะคุณไม่มีสิทธิ์เข้าถึงโฮสต์ DB โดยตรง
แม้ว่า RDS จะรัน PostgreSQL ที่ไม่มีใครเทียบ Amazon อาจไม่ต้องการอนุญาตให้คุณทำการสตรีม WAL ไปยัง RDS หรือนำเข้าสู่ RDS โดยใช้pg_basebackup
เหตุผลด้านความปลอดภัย PostgreSQL ถือว่าไดเรกทอรีข้อมูลเป็นเนื้อหาที่เชื่อถือได้และหากคุณออกแบบฟังก์ชั่น 'LANGUAGE c' ที่ชาญฉลาดที่เชื่อมโยงการทำงานภายในหรือทำสิ่งอื่นที่ยุ่งยากคุณอาจสามารถใช้ประโยชน์จากเซิร์ฟเวอร์เพื่อให้เข้าถึงได้มากกว่าที่คุณควรจะมี . ดังนั้นอเมซอนจะไม่อนุญาตให้มี WAL ขาเข้าเร็ว ๆ นี้
พวกเขาสามารถรองรับการส่ง WAL ขาออก แต่ปัญหาข้างต้นเกี่ยวกับความเข้ากันได้ของรูปแบบอิสระในการเปลี่ยนแปลง ฯลฯ ยังคงมีผล
แต่คุณควรใช้เครื่องมือเช่น Londiste หรือ Bucardo