Gereksinimler ve Ön Hazırlık
Veritabanı yedekleme işlemlerine başlamadan önce, çalışma ortamınızın hazır olduğundan emin olmalısınız. İşlemleri gerçekleştirmek için veritabanı sunucunuza "sysadmin" veya "backup operator" yetkileriyle erişim sağlamanız gerekmektedir.
- Sürüm Kontrolü: SQL Server 2022/2026 veya MySQL 8.4+ sürümleri üzerinde çalışıyor olmanız önerilir.
- Depolama Alanı: Yedek dosyalarınızın (backup files) veritabanı ile aynı fiziksel diskte tutulmaması, disk arızalarına karşı koruma sağlar.
- Yetkilendirme: Komut satırı veya yönetim arayüzü (SSMS, MySQL Workbench) üzerinden tam yetkili bir kullanıcı hesabına sahip olun.
- Test Ortamı: Yedekleme stratejilerinizi canlı (production) ortamda denemeden önce mutlaka bir geliştirme veya test ortamında doğrulayın.
SQL Server Yedekleme: T-SQL ile Adım Adım İşlem
SQL Server üzerinde "Full Backup" (Tam Yedekleme), veritabanının o anki tüm içeriğini bir dosyaya aktarır. Bu işlem, veritabanının kurtarılması için temel taşıdır. Aşağıdaki kod bloğu, belirli bir veritabanını belirtilen dizine yedeklemek için kullanılır.
-- SQL Server Tam Yedekleme Komutu
BACKUP DATABASE [SirketVeritabani]
TO DISK = 'C:\Yedekler\SirketVeritabani_Full_2026.bak'
WITH FORMAT,
MEDIANAME = 'SQLServerBackups',
NAME = 'Full Backup of SirketVeritabani';
Bu komut, SirketVeritabani isimli veritabanını hedef dizine .bak uzantısıyla kaydeder. FORMAT parametresi, mevcut yedekleme ortamını yeniden başlatarak temiz bir dosya oluşturulmasını sağlar.
Kritik Uyarı: Yedekleme dosyalarınızı asla web erişimine açık dizinlerde tutmayın. Bu dosyalar veritabanınızın tüm şifrelenmemiş verilerini içerir ve yetkisiz kişilerin eline geçmesi büyük bir veri ihlalidir.
MySQL Veritabanı Yedekleme: mysqldump Kullanımı
MySQL ve MariaDB dünyasında en yaygın ve güvenilir yedekleme yöntemi mysqldump aracıdır. Bu araç, veritabanını SQL ifadeleri içeren bir metin dosyasına dönüştürür. Bu yöntem, farklı MySQL sürümleri arasında veri taşıma (migration) için de oldukça kullanışlıdır.
# MySQL Yedekleme Komutu (Terminal/Komut İstemi)
mysqldump -u kullanici_adi -p veritabani_adi > /yedekler/yedek_dosyasi.sql
Bu komutu çalıştırdığınızda sistem sizden veritabanı parolanızı isteyecektir. > operatörü, veritabanından gelen tüm çıktıları belirtilen .sql dosyasına yönlendirir. Yedekleme bittiğinde dosyanın boyutunu kontrol ederek işlemin başarılı olup olmadığını doğrulayabilirsiniz.
Veritabanı Geri Yükleme: SQL Server Restore
Yedekleme dosyalarınızdan veri geri yüklemek, veritabanı yönetiminin en stresli ancak en önemli kısmıdır. RESTORE komutu ile veritabanını önceki bir duruma döndürebilirsiniz. Geri yükleme sırasında veritabanının "Single User" moduna alınması, veri tutarlılığı açısından önerilir.
-- SQL Server Geri Yükleme Komutu
USE master;
ALTER DATABASE [SirketVeritabani] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
RESTORE DATABASE [SirketVeritabani]
FROM DISK = 'C:\Yedekler\SirketVeritabani_Full_2026.bak'
WITH REPLACE;
ALTER DATABASE [SirketVeritabani] SET MULTI_USER;
Burada WITH REPLACE komutu, mevcut veritabanının üzerine yazılmasını sağlar. SINGLE_USER modu, geri yükleme sırasında başka hiçbir kullanıcının veritabanına erişememesini garanti altına alır.
MySQL Geri Yükleme: SQL Dosyasını İçe Aktarma
MySQL'de yedekleme dosyasını geri yüklemek, yedekleme işleminin tersidir. Ancak, geri yükleme yapmadan önce hedef veritabanının boş olduğundan veya mevcut verilerin silineceğinden emin olmalısınız.
# MySQL Geri Yükleme Komutu
mysql -u kullanici_adi -p veritabani_adi < /yedekler/yedek_dosyasi.sql
Bu komut, .sql dosyası içindeki tüm CREATE TABLE ve INSERT ifadelerini sırasıyla çalıştırarak veritabanınızı eski haline getirir. İşlem sırasında herhangi bir hata alırsanız, dosyanın bozuk olup olmadığını veya yetki kısıtlamalarını kontrol edin.
Yedekleme Yöntemlerinin Karşılaştırılması
| Yöntem | Avantaj | Dezavantaj |
|---|---|---|
| Tam Yedekleme (Full) | Geri yüklemesi hızlı ve basittir. | Dosya boyutu çok büyüktür. |
| Artımlı Yedekleme (Differential) | Sadece değişen veriyi yedekler. | Geri yükleme süreci daha karmaşıktır. |
| SQL Dump (MySQL) | Platformdan bağımsız taşınabilirlik. | Büyük veritabanlarında yavaştır. |
Otomasyon ve Güvenlik Stratejileri
Manuel yedekleme hata payı yüksek bir süreçtir. 2026 standartlarında, yedekleme işlemlerini SQL Agent (SQL Server) veya Cron Jobs (Linux/MySQL) ile otomatize etmelisiniz. Ayrıca, yedeklerinizi düzenli olarak test etmek için "Restore Test" süreçlerini takviminize ekleyin.
-- SQL Server'da Otomatik Yedekleme için Job Oluşturma (Mantıksal Örnek)
EXEC sp_add_job @job_name = 'GunlukYedekleme';
EXEC sp_add_jobstep @job_name = 'GunlukYedekleme',
@step_name = 'Yedekle',
@subsystem = 'TSQL',
@command = 'BACKUP DATABASE [SirketVeritabani] TO DISK = ''D:\Yedekler\Otomatik.bak''';
Güvenlik tarafında, yedek dosyalarınızı şifrelemek (Encryption) ve yedekleri farklı bir coğrafi bölgeye (Cloud Storage) kopyalamak, "felaket kurtarma" (Disaster Recovery) planınızın vazgeçilmez bir parçası olmalıdır.
Sorumluluk Reddi: Bu makaledeki kod örnekleri eğitim amaçlıdır. Canlı veritabanları üzerinde işlem yapmadan önce mutlaka yedeklerinizi manuel olarak alın ve test ortamında doğrulayın. Yanlış yapılandırılmış geri yükleme komutları veri kaybına neden olabilir.
Sıkça Sorulan Sorular
Yedekleme dosyam bozuk çıkarsa ne yapmalıyım?
Yedekleme dosyalarınızın bütünlüğünü düzenli olarak RESTORE VERIFYONLY komutu ile test etmelisiniz. Eğer dosya bozuksa, bir önceki yedekleme dosyasını kullanmanız veya transaction log yedeklerinizden kurtarma yapmaya çalışmanız gerekecektir.
Geri yükleme sırasında "Access Denied" hatası alıyorum, neden?
Bu hata genellikle veritabanı servisinin, yedek dosyasının bulunduğu klasöre yazma veya okuma izni olmamasından kaynaklanır. Klasör izinlerini (Permissions) veritabanı servis kullanıcısı (Network Service veya MSSQLSERVER) için güncelleyin.
Yedekleme işlemi veritabanını yavaşlatır mı?
Evet, özellikle büyük veritabanlarında yedekleme işlemi ciddi I/O (Girdi/Çıktı) yükü oluşturur. Bu nedenle yedekleme işlemlerini sistemin en az kullanıldığı saatlerde (gece saatleri gibi) planlamanız önerilir.
SQL Dump ile alınan yedekler yeterli mi?
Küçük ve orta ölçekli projeler için yeterlidir. Ancak, çok yüksek trafikli (High Transaction) sistemlerde, veritabanı tutarlılığını sağlamak için "Point-in-Time Recovery" (Zaman Damgalı Kurtarma) destekleyen yedekleme yöntemleri tercih edilmelidir.
Bulut tabanlı yedekleme güvenli mi?
Evet, ancak verilerinizi buluta göndermeden önce mutlaka istemci tarafında şifrelediğinizden (Client-side encryption) emin olun. Bulut sağlayıcısının sunduğu IAM politikalarını kullanarak yedekleme klasörüne erişimi en az seviyede tutun.
Veritabanı Yedekleme Stratejilerinde İleri Düzey Senaryolar ve Performans Optimizasyonu
Yedekleme süreçleri sadece komut satırı işlemlerinden ibaret değildir; büyük ölçekli veritabanlarında yedekleme sırasında sistemin performans kaybı yaşamaması kritik bir mühendislik konusudur. Özellikle 7/24 çalışan üretim (production) ortamlarında, yedekleme işleminin veritabanı üzerindeki I/O yükünü minimize etmek için aşağıdaki stratejileri uygulayabilirsiniz.
Transaction Log Yedekleme ile "Point-in-Time" Kurtarma
Veritabanınızın sadece tam yedeğini (Full Backup) almak yeterli olmayabilir. SQL Server gibi sistemlerde, Transaction Log yedeklemesi yaparak veritabanınızı belirli bir saniyeye veya dakikaya geri döndürebilirsiniz. Bu, veritabanı çökmesi durumunda veri kaybını neredeyse sıfıra indirir.
-- SQL Server: Transaction Log yedekleme örneği
BACKUP LOG [VeritabaniAdi]
TO DISK = 'C:\Yedekler\Veritabani_Log.trn'
WITH NOFORMAT, NOINIT, NAME = 'Log Yedekleme', SKIP, NOREWIND, NOUNLOAD, STATS = 10;
Yedekleme Sırasında Performans Yönetimi
Yedekleme işlemi sırasında veritabanı sunucusunun CPU ve disk kaynaklarını tüketmesini engellemek için "Backup Compression" (Yedekleme Sıkıştırma) özelliğini kullanmalısınız. Bu işlem, disk alanından tasarruf etmenizi sağlar ve yazma hızını artırarak I/O darboğazını azaltır.
| Strateji | Avantajı | Dezavantajı |
|---|---|---|
| Sıkıştırılmış Yedekleme | Daha az disk alanı, daha hızlı ağ aktarımı | Bir miktar daha fazla CPU kullanımı |
| Parçalı (Differential) Yedekleme | Yedekleme süresini kısaltır | Geri yükleme süreci daha karmaşıktır |
Felaket Kurtarma (Disaster Recovery) Testleri: "Restore Test"
Yedekleme dosyalarınızın sağlam olduğunu anlamanın tek yolu, onları düzenli olarak farklı bir sunucuya geri yüklemektir. Birçok sistem yöneticisi, yedekleme dosyalarının bozuk olduğunu ancak sistem çöktüğünde fark eder. Bu durumu engellemek için bir "Restore Test" otomasyonu kurun.
Otomatik Test Senaryosu Adımları:
- Yedekleme dosyasını test sunucusuna kopyala.
RESTORE VERIFYONLYkomutu ile dosyanın bütünlüğünü kontrol et.- Veritabanını "Standby" modunda geri yükle.
- Kritik tabloların satır sayılarını orijinal veritabanı ile karşılaştır.
-- Yedek dosyasının bütünlüğünü kontrol etme
RESTORE VERIFYONLY
FROM DISK = 'C:\Yedekler\Veritabani_Full.bak';
Bu testleri ayda bir kez yapmak, olası bir felaket anında hayatta kalmanızı sağlar. Unutmayın, yedekleme bir "yazma" işlemidir; geri yükleme ise bir "güven" işlemidir. Test edilmemiş hiçbir yedek, gerçek bir yedek değildir.
Sonuç
SQL ve veritabanı yedekleme işlemleri, bir yazılım projesinin sigortası gibidir. Bu rehberde öğrendiğiniz temel komutlar ve stratejiler, verilerinizi korumak için atacağınız ilk adımdır. Unutmayın ki, yedeklenmemiş hiçbir veri "var" sayılmaz. Bir sonraki adım olarak, yedekleme süreçlerinizi bir otomasyon aracına bağlamayı ve "Felaket Kurtarma Senaryoları" (Disaster Recovery Plans) üzerine bir döküman hazırlamayı hedefleyin. Veritabanı güvenliği süreklilik gerektiren bir disiplindir; öğrendiklerinizi düzenli olarak güncelleyerek sistemlerinizi her zaman hazır tutun.


Yorumlar (0)
Yorum Yaz