Pemeriksaan Integritas File Data PostgreSQL Database

12

Ketika menjalankan sistem database PostgreSQL, bagaimana saya tahu database saya secara keseluruhan memiliki integritas 100%? Pada dasarnya bagaimana saya tahu jika file data dan halaman saya 100% bagus tanpa korupsi?

Di dunia Microsoft SQL Server ada perintah yang bisa Anda jalankan DBCC CHECKDB yang akan memberi tahu Anda jika ada masalah. Berikut tautan jika Anda tertarik mempelajari lebih lanjut tentang perintah. DBCC CHECKDB (Transact-SQL)

Saya orang yang berpikiran integritas database paranoid (yang harusnya dilakukan oleh siapa pun yang bekerja dengan database dalam peran tipe DBA) dan hal-hal semacam ini membuat saya sulit tidur nyenyak di malam hari. Utilitas seperti ini adalah suatu keharusan! Pencarian di google telah menemukan beberapa upaya pada alat-alat seperti ini dan menurut saya kecuali itu alat yang diterima secara resmi oleh proyek PostgreSQL, saya tidak akan mempercayainya untuk sesuatu yang sepenting ini.

Berikut adalah beberapa tautan ke orang yang mengajukan pertanyaan serupa dengan apa yang saya anggap tidak ada jawaban pasti yang nyata. Dan menurut pendapat saya menunjukkan bahwa PostgreSQL perlu memiliki beberapa alat di tempat yang tampaknya dimiliki Oracle dan Microsoft SQL Server.

Tautan pertama adalah yang paling menarik yang saya temukan pada subjek ini. Saya pikir komentar pada artikel yang mungkin meringkas menyatakan: "Postgres cukup timpang ketika mengidentifikasi korupsi database dan memperbaikinya. Satu-satunya cara untuk mendeteksinya adalah dengan membuang database atau pilih * dari setiap tabel dalam database . "

Bagaimana PostgreSQL melindungi terhadap penulisan sebagian halaman dan kerusakan data

Memeriksa data dan indeks file korupsi - Dev Shed

Bantuan: meja saya rusak!

PostgreSQL: Kunci primer rusak, tabel tidak konsisten

Saya percaya ada kemungkinan 9.3 mungkin memiliki beberapa fitur pemeriksaan korupsi. Tampaknya mungkin ada harapan untuk memeriksa file halaman dijumlahkan jika ada yang memilih. Jadi semuanya tampak cerah jika Anda mempertimbangkan untuk menggunakan ZFS dan / atau versi Postgres masa depan dengan penjumlahan periksa halaman. https://commitfest.postgresql.org/action/patch_view?id=759

UPDATE: 14-JAN-2012 - Sepertinya menggunakan sistem file berbasis ZFS dapat mendeteksi korupsi dengan memeriksa jumlah setiap blok data. Saya harus melihat lebih jauh dan melihat apakah ini adalah pekerjaan di sekitar untuk memungkinkan seseorang untuk tidur nyenyak di malam hari mengetahui data database mereka tidak secara diam-diam menjadi korup.

UPDATE: 17-JAN-2012 - Cara menemukan file apa yang rusak dengan ZFS. http://docs.oracle.com/cd/E18752_01/html/819-5461/gbbwl.html#gbcuz

UPDATE: 14-APR-2014 9.3 tidak menerima checksum data. https://wiki.postgresql.org/wiki/What's_new_in_PostgreSQL_9.3

Kuberchaun
sumber
2
Dengan integritas yang saya maksud adalah integritas file halaman dan semacamnya. Jenis barang yang hanya Anda lihat secara normal jika Anda menulis kueri yang mengenai halaman yang memiliki kerusakan. Misalnya ketika disk drive mulai gagal beberapa data di piring mungkin mulai memburuk. Bagaimana Anda mengetahui hal ini?
Kuberchaun

Jawaban:

8

PostgreSQL sebelum 9.3 tidak memiliki blok checksum. Fitur ini ditambahkan pada 9.3 (lama setelah pertanyaan ini diposting).

Untuk menjawab kebutuhan Anda, saya mungkin akan mengembangkan checksumming (pemicu?) Saya sendiri - bekerja pada nilai atribut, bukan halaman data.

filiprem
sumber
4
Mungkin patut ditambahkan bahwa sejak Postgres 9.3 Anda secara opsional dapat mengaktifkan checksum
a_horse_with_no_name