Pada PostgreSQL v9.0 saya memiliki sistem pengarsipan WAL yang berfungsi. Jadi WAL mengajukan arsip yang diarsipkan (saat 3 WAL dibuat atau jika WAL lebih dari 15 menit).
Sekarang saya menambahkan paket biner dari direktori PG_DATA (tidak termasuk subdirektori pg_xlog). Untuk melakukan itu saya melakukan pg_start_backup(),
salinan biner, dan a pg_stop_backup()
.
Saya rasa saya cukup mengerti apa yang dilakukan pg_start_backup dan pg_stop_backup, yang pertama membuat pos pemeriksaan dan yang terakhir memastikan file WAL terakhir diarsipkan.
Dari dokumentasi resmi kita dapat melihat bahwa untuk salinan data biner kita harus:
Lakukan pencadangan, menggunakan alat pencadangan sistem file yang mudah seperti tar atau cpio (bukan pg_dump atau pg_dumpall). Tidak perlu atau tidak diinginkan untuk menghentikan operasi normal dari database saat Anda melakukan ini.
Jadi saya cukup bingung. Ini berarti sebuah Checkpoint dapat dilakukan saat kami membuat salinan. Saya melihat banyak dokumentasi yang menyatakan bahwa perintah salin harus memungkinkan perubahan data saat melakukan salin, saya baik-baik saja dengan itu, simplya masalah menemukan alat yang tepat. Tetapi pertanyaan saya adalah bagaimana postgreSQL akan menangani pemulihan dengan konten pg_data yang berisi beberapa file yang tidak konsisten (beberapa dari sebelum pos pemeriksaan, beberapa dari setelah)?
Dengan memutar ulang log transaksi Postgresql akan dapat menempatkan semua file ini dalam keadaan yang benar? Saya melihat bahwa membuat tabel dan menjatuhkan operasi berbahaya saat cadangan berkinerja, Apakah tidak ada beberapa operasi berbahaya seperti vakum perintah ? Apakah pg_backup menunda operasi vakum? Haruskah saya membuat salinan file global / pg_control di akhir di awal proses salinan biner? Haruskah saya menggunakan sistem file yang diaktifkan snapshot (seperti dengan xfs-freeze) untuk mendapatkan proses pemulihan yang lebih cepat?
Saya melihat bahwa kerusakan skrip cadangan tidak akan meluncurkan pg_stop_backup secara otomatis, jadi ada kemungkinan kondisi cadangan saya hidup untuk waktu yang lama (hingga nagios saya berdering di suatu tempat untuk memperbaiki pg_stop_backup ()). Jadi jika ada sesuatu yang berbeda di PostgreSQL antara kedua perintah ini, saya ingin mengetahuinya, untuk memahami apa dampaknya.
Tolong beri saya pencerahan.