Four database cylinders around a hidden one, representing SQL Server system databases

SQL Server Sistem Veritabanları: master, model, msdb, tempdb ve Resource

SQL Server sistem veritabanlarının her birinin ne tuttuğu; master, model ve msdb’nin nasıl yedekleneceği, model’in FULL recovery’sinin neden log şişirdiği, msdb temizliği ve tempdb’nin neden yedeklenmediği.

Nisan 30, 2023

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.

SQL Server Danışmanlığı

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.

Destek Alın

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ş.
master, model, msdb ve tempdb ile gizli Resource veritabanı. Replikasyon kullanılıyorsa distribution veritabanı da bulunur.
master ve msdb düzenli olarak; model ise özelleştirildiyse. tempdb yedeklenemez, Resource veritabanı BACKUP ile alınmaz.
Temizlenmeyen yedek ve restore geçmişi, job geçmişi ve Database Mail kayıtları yüzünden. sp_delete_backuphistory ve sp_purge_jobhistory ile düzenli temizlenmelidir.
model veritabanının varsayılan recovery model’i FULL olduğu için yeni veritabanları da FULL ile başlar; log yedeği alınmazsa log sürekli büyür.

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.

4.7/5