Her SQL Server instance’ı, kullanıcı veritabanlarının yanında kendi işleyişi için gereken sistem veritabanlarıyla gelir. Bunlar çoğu zaman görmezden gelinir; ta ki msdb gigabaytlarca büyüyüp diski doldurana, model veritabanının bir ayarı her yeni veritabanının log’unu şişirene ya da master yedeği olmadığı için yeniden kurulan bir sunucuda tüm login’lerin kaybolduğu fark edilene kadar.
Bu rehberde her sistem veritabanının ne tuttuğunu, nasıl yedekleneceğini ve en sık karşılaşılan sorunları anlatıyoruz.
Sistem veritabanlarınız korunuyor mu?
Aryasoft, sistem veritabanlarının yedek, bakım ve yapılandırma durumunu inceler; felaket anında sunucunun eksiksiz geri dönebilmesini sağlar.
Sistem Veritabanları ve Görevleri
| Veritabanı | Ne tutar | Yedek |
|---|---|---|
| master | Login’ler, sunucu ayarları, linked server’lar, endpoint’ler, diğer veritabanlarının varlığı ve dosya konumları | Düzenli ve sunucu düzeyindeki her değişiklikten sonra |
| model | Yeni oluşturulan her veritabanının şablonu | Özelleştirildiyse |
| msdb | Agent job’ları, yedek ve restore geçmişi, Database Mail, bakım planları, log shipping bilgileri | Düzenli |
| tempdb | Geçici tablolar, sıralama ve hash işlemleri, row versioning | Yedeklenemez; her başlangıçta yeniden oluşturulur |
| Resource | SQL Server’ın sistem nesneleri; gizli ve salt okunurdur | BACKUP ile alınmaz |
| distribution | Replikasyon kullanılıyorsa, dağıtılacak değişiklikler | Replikasyon stratejisine göre |
master
master olmadan SQL Server başlamaz. Sunucu düzeyindeki her şey burada tutulur: login’ler ve parolaları, sunucu rolleri, sp_configure ayarları, linked server’lar, endpoint’ler ve hangi kullanıcı veritabanlarının nerede olduğu.
Kritik
master’ın yedeği yoksa ve sunucu kaybedilirse, kullanıcı veritabanlarını yeni bir sunucuya geri yükleyebilirsiniz; ama login’ler, parolaları, sunucu rolleri, linked server’lar ve sunucu ayarları kaybolur. Uygulamalar bağlanamaz ve tüm bu yapılandırmanın elle yeniden oluşturulması gerekir. master’ı düzenli olarak ve login ekleme, ayar değiştirme gibi her sunucu değişikliğinden sonra yedekleyin.
master’a kullanıcı tabloları ya da procedure’leri eklemekten kaçının. Bu nesneler migration sırasında kolayca unutulur ve master’ın geri yüklenmesini zorlaştırır.
model
Yeni oluşturulan her veritabanı model’in bir kopyası olarak başlar: boyutu, büyüme ayarları, recovery model’i ve model’e eklenmiş nesneler yeni veritabanına geçer. TempDB de her başlangıçta model’den oluşturulur.
model’in varsayılan recovery model’i FULL’dür. Yeni oluşturulan veritabanları da FULL ile başlar; bu veritabanları için log yedeği planlanmazsa transaction log durmadan büyür. Bu, sahada log dosyalarının diski doldurmasının en sık nedenlerinden biridir. Ya model’in recovery model’ini kurum standardınıza göre ayarlayın ya da her yeni veritabanını yedek planına eklemeyi kural haline getirin. Ayrıntılar recovery model rehberimizde.
msdb
SQL Server Agent’ın veritabanıdır: job’lar, zamanlamalar, operator’lar, uyarılar, Database Mail ve yedek ve restore geçmişi burada tutulur. Temizlenmeyen yedek ve job geçmişi, msdb’yi zamanla gigabaytlarca büyütebilir ve yedek geçmişini sorgulayan araçları yavaşlatır.
-- 90 günden eski yedek ve restore geçmişini temizleyin (haftalık bir job'da)
DECLARE @oldest datetime = DATEADD(DAY, -90, GETDATE());
EXEC msdb.dbo.sp_delete_backuphistory @oldest_date = @oldest;
EXEC msdb.dbo.sp_purge_jobhistory @oldest_date = @oldest;
msdb’nin yedeği yoksa, sunucu yeniden kurulduğunda tüm Agent job’ları, bakım planları ve uyarılar kaybolur. Agent yönetimi için Agent rehberimize bakın.
tempdb
Geçici tablolar, tablo değişkenleri, sıralama ve hash işlemlerinin taşan kısmı, row versioning ve index işlemleri tempdb’yi kullanır. Her başlangıçta sıfırdan oluşturulduğu için yedeklenmez; ama performans açısından en kritik sistem veritabanıdır. Dosya sayısı, boyutu ve yerleşimi için TempDB rehberimize bakın.
Resource
sys.objects gibi sistem nesnelerinin tanımlarını tutan gizli, salt okunur bir veritabanıdır (mssqlsystemresource.mdf). Management Studio’da görünmez ve BACKUP ile yedeklenmez. Cumulative update’ler bu dosyayı günceller; elle müdahale edilmemelidir.
Durumu Kontrol Etmek
SELECT d.name, d.recovery_model_desc,
CAST(SUM(mf.size) * 8 / 1024.0 AS decimal(12, 1)) AS size_mb,
(SELECT MAX(b.backup_finish_date) FROM msdb.dbo.backupset AS b
WHERE b.database_name = d.name AND b.type = 'D') AS last_full_backup
FROM sys.databases AS d
JOIN sys.master_files AS mf ON mf.database_id = d.database_id
WHERE d.database_id <= 4
GROUP BY d.name, d.recovery_model_desc
ORDER BY d.name;
İpucu
Sistem veritabanlarının yedeklerini, kullanıcı veritabanlarıyla aynı yedek job’ına dahil edin ve restore testlerinize ekleyin. Yeni bir sunucuda master ve msdb’yi geri yükleme prosedürünü bir kez denemiş olmak, felaket anında saatler kazandırır.
Kontrol Listesi
- master ve msdb düzenli yedekleniyor; model özelleştirildiyse o da.
- master’da kullanıcı nesnesi yok.
- model’in recovery model’i ve büyüme ayarları kurum standardına uygun.
- msdb’de yedek ve job geçmişi düzenli temizleniyor; boyutu izleniyor.
- tempdb doğru boyutlandırılmış ve ayrı bir diskte.
- Sistem veritabanlarının restore prosedürü belgelenmiş ve denenmiş.
İlgili Yazılar
SQL Server Danışmanlığı
Sunucunuzu eksiksiz geri dönebilir hale getirin
Aryasoft’un kıdemli DBA ekibi sistem veritabanlarının yedek, bakım ve yapılandırma durumunu inceler; felaket anında login’ler, job’lar ve ayarlar dahil sunucunun eksiksiz geri dönebilmesini sağlar.