Veritabanları, modern işletmelerin ve web sitelerinin omurgasıdır. E-ticaret platformlarından bloglara, kurumsal sistemlerden kişisel projelere kadar her yerde kritik veriler saklanır. Ancak bir sistem hatası, siber saldırı veya donanım arızası gibi beklenmedik durumlar, bu verilerin kaybolmasına neden olabilir. İşte bu yüzden etkili bir veritabanı yedekleme stratejisi oluşturmak hayati önem taşır. Bu rehber, yedekleme türlerinden (tam ve artımlı) araçlara (mysqldump, pg_dump), otomasyondan bulut depolama entegrasyonuna, kurtarma testlerinden güvenliğe kadar her adımı kapsayan kapsamlı bir kılavuz sunuyor. Başlangıç seviyesindeki kullanıcılar için adım adım rehber, risk analizi ve bir kontrol listesiyle, veritabanlarınızı nasıl koruyacağınızı öğrenin.
Veritabanı Yedeklemenin Önemi
Veritabanları, müşteri bilgileri, sipariş kayıtları, kullanıcı verileri veya içerik gibi işletmenizin en değerli varlıklarını içerir. Bir veri kaybı, hem maddi hem de itibar açısından ciddi sonuçlar doğurabilir. Örneğin, bir e-ticaret sitesinin müşteri sipariş verilerinin kaybolması, gelir kaybına ve müşteri güveninin zedelenmesine yol açabilir. Yedekleme, bu tür riskleri en aza indirir ve veri kaybı durumunda hızlı bir kurtarma sağlar.
Yedekleme stratejisi oluştururken şu soruları yanıtlamalısınız:
-
Hangi veriler yedeklenmeli?
-
Ne sıklıkla yedekleme yapılmalı?
-
Yedekler nerede saklanmalı?
-
Veri kurtarma ne kadar hızlı gerçekleşmeli?
Bu rehber, bu sorulara yanıt vererek kapsamlı bir strateji oluşturmanıza yardımcı olacak.
1. Yedekleme Türleri
Veritabanı yedeklemesi için iki ana yöntem kullanılır: tam (full) yedekleme ve artımlı (incremental) yedekleme. Her birinin avantajları ve dezavantajları vardır.
Tam (Full) Yedekleme
Tam yedekleme, veritabanının tüm içeriğinin bir kopyasını oluşturur. Bu, en kapsamlı yedekleme türüdür ve veri kaybı durumunda tüm sistemi geri yüklemek için kullanılır.
-
Avantajları:
-
Bağımsız bir yedekleme sunar; başka bir yedeğe ihtiyaç duymaz.
-
Kurtarma işlemi daha basittir.
-
-
Dezavantajları:
-
Büyük veritabanlarında uzun süre alır.
-
Daha fazla depolama alanı gerektirir.
-
Artımlı (Incremental) Yedekleme
Artımlı yedekleme, yalnızca son tam yedeklemeden veya son artımlı yedeklemeden bu yana değişen verileri kaydeder.
-
Avantajları:
-
Daha az depolama alanı kullanır.
-
Daha hızlı yedekleme işlemi.
-
-
Dezavantajları:
-
Kurtarma işlemi daha karmaşıktır; tam yedek ve tüm artımlı yedekler gereklidir.
-
Bir yedek zincirinde hata olması, kurtarmayı zorlaştırabilir.
-
Hangi Yedekleme Türünü Seçmeli?
Küçük bir blog veya düşük trafikli bir site için haftalık tam yedekleme ve günlük artımlı yedekleme yeterli olabilir. Büyük bir e-ticaret platformu için ise günlük tam yedekleme ve saatlik artımlı yedekleme önerilir. İhtiyaçlarınıza göre bir kombinasyon belirleyin.
2. Yedekleme Araçları
Veritabanı yedekleme için kullanılan araçlar, veritabanı türüne (MySQL, PostgreSQL vb.) göre değişir. En popüler araçlar mysqldump ve pg_dump’tır.
mysqldump (MySQL/MariaDB)
mysqldump, MySQL ve MariaDB veritabanları için kullanılan bir komut satırı aracıdır. Veritabanını SQL dosyası olarak dışa aktarır.
Kullanımı:
- Terminalde şu komutu çalıştırın:
mysqldump -u [kullanıcı_adı] -p [veritabanı_adı] > yedek.sql
-
Şifrenizi girin.
-
Yedek dosyası (yedek.sql) oluşturulur.
Not: Büyük veritabanları için --quick
ve --compress
parametrelerini ekleyerek performansı artırabilirsiniz.
pg_dump (PostgreSQL)
pg_dump, PostgreSQL veritabanları için kullanılan bir yedekleme aracıdır. Veritabanını SQL veya sıkıştırılmış bir formatta kaydeder.
Kullanımı:
- Terminalde şu komutu çalıştırın:
pg_dump -U [kullanıcı_adı] [veritabanı_adı] > yedek.sql
-
Şifrenizi girin.
-
Yedek dosyası oluşturulur.
Not: Sıkıştırılmış yedek için -Fc
parametresi kullanılabilir.
Diğer Araçlar
-
Percona XtraBackup: MySQL için sıcak yedekleme (hot backup) sağlar.
-
pgBackRest: PostgreSQL için gelişmiş yedekleme ve kurtarma çözümü.
3. Yedekleme Otomasyonu
Manuel yedekleme, küçük projeler için uygun olsa da, düzenli ve hata riskini azaltan bir süreç için otomasyon şarttır. Otomasyon, yedeklemelerin belirli bir programa göre otomatik olarak alınmasını sağlar.
Otomasyon Adımları
-
Cron Job Kurulumu (Linux):
-
Terminalde
crontab -e
komutunu çalıştırın. -
Örneğin, her gece 02:00’de tam yedekleme için:
0 2 * * * mysqldump -u [kullanıcı_adı] -p[şifre] [veritabanı_adı] > /yedekler/yedek_$(date +\%F).sql
-
Şifreyi komuta yazmak yerine bir yapılandırma dosyası kullanın.
-
-
Script Yazımı:
-
Yedekleme ve sıkıştırma için bir bash scripti oluşturun:
#!/bin/bash BACKUP_DIR="/yedekler" DATE=$(date +%F) mysqldump -u [kullanıcı_adı] -p[şifre] [veritabanı_adı] | gzip > $BACKUP_DIR/yedek_$DATE.sql.gz
-
Scripti çalıştırılabilir yapın:
chmod +x yedek.sh
-
-
Test Edin: Scripti manuel çalıştırarak doğru çalıştığından emin olun.
4. Bulut Depolama Entegrasyonu
Yedeklerinizi yalnızca yerel sunucuda tutmak risklidir. Bir donanım arızası veya veri merkezi sorunu, yedeklerinizi de tehlikeye atabilir. Bu yüzden bulut depolama çözümleri önerilir.
Popüler Bulut Depolama Servisleri
-
Amazon S3: Güvenilir ve ölçeklenebilir.
-
Google Cloud Storage: Yüksek erişilebilirlik.
-
Backblaze B2: Ekonomik bir seçenek.
Bulut Depolama Entegrasyonu Adımları
-
Bir bulut depolama servisine kaydolun ve bir bucket oluşturun.
-
AWS CLI veya gsutil gibi bir araç kurun.
-
Yedekleme scriptine bulut yükleme komutu ekleyin:
aws s3 cp $BACKUP_DIR/yedek_$DATE.sql.gz s3://bucket_adı/yedekler/
-
Erişim anahtarlarını güvenli bir şekilde saklayın.
Güvenlik İpuçları
-
Yedek dosyalarını şifreleyin (örneğin, GPG ile).
-
Erişim anahtarlarını bir şifre yöneticisinde saklayın.
5. Kurtarma (Recovery) Testleri
Yedeklemenin etkili olup olmadığını anlamanın tek yolu, düzenli kurtarma testleri yapmaktır. Yedeklerinizin çalışıp çalışmadığını kontrol etmeden, bir felaket anında veri kaybıyla karşılaşabilirsiniz.
Kurtarma Testi Adımları
-
Test Ortamı Oluşturun: Üretim ortamından izole bir test veritabanı kurun.
-
Yedeği Geri Yükleyin:
-
MySQL için:
mysql -u [kullanıcı_adı] -p [veritabanı_adı] < yedek.sql
-
PostgreSQL için:
psql -U [kullanıcı_adı] [veritabanı_adı] < yedek.sql
-
-
Veri Bütünlüğünü Kontrol Edin: Tabloların ve verilerin eksiksiz olduğundan emin olun.
-
Periyodik Testler: Haftalık veya aylık testler planlayın.
6. Güvenlik Önlemleri
Yedekleme süreci, yalnızca veri kaybına karşı değil, aynı zamanda siber tehditlere karşı da korunmalıdır.
Güvenlik İpuçları
-
Şifreleme: Yedek dosyalarını GPG veya AES ile şifreleyin.
-
Erişim Kontrolü: Yedeklere yalnızca yetkili kişiler erişebilsin.
-
Güvenli Depolama: Datatelekom gibi güvenilir veri merkezlerinde saklayın.
-
Log İzleme: Yedekleme işlemlerinin loglarını düzenli olarak kontrol edin.
-
Güvenlik Duvarı: Sunucunuzda bir güvenlik duvarı (örneğin, UFW) kullanın.
Şifreleme Örneği
Yedeği şifrelemek için:
gpg -c yedek.sql
Şifreyi çözmek için:
gpg yedek.sql.gpg
7. Risk Analizi
Yedekleme stratejisi oluştururken riskleri değerlendirmek, doğru kararlar almanıza yardımcı olur.
-
Donanım Arızası: Sunucu disklerinin bozulması, yedeklerin kaybolmasına neden olabilir. Çözüm: Bulut depolama ve birden fazla kopya.
-
Siber Saldırılar: Fidye yazılımlar, yedekleri de hedef alabilir. Çözüm: Şifreli yedekler ve çevrimdışı kopyalar.
-
İnsan Hatası: Yanlış bir komut, veritabanını silebilir. Çözüm: Otomasyon ve erişim kontrolü.
-
Yedekleme Hataları: Bozuk yedekler kurtarmayı imkânsız hale getirebilir. Çözüm: Düzenli kurtarma testleri.
Veritabanı Yedekleme Kontrol Listesi
-
[ ] Yedekleme türünü (tam/artımlı) belirleyin.
-
[ ] mysqldump veya pg_dump gibi uygun araçları seçin.
-
[ ] Yedekleme sıklığını ve programını planlayın.
-
[ ] Otomasyon için cron job veya script kurun.
-
[ ] Yedekleri bulut depolamaya entegre edin.
-
[ ] Yedek dosyalarını şifreleyin.
-
[ ] Düzenli kurtarma testleri yapın.
-
[ ] Erişim kontrolü ve güvenlik önlemlerini uygulayın.
-
[ ] Yedekleme loglarını izleyin.
-
[ ] Risk analizini tamamlayın.
Son Söz
Veritabanı yedekleme, işletmenizin veya projenizin sürekliliği için kritik bir adımdır. Tam ve artımlı yedekleme türlerini birleştirerek, mysqldump veya pg_dump gibi araçlarla, otomasyon ve bulut depolama entegrasyonuyla güçlü bir strateji oluşturabilirsiniz. Güvenlik önlemleri ve düzenli kurtarma testleriyle, verilerinizin her zaman güvende olduğundan emin olabilirsiniz. Bu rehberi takip ederek, sıfırdan güvenli bir yedekleme sistemi kurabilirsiniz.