One server hosting three stacked databases, representing multiple SQL Server instances on one machine

Aynı Sunucuya Birden Fazla SQL Server Instance’ı Kurmalı mısınız? Artılar, Eksiler ve Alternatifler

Aynı sunucuya birden fazla SQL Server instance’ı kurmanın gerçek avantajları ve riskleri, gerekiyorsa bellek ve CPU’nun nasıl paylaştırılacağı ve ne zaman ayrı VM ya da tek instance’ın daha iyi olduğu.

Mayıs 5, 2023

Aynı Windows sunucusuna birden fazla SQL Server instance’ı kurmak (instance stacking) cazip görünür: tek işletim sistemi, tek sunucu, bazen tek lisans. Farklı uygulamalar farklı collation, farklı sürüm ya da ayrı sysadmin yetkisi istediğinde de akla ilk gelen çözümdür. Ancak aynı donanımı paylaşan instance’lar, bir gün birinin diğerinin kaynaklarını tüketmesiyle sonuçlanabilir; yamalar ve yeniden başlatmalar da hepsini birden etkiler.

Bu yazıda instance stacking’in gerçek avantajlarını, risklerini, birden fazla instance kaçınılmazsa nasıl yönetileceğini ve alternatifleri anlatıyoruz.

SQL Server Danışmanlığı

Sunucularınızı konsolide etmeyi mi düşünüyorsunuz?

Aryasoft, iş yüklerinizi ölçer; instance, veritabanı ve sanal makine düzeyinde en uygun konsolidasyon modelini ve lisans etkisini çıkarır.

Destek Alın

Neden Birden Fazla Instance Kurulur?

  • Farklı sunucu ayarları: Sunucu collation’ı, tempdb yapılandırması ya da sp_configure ayarları uygulamalar arasında çakışıyorsa.
  • Yetki ayrımı: Bir uygulama ekibi sysadmin yetkisi istiyor ve diğer veritabanlarına erişmemesi gerekiyorsa.
  • Farklı sürümler: Eski bir uygulama yalnızca eski bir SQL Server sürümünü destekliyorsa.
  • Maliyet: Tek bir Windows lisansı ve yönetilecek tek bir sunucu.

Lisans açısından: fiziksel bir sunucu ya da sanal makine çekirdek bazında lisanslandığında, o işletim sistemi ortamında istediğiniz sayıda instance çalıştırabilirsiniz. Ayrıntılar lisanslama rehberimizde.

Riskler

  • Bellek rekabeti: Her instance, kendisine bir sınır verilmezse kullanılabilir belleğin tamamını almaya çalışır. İki instance aynı belleği isteyince biri diğerini sıkıştırır ve işletim sistemi de baskı altına girer.
  • CPU ve disk paylaşımı: Bir instance’ta çalışan ağır bir rapor ya da index bakımı, diğerindeki kritik uygulamayı yavaşlatır. Disk gecikmesi tüm instance’lara yansır.
  • Ortak bakım penceresi: Windows yaması ya da sunucu yeniden başlatması tüm instance’ları aynı anda etkiler.
  • Tek arıza noktası: Donanım ya da işletim sistemi sorunu tüm uygulamaları birlikte durdurur.
  • Sorun giderme zorluğu: “Sunucu yavaş” şikâyetinde hangi instance’ın neden olduğunu bulmak daha uzun sürer.
  • Port ve ağ yönetimi: Adlandırılmış instance’lar dinamik port kullanır; güvenlik duvarı ve bağlantı dizeleri için sabit portlar planlamak gerekir.

Birden Fazla Instance Kaçınılmazsa

Belleği paylaştırın

Her instance için max server memory ayarlayın. Tüm instance’ların toplamı, işletim sistemine ve diğer servislere yeterli pay kalacak şekilde fiziksel belleğin altında olmalıdır. Kritik instance’a min server memory ile bir taban da verebilirsiniz.

-- Her instance'ta ayrı ayrı çalıştırın; değerleri iş yüküne göre belirleyin
EXEC sys.sp_configure N'show advanced options', 1;
RECONFIGURE;
EXEC sys.sp_configure N'max server memory (MB)', 40960;   -- örnek: 64 GB sunucuda 1. instance
RECONFIGURE;

Uyarı

max server memory ayarlanmamış iki instance aynı sunucuda çalışıyorsa, yoğun saatlerde biri diğerinin belleğini sıkıştırır ve sayfalama başlar. Bu, instance stacking’de en sık gördüğümüz performans sorunudur ve çoğu zaman yalnızca bir instance’ın yavaşlığı olarak fark edilir.

CPU’yu değerlendirin

Çoğu durumda MAXDOP’u her instance için ayrı ayarlamak yeterlidir. Kritik bir instance’ın CPU’sunu kesin olarak korumak gerekiyorsa process affinity kullanılabilir; ancak bu, boşta kalan çekirdeklerin diğer instance tarafından kullanılmasını da engeller ve dikkatli bir planlama gerektirir.

Diski ve TempDB’yi ayırın

Mümkünse her instance’ın veri, log ve TempDB dosyalarını ayrı volume’lara yerleştirin; en azından TempDB’leri paylaşmayın.

Sabit port ve belgeleme

Her instance’a sabit bir port atayın, güvenlik duvarı kurallarını buna göre yazın ve hangi uygulamanın hangi instance’ta olduğunu belgeleyin.

Alternatifler

Seçenek Ne zaman uygun
Tek instance, çok veritabanı Uygulamalar aynı sürümde ve sunucu ayarlarında anlaşabiliyorsa; en verimli ve yönetimi en kolay model
Ayrı sanal makineler Yalıtım, farklı bakım pencereleri ve kaynak garantisi gerekiyorsa
Instance stacking Farklı collation, sürüm ya da yetki gereksinimi varsa ve kaynaklar dikkatle paylaştırılabiliyorsa
Konteynerler Geliştirme ve test ortamlarında hızlı ve izole kurulumlar için

İpucu

Üretim ortamında varsayılan tercih, işletim sistemi başına tek instance ve gerekiyorsa çok sayıda veritabanıdır. Instance stacking’i ancak somut bir ihtiyaç (collation, sürüm, yetki) varsa ve kaynak paylaşımı planlandıysa seçin; geliştirme ve test sunucularında ise rahatlıkla kullanılabilir.

Sunucudaki Instance’ları Görmek

# Bu sunucudaki tüm SQL Server Database Engine servisleri
Get-Service -Name 'MSSQLSERVER', 'MSSQL$*' -ErrorAction SilentlyContinue |
    Select-Object Name, Status, StartType

Kullanılmayan instance’ları ve servisleri (Reporting Services, Analysis Services, Browser) kapatmak, kaynakları serbest bırakır ve saldırı yüzeyini küçültür. Ayrıntılar yapılandırma rehberimizde.

Evet. Ancak üretimde bellek, CPU ve disk paylaşımı, ortak bakım penceresi ve tek arıza noktası gibi riskler getirir. Mümkünse tek instance ve çok veritabanı tercih edin.
Çekirdek bazında lisanslanmış bir fiziksel sunucuda ya da sanal makinede, o işletim sistemi ortamında istediğiniz sayıda instance çalıştırabilirsiniz.
Her instance için max server memory ayarlanmalı ve toplamı, işletim sistemine pay bırakacak şekilde fiziksel belleğin altında tutulmalıdır.
Farklı sunucu collation’ı, farklı SQL Server sürümü ya da ayrı sysadmin yetkisi gerektiğinde ve kaynaklar dikkatle paylaştırılabildiğinde. Geliştirme ve test ortamlarında sık kullanılır.

SQL Server Danışmanlığı

Konsolidasyonu ölçümle planlayın

Aryasoft’un kıdemli DBA ekibi iş yüklerinizi ve kaynak kullanımınızı ölçer; instance, veritabanı ya da sanal makine düzeyinde en uygun konsolidasyon modelini lisans etkisiyle birlikte çıkarır ve uygular.

4.7/5