İçeriğe geç

Yedekleme ve bakım

Yedekleme stratejisi: 3-2-1 kuralı ve rsync ile örnek

3-2-1 kuralıyla yedek planı, rsync ve cron ile örnek betik, geri yükleme sınaması.

2 dk okumaGüncelleme
İçindekiler 8

Yedek, geri yükleyebildiğiniz kopyadır. Geri yüklemeyi hiç denemediyseniz elinizde bir yedek olduğundan emin olamazsınız. Sunucunun sağlayıcısı anlık görüntü (snapshot) ya da yedek hizmeti sunsa bile, kendi yedek planınızı ayrıca yapmanız sağlıklı bir alışkanlıktır.

Neyi yedeklemeli

  • Veri: Veritabanları, yüklenen dosyalar, uygulama verisi.
  • Yapılandırma: /etc altındaki ilgili dosyalar, Nginx siteleri, ortam değişkenleri dosyaları, cron girdileri.
  • Uygulama kodu: Genellikle sürüm kontrol sisteminden geri gelir, ancak sunucuda yerel değişiklik varsa dahil edin.

Yeniden kurulabilen şeyleri (paketler, önbellekler) yedeklemeye gerek yoktur.

3-2-1 kuralı

  • 3 kopya veri (üretimdeki + 2 yedek),
  • 2 farklı ortam ya da sistem,
  • 1 kopya farklı bir konumda (aynı sunucudan ve aynı arıza alanından bağımsız).

Aynı diskte tutulan "yedek" disk arızasına, aynı sunucuda tutulan yedek ise sunucunun ele geçirilmesine karşı koruma sağlamaz.

İki ölçüt: RPO ve RTO

  • RPO: En çok ne kadarlık veri kaybını kabul edebilirsiniz? Günlük yedek, en kötü durumda bir günlük veri kaybı demektir.
  • RTO: Geri dönmek için ne kadar süreniz var?

Bu iki cevap yedek sıklığını ve yöntemini belirler.

Veritabanı yedeği

Çalışan bir veritabanının dosyalarını doğrudan kopyalamak tutarsız yedek verebilir. Veritabanının kendi aracını kullanın:

# PostgreSQL
pg_dump -Fc -U kullanici veritabani > /yedek/veritabani-$(date +%F).dump

# MariaDB / MySQL
mysqldump --single-transaction -u kullanici -p veritabani > /yedek/veritabani-$(date +%F).sql

Parolayı komut satırına yazmak yerine yapılandırma dosyası (~/.my.cnf, ~/.pgpass) kullanın ve bu dosyaların iznini 600 yapın.

rsync ile dosya yedeği

Başka bir makineye SSH üzerinden artımlı kopya:

rsync -az --delete -e ssh /var/www/ yedek@YEDEK_SUNUCU:/yedekler/www/

--delete hedefte kaynakta olmayan dosyaları siler; yanlış kullanımı veri kaybettirir. Önce --dry-run ile ne yapacağına bakın. Sürüm geçmişi tutmak istiyorsanız BorgBackup veya restic gibi tekilleştirme yapan ve şifreleyebilen bir araç düşünün.

Zamanlama

crontab -e ile her gece 03:30'da çalıştırmak için:

30 3 * * * /usr/local/bin/yedekle.sh >> /var/log/yedekle.log 2>&1

Betiğin hata durumunda sizi uyarması (e-posta ya da bir izleme servisi) yedeğin sessizce durmasını önler.

Geri yüklemeyi sınayın

  • Yedeği boş bir test sunucusuna geri yükleyin ve uygulamanın açıldığını doğrulayın.
  • Bunu düzenli aralıklarla tekrarlayın; ne sıklıkta olacağına kendi risk tahmininize göre karar verin.
  • Geri yükleme adımlarını yazılı tutun; olay anında hatırlamaya güvenmeyin.

Şifreleme ve erişim

Yedekler genellikle üretim verisinin tamamını içerir. Uzak konumda saklanan yedekleri şifreleyin, şifreleme anahtarını yedeğin kendisinden ayrı saklayın ve yedek hesabına yalnızca gereken erişimi verin.

Bu makale genel bilgi verir; sürümler ve dağıtımlar arasında komutlar değişebilir. Üretim sunucusunda uygulamadan önce kendi ortamınızda deneyin.

Bize yazın