Tunas Akara
Kembali ke Blog

Basis Data Utuh, Berkas Hilang: Celah Pencadangan

Studi kasus sekitar 400 berkas media: hanya sekitar 45% pulih. Cocokkan referensi basis data, penyimpanan berkas, dan salinan cadangan.

oleh RayhanDiperbarui 6 menit baca

Untuk Tim Teknis

object-storagedata-integritybackuppostgresql
Basis Data Utuh, Berkas Hilang: Celah Pencadangan
Daftar isi

Pencadangan basis data belum lengkap kalau berkas lampirannya tidak ikut disalin. Basis data bisa menyimpan nama dan lokasi berkas sementara foto atau PDF-nya hilang dari penyimpanan. Di kasus operasional hotel ini, sekitar 400 berkas terdampak dan hanya sekitar 45% berhasil kembali. Pemulihan dimulai dengan mencocokkan daftar basis data, berkas aktual, dan salinan pencadangan.

Pemeriksaan pencadangan dan migrasi dapat menunjukkan hasil baik sementara lampiran laporan pemeliharaan, insiden, serta kebersihan sudah hilang. Masalah baru terlihat ketika pengguna membuka laporan lama dan mendapat gambar yang tidak dapat dimuat.

Masalah ini terjadi ketika referensi pada basis data dan berkas pada penyimpanan terpisah tidak lagi cocok. Istilah orphaned blob menggambarkan berkas yang kehilangan hubungan dengan catatannya; ketidakcocokan juga dapat terjadi sebaliknya, yaitu catatan menunjuk berkas yang hilang.

Bagaimana berkas lenyap sementara baris selamat

Transaksi basis data tidak otomatis mencakup penyimpanan berkas. Pemisahan ini membuka beberapa kemungkinan kegagalan:

  • Migrasi penyimpanan memindahkan berkas antarserver atau bucket dan melewatkan sebagian, tanpa kesalahan yang terlihat oleh aplikasi.
  • Skrip pembersihan dengan cakupan meleset menghapus berkas yang masih dirujuk baris aktif.
  • Aturan masa simpan pada bucket menghapus objek yang seseorang kira permanen.
  • Unggahan gagal setelah baris terlanjur disimpan, meninggalkan referensi ke berkas yang tidak pernah ada sama sekali.

Kegagalan tersebut dapat terjadi tanpa kesalahan pada basis data. PostgreSQL menjaga hubungan antarbaris melalui aturan integritasnya. Namun, hubungan dengan berkas di penyimpanan eksternal perlu diperiksa oleh pekerjaan rekonsiliasi yang Anda bangun sendiri.

Manifest rekonsiliasi

Pemulihan dimulai dari mengetahui bentuk kerusakan secara persis. Alatnya adalah manifest tiga arah, dibangun dari satu-satunya sumber kebenaran yang tersedia:

Memuat diagram…

Daftar semua path berkas yang dirujuk baris. Daftar semua objek yang benar-benar dipegang penyimpanan. Daftar seluruh isi salinan cadangan tersinkron.

Pencocokan ketiga daftar mengelompokkan setiap berkas menurut kondisi yang dapat ditindaklanjuti: pulihkan dari salinan, tandai tidak ditemukan, atau periksa berkas tanpa referensi. Keluhan gambar rusak kemudian memiliki daftar pekerjaan yang jelas.

Seperti apa pemulihannya

Sekitar 45% berkas yang hilang kembali dari salinan cadangan tersinkron — salinan lama volume penyimpanan yang kebetulan lebih tua dari momen kehilangan. Sisa 55% tidak berhasil dipulihkan dari salinan yang tersedia. Pencadangan rutin hanya mencakup basis data.

Catatan nama berkas, waktu unggah, dan laporan terkait tetap tersimpan. Namun, pencadangan basis data tidak otomatis menyalin isi berkas yang dirujuknya.

Daftar rekonsiliasi membantu tim menemukan bagian yang masih tersedia pada salinan lama. Tanpa daftar itu, tim dapat melewatkan berkas yang sebenarnya masih bisa dipulihkan.

Pelajaran yang berlaku umum

Penyimpanan objek masuk cakupan backup. Berkas yang dirujuk baris basis data adalah data bisnis dengan ekonomi penyimpanan berbeda — tidak lebih. Cadangkan dengan jadwal dan retensi yang sama dengan basis data, dan verifikasi keduanya di uji pemulihan yang sama. Disiplinnya saya bahas di pg_dump Anda bukan pencadangan sebelum pernah dipulihkan.

Tulis berkas dulu, commit baris belakangan. Pola upload-then-commit membuat mode gagalnya jinak: kalau upload gagal, tidak ada baris yang merujuk berkas hilang; kalau commit gagal, Anda dapat orphaned blob — ruang terbuang, bukan referensi rusak.

Penghapusan menjalankan logika yang sama terbalik: hapus baris dulu, biarkan pekerjaan pembersihan mengumpulkan berkas yang tidak lagi dirujuk belakangan. Di antara dua mode gagal itu, orphan jauh lebih murah daripada referensi menggantung. Susun urutan operasi untuk mengutamakan berkas tanpa referensi yang dapat diperiksa. Kehilangan berkas, penghapusan, dan aturan masa simpan berikutnya tetap perlu rekonsiliasi.

Jalankan rekonsiliasi terus-menerus. Manifest yang menggerakkan pemulihan itu seharusnya tidak pernah jadi barang sekali gunakan. Sebagai job mingguan biayanya hanya listing dan set-diff, dan ia mengubah pergeseran senyap menjadi peringatan selagi kerugian masih kecil dan masih di dalam retensi pencadangan. Hitungan berkas hilang yang naik dari nol adalah sistem peringatan dini untuk semua kelas kegagalan di atas.

Media adalah data bisnis. Insting yang menghilangkan berkas-berkas ini adalah keyakinan bahwa "data sesungguhnya ada di database" dan berkas hanya hiasan. Di sistem manajemen hotel, foto pemeliharaan adalah bukti penyelesai sengketa. Lampiran insiden adalah sandaran klaim asuransi.

Catatan dan berkas membentuk satu kumpulan data bisnis meskipun disimpan di dua tempat. Cakupan pencadangan, pengujian pemulihan, dan pemeriksaan integritas perlu mencakup keduanya.

Artikel Terkait

Ceritakan kendala operasional Anda agar kita dapat membahas langkah yang sesuai.

Bagikan artikel
Diskusi Awal Gratis