Apakah PostgreSQL 9.1 Streaming Replication mengejar ketinggalan setelah lag tanpa pengarsipan WAL?

16

Konteks:

Katakanlah, saat menggunakan Streaming Replikasi / Hot Standby pada cluster Postgres 9.1, node siaga turun. Itu tetap selama satu hari, selama waktu itu banyak DML terjadi pada master. Recovery.conf dari standby tidak mengandung entri 'restore_command' (untuk memulihkan dari file jurnal WAL), tetapi memang berisi string 'primary_conninfo' (untuk Replikasi Streaming).

Pertanyaan:

Jika saya memulai lagi siaga setelah sehari perubahan pada master. Apakah akan "menyusul" (akhirnya menjadi kondisi yang mencerminkan master) hanya menggunakan Streaming Replication? Atau apakah saya harus mengaktifkan pengarsipan file WAL dan membiarkannya menerapkan file yang diarsipkan selama pemadaman untuk memastikan mata uang?

Saya telah memeriksa dokumen replikasi pengarsipan / streaming WAL di sini , dan dikatakan bahwa Anda tidak harus mengaktifkan pengarsipan WAL dan Streaming Replikasi, tetapi tidak jelas apakah pengejaran akan terjadi atau tidak tanpa pengarsipan file WAL diaktifkan.

Terima kasih!

Zac B
sumber

Jawaban:

9

Ya, itu akan menyusul, menggunakan streaming saja, jika (dan hanya jika) , jumlah segmen WAL yang dihasilkan sejak pembaruan terakhir pada siaga kurang dari nilai wal_keep_segments di postgresql.conf. Ini tercakup dalam bagian dokumentasi ini: Replikasi

Matthew Wood
sumber
2
Jawaban ini benar, tetapi menyoroti masalahnya. Jika Anda pernah melewati wal_keep_segments, replikasi Anda sudah mati. Menyiapkan replikasi berbasis file bukan opsional jika Anda menginginkan sistem yang akan bertahan setelah terputusnya sambungan lama dari master dan mengejar ketinggalan.
Greg Smith
0

di standby node, Anda dapat mengatur restore_command pada recovery.conf dan kemudian salin file master pg_xlog (yang hilang saat standby) ke folder yang restore_command poin. Anda dapat dengan mudah menemukan file xlog mana yang hilang dengan memulai simpul startup dan mengetik

ps aux | grep postgres

Anda akan melihat "menunggu 000000020000005200000025" atau sesuatu seperti ini, yang memberi tahu Anda pg_xlog mana yang harus Anda mulai salin dari master ke jalur restore_command standby.

jika Anda mengaktifkan wal_archiving, itu akan mulai mengarsipkan dari saat Anda mengatur.

sftsz
sumber
Saya mengerti bahwa menggunakan pengarsipan WAL berbasis file dan pemberian siaga sebagai restore_command untuk memuat file WAL, saya dapat memastikan bahwa hal itu menyusul. Tapi itu bukan pertanyaan saya; Saya ingin tahu apakah siaga akan mengikuti jika saya hanya menggunakan replikasi streaming (tidak ada pengiriman file WAL, hanya aliran replikasi seperti yang ditentukan dalam 'primary_conninfo').
Zac B
tidak. postgres tidak melakukan itu. Anda harus menyalin file log jika ada penundaan pada replikasi Anda.
sftsz
0

Tidak, saya membuat instance replikasi streaming dan entah bagaimana gagal, saya tidak dapat membuatnya lagi sampai saya membuat manual rsyncarsip WAL.

xenoterracide
sumber