Pembaruan: Saya telah memposting tentang hal ini ke forum AWS - silakan berpadu dan memintanya di sana .
Pada saat penulisan, Amazon RDS tidak mendukung replikasi fisik di luar RDS. Anda bisa GRANT
pengguna yang REPLICATION
tepat menggunakan rds_superuser
login, tapi Anda tidak bisa mengkonfigurasi replication
entri untuk IP luar di pg_hba.conf
.
Selanjutnya, ketika Anda membuat grup parameter DB di RDS, beberapa parameter kunci ditampilkan tetapi dikunci, misalnya archive_command
yang dikunci /etc/rds/dbbin/pgscripts/rds_wal_archive %p
. AWS RDS untuk PostgreSQL tampaknya tidak mengekspos WAL ini untuk akses eksternal (katakanlah, melalui S3) karena perlu jika Anda menggunakan replikasi pengiriman pengiriman WAL untuk PITR eksternal.
Jadi pada titik ini, jika Anda ingin pengiriman, jangan gunakan RDS. Ini adalah basis data kalengan yang mudah digunakan, tetapi mudah digunakan sering berarti bahwa itu juga terbatas, dan memang demikian halnya di sini. Seperti yang ditunjukkan oleh Joe Love di komentar, itu memberikan pengiriman WAL dan PITR dalam RDS , tetapi Anda tidak bisa mendapatkan akses ke WAL itu dari luar RDS.
Jadi, Anda perlu menggunakan fasilitas cadangan RDS sendiri - dump, snapshots, dan PITR berbasis WAL sendiri.
Bahkan jika RDS membiarkan Anda membuat koneksi replikasi (untuk pg_basebackup
atau streaming replikasi) dan memungkinkan Anda untuk mengakses WAL yang diarsipkan, Anda mungkin tidak dapat benar-benar mengkonsumsi WAL itu. RDS menjalankan PostgreSQL yang ditambal, meskipun tidak ada yang tahu seberapa berat ditambal atau apakah itu secara signifikan mengubah format di-disk. Ini juga berjalan pada arsitektur yang dipilih oleh Amazon, yang mungkin x64 Linux, tetapi tidak mudah ditentukan. Karena PostgreSQL pada format disk dan replikasi bergantung pada arsitektur, Anda hanya bisa mereplikasi ke host dengan arsitektur yang sama seperti yang digunakan oleh Amazon RDS, dan hanya jika postgreSQL build Anda kompatibel dengan milik mereka.
Antara lain ini berarti Anda tidak memiliki cara mudah untuk bermigrasi dari RDS. Anda harus menghentikan semua penulisan ke basis data cukup lama untuk mengambil pg_dump
, mengembalikannya, dan menjalankan DB yang baru. Trik yang biasa dengan replikasi dan failover, dengan rsync, dll, tidak akan berhasil karena Anda tidak memiliki akses langsung ke host DB.
Bahkan jika RDS menjalankan PostgreSQL Amazon yang belum ditambal mungkin tidak akan mengizinkan Anda untuk melakukan streaming WAL ke RDS atau mengimpor ke RDS menggunakan pg_basebackup
untuk alasan keamanan. PostgreSQL memperlakukan direktori data sebagai konten tepercaya, dan jika Anda telah membuat fungsi 'BAHASA c' yang pintar yang mengaitkan fungsionalitas internal atau melakukan hal lain yang rumit, Anda mungkin dapat mengeksploitasi server untuk mendapatkan akses yang lebih besar daripada yang seharusnya Anda miliki. . Jadi Amazon tidak akan mengizinkan WAL masuk dalam waktu dekat.
Mereka dapat mendukung pengiriman WAL keluar, tetapi masalah di atas dengan kompatibilitas format, kebebasan untuk melakukan perubahan, dll masih berlaku.
Sebagai gantinya Anda harus menggunakan alat seperti Londiste atau Bucardo.
Ini sekarang dimungkinkan menggunakan Replikasi Logical: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.LogicalReplication
sumber
Replikasi menggunakan sistem berbasis pemicu seperti Londiste dan Bucardo masuk dan keluar dari RDS sekarang didukung pada 10 November 2014 , per balasan di utas forum itu.
Pengumuman di sini
sumber
pg_basebackup
, dll. Mereka telah membuat pilihan terbaik yang mereka bisa, karena masalah keamanan mencegah mereka dari benar-benar mendukung replikasi fisik.