Windows Server ve Sql Server Kurulum Adımları

Bu makalede sıfırdan sunucumu kurulumun her adımını detaylı bir şekilde neler yapılması gerektiğini görmüş olacağız.

1-)Sunucu Kurulurken Yapılması Gerekenler

  • Sunucu üzerinde ilk bağlantı sağlandıktan sonra Firmware Upgrade yapılması gerekmektedir. İşletim sistemini kurmadan önce üreticinin araçlarıyla (Dell Lifecycle Controller, HP Intelligent Provisioning vb.) tüm donanımı güncelleyin.
  • Sunucu üzerinde Raid yapılandırılmasının yapılması gerekmektedir. Sunucu üzerinde çalışacak işleme göre konfigüre edilmesi gerekmektedir.

2-)Sunucuyu Teslim Alınınca Yapılacak Kontroller

  • Disk Konfigürasyonu

Raid yapısıyla konfigüre edilmiş disklerin Formatlanıp kurulumun yapılması gerekmektedir. Sql server için disk formatlamanın Best Practices değeri 64 Kb’dir

  • Driver’ların Kontrolü
Get-WmiObject Win32_PnPSignedDriver | Select-Object DeviceName, Manufacturer, DriverVersion
  1. DeviceName → Donanım aygıtının adı
  2. Manufacturer → Üretici firma
  3. DriverVersion → Sürücü versiyonu

Mevcut bölümden de kontrol edilebilir.

  • Windows Update Kontrolü

Belirtilen linkten güncellemeyi indirilecek sayfaya giriş yapılır. Hangi güncelleştirmenin indirileceği windows server sürümüne göre yukarıda belirtilen linkten indirilmesi gerekmektedir. Windows sürümüne göre microsoft’un sayfasında bulunabilir.

  • İşletim sistemi ve edition uygunluğunun kontrolü(powershell üzerinde çalıştırılır)
systeminfo | Select-String "OS Name","OS Version"
  • Network hızı ve Teaming kontrolü
Get-NetAdapter | Select-Object Name, LinkSpeed, Status

Sunucu üzerinde Teaming yapısının oluşturulması için ilgili makale okunabilir.

  • Sunucu adı kontrolü
Hostname
  • Ip Kontrolü
ipconfig

Ipv6 kapatılması gerekmektedir.(herhangi bir role kurulumunda hata mesajıyla karşılaşabiliriz.)

  • Ağdan gelen iş yüklerini cpu’ya dağıtmak için aşağıdaki belirtilen kısmın enable edilmesi gerekmektedir.

Normal şartlarda, bilgisayarınıza gelen ağ trafiği tek bir işlemci (CPU) çekirdeği tarafından işlenir. Eğer çok hızlı bir internet bağlantınız veya yoğun bir ağ trafiğiniz varsa, o tek çekirdek %100 yüke ulaşabilir ve sistemde kasmalar ya da internet hızında düşüşler yaşanabilir. Gelen ağ paketlerini sistemdeki birden fazla işlemci çekirdeğine dağıtır. Tek bir çekirdeğin üzerine binen yükü azaltarak sistemin daha akıcı çalışmasını sağlar. Veriler paralel olarak işlendiği için ağ gecikmesi (ping) düşebilir. Modern bilgisayarlarda ve sunucularda (görseldeki gibi Hyper-V sanallaştırma kullanılıyorsa özellikle) bu ayarın Enabled olması istenir. Bu sayede sanal makineleriniz veya ana sisteminiz ağ trafiğini işlerken işlemcinizin tüm gücünden faydalanabilir. Eğer çok eski bir işlemci kullanmıyorsanız veya özel bir ağ çakışması yaşamıyorsanız, bu ayarı Enabled konumunda bırakmak en iyisidir.

  • Sunucu üzerinde bulunan kullanılmayan ethernetlerin disable moduna çekilmesi gerekmektedir.

3-)Sql Server Kurulmadan Önce Windows Server’ın Hazırlanması

  • Power Options kısmında high Performance seçilmesi gerekmektedir. Powershell üzerinde kontol script’i çalıştırılır.
powercfg /getactivescheme --Default balanced gelmektedir.

Güç planını High performance seçmek için aşağıdaki komut ile yapılmaktadır.

powercfg /setactive SCHEME_MIN 

Windows üzerinde aşağıdaki bölümden yapılmaktadır.

  • C diski doluluğu önüne geçmek için sql server data root directory yapısı için Kurulum(K) adında bir diskin işletim sistemine eklenmesi gerekmektedir.
  • System Locale Turkey Olarak Set Edilmesi gerekmektedir. powershell üzerinden kontrol edilir.
Get-WinSystemLocale //kontrol
Get-WinSystemLocale //kontrol
Get-Culture //kontrol

Aşağıdaki komutla set etme işlemini yapabiliriz.

Set-WinUILanguageOverride -Language "tr-TR"   //set etme ( Restart sonrası gelir)
  • time Zone UTC +3 Istanbul Olarak Set edilmesi gerekmektedir.
tzutil /g //kontrol
Get-TimeZone //kontrol

Aşağıdaki komutla set edilebilir. İkinci yapılacak yer Windows üzerinde Control panelinde Clock and Region bölümünden yapılabilir.

    Set-TimeZone -Name "Turkey Standard Time"    //set etme
    tzutil /s "Turkey Standard Time"             //set etme
  • Page file kontrol edilmesi gerekmektedir.

Computer properties>>Advance System settings>>Advanced>>Settings>>Virtual Memory

Windows’un RAM yetmediğinde hard disk üzerinde oluşturduğu sanal bellek alanıdır. RAM dolduğunda kullanılmayan verileri buraya taşır. Çok yüksek RAM’iniz varsa bu yapı kullanılmaz.

  • Telnet Client kurulması gerekmektedir.
  • Multi Path IO kurulması gerekmektedir.
  • .NET Framework yüklenmesi gerekmektedir.
  • Failover cluster features yüklenmesi gerekmektedir. Aşağıdaki komutlar yükleme işlemi yapıldığı gibi Windows server manager üzerin dede yapılmaktadır. Windows üzerinde yapılması tercih edilir. Features eklerken IP konusunda yanlışlıkların önüne geçmek içindir..
Get-WindowsFeature -Name Failover-Clustering //kontrol
Install-WindowsFeature -Name Failover-Clustering //yükleme
Install-WindowsFeature -Name Failover-Clustering -IncludeManagementTools -Restart //yükeleme ve restart etme

Kurulum işlemi bittikten sonra mevcutta bulunan cluster varsa node dahil edilir. Sıfır kurulum ise failover cluster kurulumu yapılmaktadır.

  • Sunucu üzerinde User Account Control yapısının kapatılması gerekmektedir. Sunucu yönetirken bazı SQL Server servislerinin veya yönetim araçlarının çalışması için “Run as Administrator” (Yönetici olarak çalıştır) demen gerekir. UAC, bu işlemin gerçekten senin tarafında bilinçli olarak yapıldığını doğrular.
  • Windows Firewall Kapatılması
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
  • Sunucunun Cluster a dahil edilmesi
Add-ClusterNode -Cluster "ClusterName" -Name "NodeName"

Aşağıda bulunan yapılar sadece bulunduğunuz ortamda Active directory ve Dns yönetimi yapan kişilerin konfigürasyonunda yapılması gerekmektedir.

  • Active directory tarafında bir OU yapısının oluşturulması. Tüm nesnelerin OU altına taşınması gerekmektedir. Daha sonra bir security group oluşturulup ilgili OU delegate yapısının oluşturulması gerekmektedir. Alwayson yapısı için bir kullanıcının oluşturulması gerekmektedir. Bu kullanıcı oluşturulurken iki yapının seçenek seçilmelidir. Artık sql server servis hesaablarının yerine geçen yapı gMSA yapısıdır. ilgili delegate işlemine oluşturulan gMSA hesabının eklenmesi gerekmektedir. Bu yapı ile aşağıdaki gibi şifreleme işlemleriyle uğraşmaz. Sayfadan ilgili makale okunabilir.

SQL Servisleri İçin Kullanıcı Hesabının Oluşturulması

  • Cluster üyesi sunucularımızın Domainde yaratılan diğer Group Policy kurallarından olumsuz bir şekilde etkilenmesini önlemek adına ilgili OU için genel yapılan policy’lerin devralma işlemini bloke etmemiz gerekmektedir. Bu işlem için Group Policy Management’a açalım ve ilgili OU ya sağ tıklayıp Block Inheritance diyelim. Böylelikle Domain için yukarıdan yayımlanmış GPO ilkelerinden minimum seviyede etkilenilmiş olacaktır.

3-) SQL Server Hazırlanması

  • Kurulacak sql server ile windows server uyumluluğunun kontrol edilmesi gerekmektedir. Microsoft sayfasından desteklenip desteklenmesi bulunabilir. Çok önemli bir kontrol işlemidir. İlgili linkten kontrol edilebilir.
  • Sql server versiyonunuza göre hangi Cumulative update gerektiğini belirtilen linkten bulabilirsiniz. Daha sonra windows kataloğundan ilgili CU yapısının indirilmesi gerekmektedir. Microsoft update katalog kısmından indirilmesi gerekmektedir.
  • Sql sever’ın tüm özelliklerinden faydalanmak için Enterprice Core Based sürümünün kurulması gerekmektedir. Windows sürümünde herhangi bir sakınca bulunamamaktadır.
  • Sql server kurulumunda Database engine Features haricinde hangi features kurulumu yapılacaksa yapılması gerekmektedir.
  • Sql server database engine ve sql server agent servis ayarlarında bulunan port ve diğer özelliklerin yapılması gerekmektedir. Sql Server Network Configuration ayarlarının yapılması gerekmektedir.
  • Sql server memory ve CPU sayısının kontrol edilmesi gerekmektedir. İlgili sayfadan sql server’a ne kadar memory set edileceğini bulabiliriz. Aşağıdaki komut ile scheduler count, CPU count ve her bir numa node üzerinde bulunan CPU sayısını göstermektedir.
SELECT 
    scheduler_count AS [Scheduler Count],
    cpu_count AS [CPU Count],
    hyperthread_ratio AS [Hyperthread Ratio]
FROM sys.dm_os_sys_info;
  • Sql Server Management studio’nun kurulması gerekmektedir. Sql server kurulurken eklenen user ile giriş yapılması gerekmektedir. Ayrıca sql server servis hesabıyla giriş yapılıp yapılmadığının kontrol edilmesi gerekmektedir.
  • SQL Server’ın en büyük darboğazlarından biri olan tempdb üzerindeki “metadata çekişmesini” (metadata contention) çözmek için kullanılan oldukça güçlü bir ayardır. Bu ayar aktif edildiğinde: Sistem tabloları RAM üzerinde, mandallama (latching) gerektirmeyen veri yapılarına dönüşür. Özellikle çok çekirdekli sistemlerde, tempdb üzerindeki kilitlenmeler neredeyse tamamen ortadan kalkar. Geçici nesnelerin (temporary objects) yönetimi çok daha akıcı hale gelir.
ALTER SERVER CONFIGURATION SET MEMORY_OPTIMIZED TEMPDB_METADATA=ON
  • Sql server servis hesabı veya gMSA hesabının sql configuration managerdan set edilmesi gerekmektedir.
  • Sql server kurulumu tamamlandıktan sonra SPN kayıtlarının yapılması gerekmektedir.

Sql server kurulu olan sunucu üzerinde 4 tane SPN kaydı yapılmaktadır.

# SQL Server Availability Group için SPN-Listener Port
setspn -S MSSQLSvc/AG_Listener.yunusyucel.com:1453 YCL2025\SqlUser
setspn -S MSSQLSvc/AG_Listener.yunusyucel.com:INSTANCE_NAME YCL2025\SqlUser

# Sunucu ilgili port için SPN-Sql Servis Port
setspn -S MSSQLSvc/Server1.yunusyucel.com:1433 YCL2025\SqlUser
setspn -S MSSQLSvc/Server2.yunusyucel.com:1433 YCL2025\SqlUser

# Sql Server Instance için SPN
setspn -S MSSQLSvc/Server1.yunusyucel.com:INSTANCE_NAME YCL2025\SqlUser
setspn -S MSSQLSvc/Server2.yunusyucel.com:INSTANCE_NAME YCL2025\SqlUser

gMSA yapılarında yukarıda girilen spn kayıtları gMSA için girilmesi gerekmektedir.

# SQL Server Availability Group için SPN-Listener Port
setspn -S MSSQLSvc/AG_Listener.yunusyucel.com:1453 YCL2025\gMSA_SQLCLS
setspn -S MSSQLSvc/AG_Listener.yunusyucel.com:INSTANCE_NAME YCL2025\gMSA_SQLCLS

# Sunucu ilgili port için SPN-Sql Servis Port
setspn -S MSSQLSvc/Server1.yunusyucel.com:1433 YCL2025\gMSA_SQLCLS
setspn -S MSSQLSvc/Server2.yunusyucel.com:1433 YCL2025\gMSA_SQLCLS

# Sql Server Instance için SPN
setspn -S MSSQLSvc/Server1.yunusyucel.com:INSTANCE_NAME YCL2025\gMSA_SQLCLS
setspn -S MSSQLSvc/Server2.yunusyucel.com:INSTANCE_NAME YCL2025\gMSA_SQLCLS
  • Sysadminlerin oluşturulması gerekmektedir. sa kullanıcısının disable moduna çekilmesi yeni bir sysadmin kullanıcısının eklenmesi gerekmektedir. sa kullanıcısı güvenlik açığına sebep olmaktadır.
CREATE LOGIN [domain\user] FROM WINDOWS;
EXEC sp_addsrvrolemember 'domain\user', 'sysadmin';
  • sp_configure ayarlarının mevcutta bulunan bir sunucu üzerinde karşılaştırılması veya minumum aşağıdaki değerlerin set edilmesi gerekmektedir.
-- Gelişmiş ayarları aç (bir kez yapılır)
EXEC sp_configure 'show advanced options', 1;
RECONFIGURE;

EXEC sp_configure 'remote admin connections',1
reconfigure

EXEC sp_configure'remote access',1
reconfigure

EXEC sp_configure 'max server memory (MB)', 4096;
RECONFIGURE;

EXEC sp_configure 'max degree of parallelism', 1;
RECONFIGURE;

EXEC sys.sp_configure 'backup compression default', '1'
reconfigure

sp_configure 'clr enabled', 1;
reconfigure
  • Tempdb data file ve log file konfigürasyonu yapımı ve size değerinin ayarlanması gerekmektedir. Sql server başlanğıç adımında da yapılabilir.
  • Sunucu üzerinde mail konfigürasyonu yapılması sonucu sunucuların mail sunucusuna ulaşabilmesi için hedef porta erişebilmesi için firewall dan yetki verilmesi gerekmektedir. Başka bir sunucuda mail konfigürasyonun script’i alınıp belirli düzenlemeden sonra oluşturulabilir.
  • Başka bir sunucusunun kopyası oluşturuluyorsa: Resource Governer, Linked Server, Extented event ,Policy based management, login Trigger, server ddl trigger, master veritabanında oluşturulan procedure, Server seviyesinde alert, agent altında bulunan operatör scriptlerinin alınıp yeni ortamda çalıştırılması gerekmektedir.
  • Sql server’a hem windows hem de sql kullanıcısıyla login olabilmesi için Mixed modun seçilmesi gerekmektedir.
  • Sunucular için Dış ağa erişim yetkisi talebi verilmelidir.(Sms gitmiyor ise)
  • Windows servisler bölümünde bulunan Ceip service disable edilmesi gerekmektedir. Microsoft ürün geliştirme deneyimi için ihtiyaç duyulmaktadır.
  • Sunucular üzerinde Scom ve zabix gibi toollar varsa eklenmesi gerekmektedir.
  • Mevcutta bulunan veya kullanılmasını istediğimiz Trace Flaglerin kontrol edilip eklenmesi gerekmektedir. SQL Server Configuration Manager bölümüne girilir gelen ekranda Trace Flag bölümünde aşağıdaki değerlerin eklenmesi gerekmektedir.

-T174: Bucket count limitini 40 binden 160 bine çekmeye yarar. Varsayılan bucket count değeri 40001’dir. Normal değerde toplam cache üzerinde bulanabilecek max. plan sayısı 160000’dir. T174 trace flag ile bucket count sayısı 160001, max plan cache sayısı 640000’e çıkarılır.

-T1118: Diskten veriyi mixed extent şeklinde değil de uniform extent şeklinde çekmesi sağlanmaktadır. Tempdb performansına olumlu etki yapmaktadır.

-T3459: Bu paremetre secondary sunucusundaki DIRTY_PAGE_TABLE_LOCK, REDO_THREAD_PENDING_WORK, PARALLEL_REDO_DRAIN_WORKER, PARALLEL_REDO_FLOW_CONTROL gibi bekleme türlerine sebebiyet vermektedir. Secondary sunucusunda parelelizmin önüne geçmek için bu parametre kullanılır. Gerçek sistem üzerinde bu özellik açılır.

-T7752 ve -T7745: Bu iki trace flag query store açıldığında secondary veritabanında eklenmesi gerekir. Herhangi bir failover durumunda query store daki verilerin restoresinin önüne geçer.

-T8048: Numa bazlı bölünmüş memory objelerini CPU bazlı bölünmüş hale getirir. Yüksek miktarda oluşan CPU kullanımını düşürmektedir. NUMA: Çok çekirdekli / çok işlemcili sistemlerde belleğin bölgelere ayrılması demek. Her CPU’nun “kendine yakın” belleği var. CPU bazlı bölünmüş hale getirir: Belleği NUMA düğümlerine göre değil, doğrudan CPU’lara göre paylaştırıyor.

-T8780: SQL Server sorgu iyileştiricisi birden çok sorgu planı adayı oluşturur ve ardından en düşük maliyete sahip sorgu planını seçer.

-T1236: Veritabanındaki lock kaynaklı performans problemlerini çözer.

-T9024: Log write waits’in artmasını önler.

T2371 : İndex yeniden oluşturması sırasında, önceki index’in istatistiklerinin korunmasını sağlar. 

T3226 : Her başarılı yedekleme sql server error log’a ve sistem günlüğüne log kayıdı atar. Gün içinde birden fazla yedekleme mesajının loglara düşmesi, bulmaya çalıştığımız bir ifadenin de aramasını zorlaştırır. Bu Trace Flag ile backup log girdilerinin gelmemesini sağlarız. Bunun için belirtilen T3226 trace flag’i kullanılır.

  • SQL Server Configuration Manager bölümünden Always on availability group yapısının aktif edilmesi lazım. Mevcutta hangi cluster altına eklenmişse ilgili cluster yapısının görünmesi gerekmektedir. Sıfırdan bir kurulum yapılacaksa sayfada bulunan Alwayon makalesinin okunması gerekmektedir. Mevcut olan bir Alwayson yapısına eklenmesi isteniyorsa Replica olarak AG yapısına eklememiz yeterli olacaktır.
  • Sql server servis hesabının ve sunucu üzerinde yetkili olan kullanıcıların ilgili Local admin gurubuna eklenmesi gerekmektedir.
net localgroup Administrators

Aşağıdaki komut ile ilgili kullanıcı local admin gurubuna eklenir.

Add-LocalGroupMember -Group "Administrators" -Member "YCL2026\sql_gMSA$"
  • Local security policy’de run kısmına secpol.msc yazılabilir. lock pages in memory, logon as service ,Log on as a batch job, Bypass traverse checking, perform volume maintenance tasks ayarlarının yapılması gerekmektedir.

Bypass traverse checking: Bu yapı  Windows dosyaları arasında   geçişler ve yapılacak  işlemler için  izin almadan çalışabilmesini sağlar.

Log on as a service:  Windows üzerinde tanımladığınız uygulamamın bir servis gibi çalışabilmesine izin verir. Bu yüzden sql server servis hesabını ve sql server agent servis hesabının burada tanımlanması gerekmektedir.

Lock Pages In Memory: Bu yapı ile sql server’ın sahip olduğu memory’in Windows’a geri verilmesi engellenmiş olur.

Log on as a batch job: SQL Server üzerinden windows üzerinde bir işlem yapılması gerektiğinde(örneğin bazı scriptler içeren bir bat dosyası çalıştırmak) sql server’ın kullanacağı hesabın burada tanımlanması gerekir.

Perform volume maintenance tasks: SQL Server Servis hesabına Windows üzerinde, perform volume maintenance tasks için gerekli yetki verildiği takdirde, sql server’dan file allocation isteği geldiğinde data dosyaları için 0 ile doldurma işlemi yapılmadan istenilen alan sql server’a tahsis edilir. Bu şekilde istenilen alan’ın 0 ile doldurulmasıyla geçecek süre kazanılmış olur.

  • Kurulum yapılan sunucunun herhangi availability group yapısına bağlanacaksa mevcutta bulunan Availability Group yapısına Replica’nın eklenilmesi gerekmektedir. Replica eklendikten sonra veritabanı taşıma işlemi aşamasına geçilmesi gerekmektedir.

4-) Veritabanlarının Taşınması işlemi

  • Yeni ortama ilgili veritabanının FULL-DIFF-LOG backupları alındıktan sonra No Recovery modun da Restore edilme gerekmektedir. Yeni ortamda veritabanı Restoring modunda bırakıldıktan sonra Auto seeding yapısı açıksa kendi eklenir. Yoksa veritabanı farklı bir sunucuda AG altındaysa yeni sunucuda Join edilmesi gerekmektedir.
  • Log Shipping yöntemi ile de veritabanımız başka bir ortama rahatlıkla taşınabilir.
  • Loginlerin taşınması gerekmektedir. Kullanıcıları şifreleri ve SID numaralarıyla taşımak için Microsoft’un sp_help_revlogin script’ini kullanarak tüm kullanıcılar alınıp yeni ortamda çalıştırılabilir.
  • Jobların scriptleri alınıp yeni ortama taşınması gerekmektedir.(F7 basılıp seçildikten sonra script alınması)
  • Server Level Permissions yetkilerinin kontrol edilmesi
  • Sql server engine error log ve agent error log konfigürasyonu yapılması log klasörleri için job yoksa oluşturulması gerekmektedir. Aşağıdaki komut ile sql server error log belirtilen sayıya kadar log dosyası oluşturmuş olacaktır.
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'NumErrorLogs', REG_DWORD, 10;

Agent Error log için belirli zaman aralıklarında log dosyası oluşturmaktadır. Bu işlemi manuel veya bir job aracılığıyla yapılabilir.

EXEC msdb.dbo.sp_cycle_agent_errorlog;

Error log için belirli zaman aralıklarında log dosyası oluşturmaktadır. BBu işlemi manuel veya bir job aracılığıyla yapılabilir.

EXEC master.sys.sp_cycle_errorlog;
  • Sunucuların takip işlemi için raporlama ortamlarına eklenmesi gerekmektedir.

Bu makalede sıfırdan bir kurulum işlemi için hangi durumda hangi işlemlerin yapılması gerektiğini detaylı bir şekilde görmüş olduk. Başka makalede görüşmek dileğiyle..

“Öyle ise emrolunduğun gibi dosdoğru ol.” Hud-112

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir