Geri Yüklemelerinizi Test Etme
Geri yükleyemediğiniz bir yedek işe yaramaz.
Geri Yüklemelerinizi Test Etme, CoddyKit'te ücretsiz bir SQL Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Academy kursu toplamda 4 dersten oluşur.
Geri Yükleyemediğiniz Bir Yedek Değersizdir
Birçok ekip otomatik yedekleri kurmaya zaman ayırır, ancak bu yedeklerin verileri kurtarmak için gerçekten kullanılıp kullanılamayacağını hiç doğrulamaz. Geri yükleme sırasında başarısız olan yedek hiç yedek değildir.
Bu derste geri yükleme sınaması disiplini ele alınır: gerçek bir felaket sizi bunu zor yoldan öğrenmeye mecbur bırakmadan önce yedeklerinizin çalıştığını nasıl doğrulayacağınız açıklanır.
Geri Yükleme Sınaması Neyi İçerir?
Geri yükleme sınaması, bir yedek dosyasını alıp bir veritabanına — genellikle ayrı bir sınama örneğine — yüklemeyi ve ardından verilerin eksiksiz ve tutarlı olduğunu doğrulamak için bu veritabanını sorgulamayı içerir.
Adımlar şunlardır: 1) Yedek dosyasını edinin. 2) Dosyayı yalıtılmış bir sınama ortamına geri yükleyin. 3) Doğrulama sorgularını çalıştırın. 4) Sonuçları üretimle karşılaştırın.
Karşılaştırma İçin Referans Anlık Görüntüsü Oluşturma
Bir geri yüklemeyi doğrulayabilmeniz için önce üretimdeki bilinen satır sayıları ve sağlama toplamlarından oluşan bir referans kümesine ihtiyacınız vardır; bunu geri yüklenen kopyayla karşılaştırabilirsiniz.
Bunu üretim veritabanınızda çalıştırın ve sonuçları kaydedin:
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;Geri Yükleme Sonrası Satır Sayılarını Doğrulama
Yedek bir sınama veritabanına geri yüklendikten sonra aynı sorguyu çalıştırıp sayıları karşılaştırın. Sayılar eşleşiyorsa geri yüklemenin temel yapısı sağlamdır.
Buradaki bir uyuşmazlık, üretime hiç dokunmadan önce, yedekleme veya geri yükleme sırasında verilerin kaybolduğunu hemen gösterir.
-- 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;En Yeni Verileri Denetleme
Satır sayıları miktarı doğrular, ancak güncelliği doğrulamaz. Geri yüklenen veritabanının güncel kayıtları içerdiğini denetleyin; yedek, alındığı ana kadarki verileri yansıtmalıdır.
SELECT
MAX(created_at) AS latest_order,
MIN(created_at) AS oldest_order,
COUNT(*) AS total_orders
FROM orders;Başvuru Bütünlüğünü Doğrulama
Satır sayıları eşleşse bile bir geri yükleme, üst kaydı artık bulunmayan alt kayıtlar olan yetim satırlar bırakabilir. Bu durum çoğunlukla yabancı anahtarlar yedekleme veya geri yükleme sırasında uygulanmadığında ortaya çıkar.
Yetim sipariş kalemlerini belirlemek için bir LEFT JOIN kullanın:
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;Bozulmayı Belirlemek İçin Sağlama Toplamı Kullanma
Kritik tablolar için bit düzeyindeki bozulmayı belirlemek üzere verilerin sağlama toplamını oluşturun. PostgreSQL'de MD5'i satırın tamamına yapılan bir tür dönüşümüyle birleştirebilirsiniz.
Üretimdeki ve geri yüklenen kopyadaki sağlama toplamları farklıysa veriler bir noktada değiştirilmiş veya bozulmuştur.
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;Geri Yükleme Doğrulama Tablosu Oluşturma
Geri yükleme sınamalarınızın geçmişini izlemek için özel bir doğrulama günlüğü tablosu oluşturun. Her sınama çalıştırmasını yedek tarihi, geri yüklenen satır sayıları ve doğrulamanın başarılı olup olmadığıyla birlikte kaydedin.
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
);Doğrulama Sonucu Ekleme
Her geri yükleme sınamasından sonra doğrulama günlüğüne bir satır ekleyin. Bu, yedeklerin sınandığını kanıtlayan bir denetim izi oluşturur ve zaman içindeki başarı veya başarısızlık eğilimini gösterir.
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);Doğrulama Geçmişini Sorgulama
Gerilemeleri fark etmek için doğrulama günlüğünü düzenli olarak inceleyin. Geçen hafta başarılı olan ancak bu hafta başarısız olan bir yedek, yedekleme işlem hattınızda derhal araştırılması gereken bir soruna işaret eder.
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;Belirli Bir Zamana Kurtarma Doğrulaması
Modern veritabanları, temel yedek ile WAL (Önden Yazma Günlüğü) arşivlerini kullanarak herhangi bir zamana geri yükleme yapmanızı sağlayan PITR'yi destekler.
PITR'nin çalıştığını doğrulamak için bilinen bir zaman damgasına geri yükleyin ve bu zaman damgasından sonra oluşturulan bir kaydın geri yüklenen veritabanında görünmediğini (NOT) denetleyin:
-- 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 correctlyKısa Sınama
Bir yedeği geri yükledikten sonra yetim alt kayıtları belirlemek için aşağıdaki sorgulardan hangisi en kullanışlıdır?
Ders Özeti: Geri Yüklemelerinizi Sınama
Bu derste geri yükleme sınamasının neden her yedekleme stratejisinin zorunlu bir parçası olduğunu ve bunun SQL ile nasıl uygulanacağını öğrendiniz:
- Referans anlık görüntüleri — sınamadan önce üretimdeki satır sayılarını kaydedin.
- Satır sayısı karşılaştırması — geri yüklenen veritabanında aynı sorguyu çalıştırıp karşılaştırın.
- Güncellik denetimi — en yeni kayıtların beklenen yedekleme aralığıyla eşleştiğini doğrulayın.
- Başvuru bütünlüğü — yetim alt satırları bulmak için LEFT JOIN kullanın.
- Sağlama toplamı doğrulaması — MD5 toplulaştırmalarıyla bit düzeyindeki bozulmayı belirleyin.
- Doğrulama günlüğü tablosu — denetlenebilir bir geçmiş için her sınama çalıştırmasını izleyin.
- PITR doğrulaması — belirli bir zamana kurtarmanın doğru ana ulaştığını doğrulayın.
Bir yedek yalnızca son başarılı geri yükleme sınaması kadar iyidir. Bu denetimleri düzenli olarak planlayın ve her başarısızlığı kritik bir olay olarak ele alın.
Sıkça Sorulan Sorular
“Geri Yüklemelerinizi Test Etme” dersi ücretsiz mi?
Evet — “Geri Yüklemelerinizi Test Etme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Academy kursu toplamda 4 dersten oluşur.
“Geri Yüklemelerinizi Test Etme” dersinde ne öğreneceğim?
Geri yükleyemediğiniz bir yedek işe yaramaz. SQL Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
SQL Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te SQL Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.
“Geri Yüklemelerinizi Test Etme” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu SQL Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her SQL Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Mantıksal ve Fiziksel Yedeklemeler
- Belirli Bir Zamana Kurtarma
- Geri Yüklemelerinizi Test Etme
- Felaket Kurtarma Planlaması