comez.dev
tr
~/howto/a-backup-is-only-real-after-a-restoreTüm yazılar

rehber2 dk okuma25 görüntülenme

Yedek, ancak geri yüklendiğinde gerçektir

“Yedeğimiz var” cümlesini küçük, otomatik bir geri yükleme testiyle “kurtarabiliriz”e dönüştürmek.

Bu sayfada (3)
  1. Faydalı bir yedekleme politikası neyi yanıtlar
  2. Küçük ve dürüst bir geri yükleme testi
  3. Sonradan can yakan ayrıntılar

Neredeyse herkesin yedeği var. Geri yüklemenin ne kadar sürdüğünü, dosyaların eksiksiz olup olmadığını ya da veritabanı dökümünün yüklenip yüklenmediğini bilen ekip çok daha az. Öğrenmenin tek yolu düzenli olarak ve kimsenin hatırlamasına gerek kalmadan geri yüklemek.

Faydalı bir yedekleme politikası neyi yanıtlar

  • Ne kadar veri kaybedebiliriz? (kurtarma noktası)
  • Ne kadar süre kapalı kalabiliriz? (kurtarma süresi)
  • İkinci kopya nerede duruyor? En az bir kopya sunucunun dışında ve sunucuyu çalıştıran kimlik bilgilerinin erişemeyeceği yerde olmalı.

Küçük ve dürüst bir geri yükleme testi

Fikir basit: dök, geçici bir veritabanına yükle, bir doğrulama sorgusu çalıştır ve bir şey yanlışsa yüksek sesle başarısız ol.

#!/usr/bin/env bash
set -euo pipefail

STAMP=$(date +%F)
DUMP=/backup/db/app-$STAMP.sql.gz

# 1. yedeği oluştur (InnoDB için tutarlı anlık görüntü)
mysqldump --single-transaction --routines --triggers app | gzip > "$DUMP"
gzip -t "$DUMP"

# 2. at-kullan bir veritabanına geri yükle
mysql -e "DROP DATABASE IF EXISTS restore_test; CREATE DATABASE restore_test"
gunzip -c "$DUMP" | mysql restore_test

# 3. doğrulama: veri veriye benzemeli
ROWS=$(mysql -N -e "SELECT COUNT(*) FROM restore_test.users")
[ "$ROWS" -gt 0 ] || { echo "restore test failed: users is empty" >&2; exit 1; }

mysql -e "DROP DATABASE restore_test"

Cron ya da bir systemd zamanlayıcısından çalıştırın ve hata çıktısını bir insanın göreceği bir yere gönderin.

Sonradan can yakan ayrıntılar

  1. Sunucudan çıkan kopyaları şifreleyin ve anahtarı ayrı saklayın.
  2. Birkaç nesil tutun. Bozulma ve yanlışlıkla silme çoğu zaman günler sonra fark edilir.
  3. Yalnızca veriyi değil yapılandırmayı da yedekleyin: web sunucusu, PHP, cron, güvenlik duvarı kuralları ve DNS kayıtları.
  4. Tam bir geri yüklemeyi yılda en az iki kez zamanlayın ve sayıyı yazın. Bu sayı gerçek kurtarma sürenizdir.

Genel

güncellendi
Yorumlar0

Henüz yorum yok. İlk yorumu siz yazın.

Yorum yaz

İlgili

Benzer bir iş üzerinde mi çalışıyorsunuz?
Mimariyi incelemekten teslimata kadar yardımcı olmaktan memnuniyet duyarım.

iletişim