Saya memiliki database 3GB yang terus-menerus dimodifikasi dan saya perlu membuat backup tanpa menghentikan server (Postgres 8.3).
Pg_dump saya berjalan selama 5 menit. Bagaimana jika data dimodifikasi selama proses? Apakah saya mendapatkan cadangan yang konsisten? Saya tidak ingin mencari tahu kapan bencana terjadi.
Dokumentasi Postgres http://www.postgresql.org/docs/8.3/static/app-pgdump.html tidak mengatakan apa-apa tentang ini.
postgresql
Roma
sumber
sumber
Jawaban:
Dari manual :
Jadi ya, Anda bisa mempercayai cadangannya. Tentu saja, ini PostgreSQL, Anda dapat mempercayai data Anda dalam PostgreSQL.
sumber
pg_dump memulai transaksi, mirip dengan cara kerja kueri jangka panjang lainnya. Jaminan konsistensi berasal dari implementasi MVCC . Tempat sampah akan selalu konsisten dalam aturan tersebut.
Semua bagian fuzzy MVCC ada di sekitar hal-hal seperti apa urutan transaksi UPDATE menjadi terlihat oleh klien lain dan bagaimana kunci diperoleh. pg_dump sangat ketat tentang pemesanan dan mendapatkan kunci baca di seluruh basis data untuk membuangnya. Bagi kebanyakan orang, itulah yang mereka harapkan, dan mekanisme yang digunakan tidak pernah menimbulkan masalah. Risiko konkurensi utama adalah bahwa klien yang mencoba mengubah struktur basis data akan diblokir saat dump berjalan. Itu tidak mempengaruhi kualitas tempat sampah.
sumber
Tumpukan dimulai dengan pengaturan
TRANSACTION ISOLATION LEVEL SERIALIZABLE
.Silakan baca manual tentang Isolasi Transaksi dan misalnya diskusi Daftar Pengguna tentang ini .
Mengutip:
Pada dasarnya semua setelah
pg_dump
menetapkan tingkat isolasi transaksi bukan bagian dari dump ini.Operasi baca / tulis tidak terpengaruh (dikunci) selama waktu itu.
sumber
Pertama, maaf karena menjawab utas lama ini. Tapi dari pengalaman saya, saya tidak bisa mengkonfirmasi pernyataan yang dapat Anda percayai pg_dump /
Saya beralih beberapa bulan lalu untuk sebuah proyek ke postgres. Dan tentu saja saya membuat semua backup dengan pg_dump dari sistem live seperti yang disarankan. Tetapi setelah pemeriksaan cadangan pertama saya menemukan bahwa semua kesedihan memiliki ukuran yang berbeda. Setelah mengembalikan beberapa dari mereka secara acak, saya menemukan bahwa beberapa tabel hilang. Jadi saya mulai menganalisis mengapa ini terjadi dan saya menemukan bahwa jika aplikasi overlay, mis. Server aplikasi, mengunci beberapa tabel dan pg_dump tidak menunggu sampai dirilis. Saya diperlukan setiap kali untuk menghentikan server untuk periode cadangan yang bukan solusi yang baik.
Jadi saya masih mencari perbaikan tetapi seperti yang saya katakan saya sangat tidak setuju dengan pernyataan bahwa Anda dapat mempercayai pg_dump.
sumber