pg_start_backup
akan melakukan pos pemeriksaan, seperti catatan dezso. Ini memang memiliki dampak, tetapi basis data Anda melakukan pemeriksaan secara teratur, dan harus melakukannya agar berfungsi, sehingga jelas bukan masalah bagi Anda. Sebuah pos pemeriksaan awal berarti bahwa lebih sedikit data yang telah terakumulasi, yang berarti bahwa jika sesuatu dari suatu pos pemeriksaan pg_start_backup
akan berdampak lebih rendah dari biasanya.
Di mana Anda perlu khawatir adalah langkah rsync atau setara pg_basebackup
. I / O baca dari ini tidak akan terlalu buruk karena itu berurutan, tapi itu mungkin masih akan secara signifikan merusak kinerja I / O database Anda, dan itu juga akan cenderung mendorong data panas keluar dari cache RAM dalam mendukung kurang data -digunakan, menyebabkan meronta-ronta cache sebagai data yang lebih dibutuhkan kemudian dibaca kembali.
Anda dapat menggunakan nice
dan ionice
membantu membatasi dampak I / O (tetapi bukan dampak cache); Namun, ada biaya untuk itu. Pencadangan akan memakan waktu lebih lama, dan sampai Anda menyelesaikan pencadangan dan menjalankan pg_stop_backup
sistem Anda - seperti yang saya mengerti - mengakumulasi WAL tidak dapat menghapus, mengakumulasi hutang pos pemeriksaan untuk pos pemeriksaan BESAR pada akhir pencadangan, dan mengakumulasi tabel dan indeks mengasapi karena tidak dapat membersihkan baris mati. Jadi Anda benar-benar tidak mampu untuk membuat cadangan selamanya, terutama jika Anda memiliki tabel churn yang sangat tinggi.
Pada akhirnya, sulit untuk mengatakan apakah Anda dapat menggunakan dengan aman pg_start_backup
dan pg_stop_backup
untuk cadangan panas di lingkungan Anda. Kebanyakan orang bisa, tetapi jika Anda dekat dengan apa yang bisa dilakukan perangkat keras Anda, memiliki persyaratan waktu yang ketat, tidak mampu menanggung risiko kios, dan memiliki meja churn yang sangat tinggi serta meja yang sangat besar, itu mungkin menyusahkan .
Sayangnya, Anda cukup perlu mengujinya dan melihatnya.
Jika Anda bisa, mungkin perlu mengeluarkan CHECKPOINT
lalu mengambil snapshot atom dari volume basis data Anda alih-alih menggunakan LVM, alat SAN Anda, EBS, atau apa pun yang Anda aktifkan. Jika Anda dapat melakukan ini, Anda dapat menyalin foto itu di waktu luang Anda. Pendekatan ini tidak cocok untuk mengambil cadangan dasar untuk PITR / siaga hangat / siaga panas, tetapi sangat baik untuk salinan cadangan statis, dan dampaknya jauh lebih rendah pada sistem. Anda hanya dapat melakukan ini jika snapshot Anda bersifat atomik dan seluruh basis data Anda termasuk WAL ada dalam satu volume.
Satu kemungkinan yang belum saya selidiki adalah menggabungkan dua pendekatan. Terpikir oleh saya bahwa seseorang mungkin ( belum diuji dan mungkin salah dan tidak aman , saya belum tahu):
pg_start_backup
- Picu snapshot dari semua tablespace, datadir utama, dan volume xlog
pg_stop_backup
- Salin WAL hingga arsip terakhir dari
pg_stop_backup
- Salin data dari volume snapshotted
Intinya, idenya adalah untuk mengurangi berapa lama DB harus menunda pos pemeriksaannya dengan mengambil poin-in-time dari setiap volume yang dapat Anda salin di waktu luang Anda.