0Pricing
SQL Academy · Pelajaran

Menguji Pemulihan Anda

Cadangan yang tidak dapat dipulihkan tidak ada gunanya.

Menguji Pemulihan Anda adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Cadangan yang Tidak Dapat Dipulihkan Tidak Berharga

Banyak tim menginvestasikan waktu untuk menyiapkan pencadangan otomatis, tetapi tidak pernah memverifikasi apakah cadangan tersebut benar-benar dapat digunakan untuk memulihkan data. Cadangan yang gagal saat dipulihkan bukanlah cadangan sama sekali.

Pelajaran ini membahas disiplin pengujian pemulihan: cara memverifikasi bahwa cadangan Anda berfungsi sebelum bencana nyata memaksa Anda mengetahuinya dengan cara yang sulit.

Apa Saja yang Dicakup Pengujian Pemulihan?

Pengujian pemulihan mencakup pengambilan berkas cadangan dan memuatnya ke dalam basis data — biasanya instans pengujian terpisah — lalu menjalankan kueri pada basis data tersebut untuk memastikan datanya lengkap dan konsisten.

Langkah-langkahnya adalah: 1) Dapatkan berkas cadangan. 2) Pulihkan ke lingkungan kotak pasir. 3) Jalankan kueri validasi. 4) Bandingkan hasilnya dengan lingkungan produksi.

Membuat Salinan Dasar untuk Perbandingan

Sebelum dapat memverifikasi pemulihan, Anda memerlukan acuan — sekumpulan jumlah dan nilai pemeriksaan yang diketahui dari lingkungan produksi untuk dibandingkan dengan salinan yang dipulihkan.

Jalankan ini pada basis data produksi dan catat hasilnya:

SELECT
  'orders'        AS tbl, COUNT(*) AS row_count FROM orders
UNION ALL
SELECT
  'customers'     AS tbl, COUNT(*) AS row_count FROM customers
UNION ALL
SELECT
  'order_items'   AS tbl, COUNT(*) AS row_count FROM order_items;

Memverifikasi Jumlah Baris Setelah Pemulihan

Setelah cadangan dipulihkan ke dalam basis data pengujian, jalankan kueri yang sama dan bandingkan jumlahnya. Jika jumlahnya cocok, struktur dasar hasil pemulihan berada dalam kondisi baik.

Ketidakcocokan pada tahap ini segera memberi tahu Anda bahwa data hilang selama pencadangan atau pemulihan — sebelum Anda menyentuh lingkungan produksi.

-- Run on the RESTORED test database
SELECT
  'orders'        AS tbl, COUNT(*) AS row_count FROM orders
UNION ALL
SELECT
  'customers'     AS tbl, COUNT(*) AS row_count FROM customers
UNION ALL
SELECT
  'order_items'   AS tbl, COUNT(*) AS row_count FROM order_items;

Memeriksa Data Terbaru

Jumlah baris mengonfirmasi kuantitas, tetapi tidak mengonfirmasi keterkinian. Periksa apakah basis data yang dipulihkan berisi rekaman terbaru — cadangan seharusnya mencerminkan data hingga waktu saat cadangan dibuat.

SELECT
  MAX(created_at) AS latest_order,
  MIN(created_at) AS oldest_order,
  COUNT(*)        AS total_orders
FROM orders;

Memvalidasi Integritas Referensial

Sekalipun jumlah baris cocok, pemulihan dapat meninggalkan baris yatim — rekaman anak yang induknya sudah tidak ada. Hal ini sering terjadi ketika kunci asing tidak diterapkan selama pencadangan atau pemulihan.

Gunakan LEFT JOIN untuk mendeteksi item pesanan yatim:

SELECT
  oi.id       AS orphaned_item_id,
  oi.order_id AS missing_order_id
FROM order_items oi
LEFT JOIN orders o ON o.id = oi.order_id
WHERE o.id IS NULL;

Menggunakan Nilai Pemeriksaan untuk Mendeteksi Kerusakan

Untuk tabel kritis, buat nilai pemeriksaan data guna mendeteksi kerusakan pada tingkat bit. Di PostgreSQL, Anda dapat menggabungkan MD5 dengan konversi seluruh baris.

Jika nilai pemeriksaan dari lingkungan produksi dan salinan yang dipulihkan berbeda, data telah diubah atau rusak pada suatu tahap.

SELECT
  MD5(string_agg(row_data, ',' ORDER BY row_data)) AS table_checksum
FROM (
  SELECT CAST(ROW(id, customer_id, total, created_at) AS TEXT) AS row_data
  FROM orders
) sub;

Membuat Tabel Validasi Pemulihan

Untuk melacak riwayat pengujian pemulihan, buat tabel catatan validasi khusus. Catat setiap pelaksanaan pengujian beserta tanggal cadangan, jumlah baris yang dipulihkan, dan apakah validasi berhasil.

CREATE TABLE IF NOT EXISTS restore_validation_log (
  id             SERIAL PRIMARY KEY,
  backup_taken_at TIMESTAMP NOT NULL,
  restored_at    TIMESTAMP NOT NULL DEFAULT NOW(),
  table_name     VARCHAR(100) NOT NULL,
  expected_rows  INT NOT NULL,
  actual_rows    INT NOT NULL,
  passed         BOOLEAN NOT NULL
);

Menyisipkan Hasil Validasi

Setelah setiap pengujian pemulihan, sisipkan satu baris ke dalam catatan validasi. Dengan demikian, Anda memiliki jejak audit yang membuktikan bahwa cadangan telah diuji serta menampilkan pola keberhasilan atau kegagalan dari waktu ke waktu.

INSERT INTO restore_validation_log
  (backup_taken_at, table_name, expected_rows, actual_rows, passed)
VALUES
  ('2024-06-09 02:00:00', 'orders',      15482, 15482, TRUE),
  ('2024-06-09 02:00:00', 'customers',    8201,  8201,  TRUE),
  ('2024-06-09 02:00:00', 'order_items', 47310, 47310, TRUE);

Menjalankan Kueri Riwayat Validasi

Tinjau catatan validasi secara berkala untuk menemukan regresi. Cadangan yang berhasil minggu lalu tetapi gagal minggu ini menandakan adanya masalah dalam alur pencadangan Anda yang harus segera diselidiki.

SELECT
  backup_taken_at,
  table_name,
  expected_rows,
  actual_rows,
  passed,
  CASE
    WHEN passed THEN 'OK'
    ELSE 'MISMATCH - investigate!'
  END AS status
FROM restore_validation_log
ORDER BY backup_taken_at DESC, table_name;

Verifikasi Pemulihan Titik Waktu

Basis data modern mendukung Pemulihan Titik Waktu (PITR), yang memungkinkan Anda memulihkan ke waktu mana pun menggunakan cadangan dasar ditambah arsip WAL (Log Tulis-Dahulu).

Untuk memverifikasi bahwa PITR berfungsi, pulihkan ke stempel waktu yang diketahui dan periksa bahwa rekaman yang dibuat setelah stempel waktu tersebut TIDAK muncul dalam basis data yang dipulihkan:

-- After a PITR restore to '2024-06-09 03:00:00',
-- this order (created at 03:45) should NOT exist:
SELECT id, created_at, total
FROM orders
WHERE created_at > '2024-06-09 03:00:00'
ORDER BY created_at
LIMIT 5;
-- Zero rows = PITR worked correctly

Pemeriksaan Singkat

Kueri manakah yang paling berguna untuk mendeteksi rekaman anak yatim setelah memulihkan cadangan?

Ringkasan Pelajaran: Menguji Pemulihan Anda

Dalam pelajaran ini, Anda mempelajari mengapa pengujian pemulihan merupakan bagian wajib dari strategi pencadangan apa pun, serta cara menerapkannya dengan SQL:

  • Salinan dasar — catat jumlah baris produksi sebelum pengujian.
  • Perbandingan jumlah baris — jalankan kueri yang sama pada basis data yang dipulihkan dan bandingkan hasilnya.
  • Pemeriksaan keterkinian — pastikan rekaman terbaru sesuai dengan jendela pencadangan yang diharapkan.
  • Integritas referensial — gunakan LEFT JOIN untuk menemukan baris anak yatim.
  • Validasi nilai pemeriksaan — deteksi kerusakan pada tingkat bit dengan agregasi MD5.
  • Tabel catatan validasi — lacak setiap pelaksanaan pengujian untuk membuat riwayat yang dapat diaudit.
  • Verifikasi PITR — pastikan pemulihan titik waktu mencapai waktu yang benar.

Cadangan hanya sebaik pengujian pemulihan terakhir yang berhasil. Jadwalkan pemeriksaan ini secara berkala dan perlakukan setiap kegagalan sebagai insiden kritis.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menguji Pemulihan Anda” gratis?

Ya — teks lengkap “Menguji Pemulihan Anda” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menguji Pemulihan Anda”?

Cadangan yang tidak dapat dipulihkan tidak ada gunanya. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Menguji Pemulihan Anda” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Cadangan Logis vs Fisik
  2. Pemulihan Titik Waktu
  3. Menguji Pemulihan Anda
  4. Perencanaan Pemulihan Bencana
← Kembali ke SQL Academy