İÇİNDEKİLER
- •Linux üzerinde SQL Server'ı production'a hazır kuralım
- •Hangi SQL Server Sürümü Hangi Ubuntu Sürümünde Çalışır?
- •Başlamadan Önce: Gereksinimler ve Disk Düzeni
- •Ubuntu 24.04 Üzerine SQL Server 2025 Kurulumu
- •1. Microsoft paket imzalama anahtarını içe aktarın
- •2. SQL Server deposunu kaydedin
- •3. Paketi kurun
- •4. İlk yapılandırmayı çalıştırın
- •5. Servisin çalıştığını doğrulayın
- •6. Güvenlik duvarını dar kapsamlı açın
- •sqlcmd ve bcp Kurulumu
- •Kurulumdan Hemen Sonra SQL Server’ı Yapılandırın
- •Ubuntu’yu SQL Server İçin Ayarlayın
- •Linux’ta Temel Güvenlik
- •Uzaktan Bağlanma
- •Linux’ta SQL Server’ı Güncelleme
- •Windows’taki SQL Server’dan Farklar
- •Ubuntu’dan SQL Server’ı Kaldırma
- •Production Kontrol Listesi
- •SQL Server’ı Linux üzerinde production’da mı çalıştırıyorsunuz?
SQL Server, SQL Server 2017’den bu yana Linux üzerinde native olarak çalışıyor. Windows’takiyle aynı veritabanı motoru, aynı T-SQL, aynı yedek formatı ve aynı query optimizer; ince bir platform soyutlama katmanının üzerinde çalışıyor. Windows’ta alınan bir yedek Linux’ta, Linux’ta alınan bir yedek de Windows’ta restore edilebiliyor.
Kurulumun kendisi on dakika kadar sürer. Sunucuyu production’a hazır hale getirmek ise daha fazlasını ister: SQL Server sürümünüze uygun Ubuntu sürümü, mantıklı bir disk düzeni, kernel ayarları, bellek sınırları, tempdb dosyaları, TLS ve bir yama rutini. Bu rehber ikisini de ele alıyor; ana örnek olarak Ubuntu 24.04 üzerinde SQL Server 2025’i kullanıyor, Ubuntu 22.04 üzerinde SQL Server 2022 için de notlar veriyor.
Linux üzerinde SQL Server'ı production'a hazır kuralım
Kıdemli DBA ekibimiz sürüm ve dağıtım seçiminden disk düzenine, kernel ayarlarından yedekleme ve güvenliğe kadar kurulumun tamamında destek verir.
Hangi SQL Server Sürümü Hangi Ubuntu Sürümünde Çalışır?
Her SQL Server sürümünün, her Ubuntu sürümü için ayrı bir paket deposu vardır. Eşleşme yanlışsa depo çözümlenmez ve kurulum ilk apt-get komutunda başarısız olur.
| SQL Server sürümü | Ubuntu sürümü | Destek başlangıcı |
|---|---|---|
| SQL Server 2025 (17.x) | 24.04 LTS | SQL Server 2025 CU1 |
| SQL Server 2022 (16.x) | 22.04 LTS | SQL Server 2022 CU10 |
| SQL Server 2019 (15.x) | 20.04 LTS | SQL Server 2019 CU10 |
| SQL Server 2017 (14.x) | 18.04 LTS | SQL Server 2017 CU20 |
Yeni bir production sunucusu için Ubuntu 24.04 LTS üzerinde SQL Server 2025 kullanın. SQL Server 2025, Ubuntu dışında Red Hat Enterprise Linux’u (RHEL 10 dahil) destekliyor. SUSE Linux Enterprise Server ise SQL Server 2025’ten itibaren desteklenmiyor.
Başlamadan Önce: Gereksinimler ve Disk Düzeni
Microsoft’un minimum gereksinimleri mütevazıdır:
- x64 işlemci, 2 çekirdek, 2 GHz
- En az 2 GB bellek
- En az 6 GB boş disk alanı
- XFS veya ext4 dosya sistemi (Btrfs gibi diğer dosya sistemleri desteklenmez)
Bu değerler bir test ortamı için yeterlidir. Production için depolamayı kurulumdan önce planlayın:
- Veri dosyaları, transaction log’lar, tempdb ve yedekler için ayrı volume’lar kullanın. Böylece bir iş yükünün I/O’su diğerini etkilemez, dolan bir yedek diski de veritabanını durduramaz.
- Veri ve log dosyaları için Microsoft’un önerdiği dosya sistemi XFS‘tir. ext4 de desteklenir; 5.6’dan eski kernel’lerde XFS kullanın.
- Veri ve log volume’larını
noatimeile mount edin ve/etc/fstabiçinde UUID ile tanımlayın. - Sanal makinede sabit bellek kullanın; Hyper-V Dynamic Memory gibi dinamik bellek özelliklerini kullanmayın.
# Örnek /etc/fstab satırları (UUID'leri bulmak için: sudo blkid)
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx1 /sqldata xfs rw,attr2,noatime 0 0
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx2 /sqllog xfs rw,attr2,noatime 0 0
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx3 /sqltempdb xfs rw,attr2,noatime 0 0
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx4 /sqlbackup xfs rw,attr2,noatime 0 0
Ubuntu 24.04 Üzerine SQL Server 2025 Kurulumu
1. Microsoft paket imzalama anahtarını içe aktarın
curl -fsSL https://packages.microsoft.com/keys/microsoft.asc | sudo gpg --batch --yes --dearmor -o /usr/share/keyrings/microsoft-prod.gpg
2. SQL Server deposunu kaydedin
curl -fsSL https://packages.microsoft.com/config/ubuntu/24.04/mssql-server-2025.list | sudo tee /etc/apt/sources.list.d/mssql-server-2025.list
Ubuntu 22.04 üzerinde SQL Server 2022 için liste dosyası https://packages.microsoft.com/config/ubuntu/22.04/mssql-server-2022.list adresindedir.
Not
Eski rehberler apt-key ve add-apt-repository kullanır. apt-key güncel Ubuntu sürümlerinde kullanımdan kaldırıldığı için yukarıdaki keyring dosyası ve .list dosyası yöntemini kullanın.
3. Paketi kurun
sudo apt-get update
sudo apt-get install -y mssql-server
4. İlk yapılandırmayı çalıştırın
sudo /opt/mssql/bin/mssql-conf setup
Kurulum sizden bir sürüm seçmenizi ve sa parolasını belirlemenizi ister. Evaluation, Express ve SQL Server 2025’te Enterprise Developer ile Standard Developer ücretsizdir. Standard ve Enterprise için ürün anahtarı ya da Azure Arc üzerinden kullandıkça öde lisanslaması gerekir. SQL Server 2025’te Web sürümü artık yok.
sa parolası SQL Server parola politikasına uymalıdır: en az sekiz karakter; büyük harf, küçük harf, rakam ve sembol gruplarından en az üçünü içermeli; en fazla 128 karakter.
Script ile yapılan kurulumlarda aynı yapılandırma soru sormadan çalıştırılabilir:
sudo MSSQL_PID='Express' ACCEPT_EULA='Y' MSSQL_SA_PASSWORD='<GucluParola>' \
/opt/mssql/bin/mssql-conf -n setup
5. Servisin çalıştığını doğrulayın
systemctl status mssql-server --no-pager
6. Güvenlik duvarını dar kapsamlı açın
SQL Server TCP 1433’te dinler. Bu portu herkese değil, yalnızca ihtiyaç duyan ağlara açın:
sudo ufw allow from 10.10.20.0/24 to any port 1433 proto tcp
sudo ufw status
sqlcmd ve bcp Kurulumu
Komut satırı araçları ayrı bir depodan gelir:
curl -fsSL https://packages.microsoft.com/config/ubuntu/24.04/prod.list | sudo tee /etc/apt/sources.list.d/mssql-release.list
sudo apt-get update
sudo apt-get install -y mssql-tools18 unixodbc-dev
echo 'export PATH="$PATH:/opt/mssql-tools18/bin"' >> ~/.bashrc
source ~/.bashrc
Ardından bağlanıp kısa bir test yapın:
sqlcmd -S localhost -U sa -C
CREATE DATABASE TestDB;
GO
USE TestDB;
CREATE TABLE dbo.Inventory (id INT PRIMARY KEY, name NVARCHAR(50), quantity INT);
INSERT INTO dbo.Inventory VALUES (1, N'koli', 150), (2, N'palet', 40);
SELECT * FROM dbo.Inventory WHERE quantity > 100;
GO
İpucu
mssql-tools18 araçları bağlantıları varsayılan olarak şifreler; yeni bir kurulum ise self-signed sertifika kullanır. -C seçeneği bağlantıyı şifreli tutarak bu sertifikaya güvenir. Bu, şifrelemeyi -No ile kapatmaktan daha doğru bir tercihtir; production’da aşağıda anlatıldığı gibi gerçek bir sertifika kurun.
Kurulumdan Hemen Sonra SQL Server’ı Yapılandırın
Linux’ta, Windows’ta Configuration Manager’dan yapılan instance ayarları mssql-conf ile yapılır. Değişikliklerden sonra servisi yeniden başlatın.
# Yeni veritabanları ve yedekler için varsayılan konumlar (klasörlerin sahibi mssql olmalı)
sudo mkdir -p /sqldata /sqllog /sqlbackup
sudo chown mssql:mssql /sqldata /sqllog /sqlbackup
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultdatadir /sqldata
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultlogdir /sqllog
sudo /opt/mssql/bin/mssql-conf set filelocation.defaultbackupdir /sqlbackup
# SQL Server sürecinin bellek sınırı (MB)
sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 28672
# SQL Server Agent kuruludur ama varsayılan olarak kapalıdır
sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true
sudo systemctl restart mssql-server
- Bellek: Linux’ta SQL Server varsayılan olarak fiziksel belleğin %80’ine kadarını kullanabilir. Ayrılmış bir sunucuda bu genellikle makuldür; işletim sistemine ve ajanlara yeterli pay bırakın ve SQL Server içinde
max server memorydeğerini de ayarlayın. Doğru boyutlandırmayı max server memory yazımızda anlatıyoruz. - tempdb: Linux’ta kurulum tek bir tempdb veri dosyası oluşturur. Kurulumdan sonra, genellikle çekirdek başına bir ve en fazla sekiz olacak şekilde, eşit boyutlu dosyalar ekleyin. Ayrıntılar için tempdb best practice’leri yazımıza bakabilirsiniz.
- SQL Server Agent: yedekleri, index bakımını veya CHECKDB’yi SQL Server’ın kendisinden zamanlıyorsanız açın.
- Write-through ve FUA: Ubuntu 18.04 veya üzeri, XFS (kernel 4.18+) ya da ext4 (kernel 5.6+) ve Forced Unit Access destekleyen bir depolamada Microsoft, trace flag 3979 ile
control.alternatewritethrough = 0ayarını öneriyor. Diğer durumlarda varsayılanları koruyun.
Ubuntu’yu SQL Server İçin Ayarlayın
Microsoft, kernel önerilerini mssql adlı bir TuneD profilinde topluyor. Bu profil RHEL ile birlikte geliyor; Ubuntu’da tuned paketini kurup profili kendiniz oluşturmanız gerekir.
sudo apt-get install -y tuned
sudo mkdir -p /usr/lib/tuned/mssql
sudo tee /usr/lib/tuned/mssql/tuned.conf > /dev/null <<'EOF'
[main]
summary=Optimize for Microsoft SQL Server
include=throughput-performance
[cpu]
force_latency=5
[sysctl]
vm.swappiness = 1
vm.dirty_background_ratio = 3
vm.dirty_ratio = 80
vm.dirty_expire_centisecs = 500
vm.dirty_writeback_centisecs = 100
vm.transparent_hugepages=always
vm.max_map_count=1600000
net.core.rmem_default = 262144
net.core.rmem_max = 4194304
net.core.wmem_default = 262144
net.core.wmem_max = 1048576
kernel.numa_balancing=0
EOF
sudo tuned-adm profile mssql
tuned-adm active
| Ayar | Önerilen değer | Neden |
|---|---|---|
| vm.swappiness | 1 | SQL Server belleğinin swap’e atılması yerine RAM’de kalmasını sağlar |
| vm.max_map_count | En az 262144 (profilde 1600000) | Varsayılan 65536 SQL Server için düşük kalabilir |
| kernel.numa_balancing | 0 | Otomatik NUMA dengeleme, çok node’lu NUMA sistemlerde SQL Server’ı yavaşlatır |
| Transparent huge pages | Açık (çok instance’lı sunucularda madvise) | Tek instance için en tutarlı performansı verir |
| CPU governor | performance | throughput-performance taban profiliyle uygulanır |
| Disk read-ahead | 4096 | blockdev ile her cihaz için ayrı ayarlanır; profil kapsamında değildir |
Uyarı
Yine de doğru boyutlandırılmış bir swap dosyası bulundurun. vm.swappiness = 1 swap kullanımını nadir hale getirir; ancak hiç swap yoksa ani bir bellek artışında kernel’in out-of-memory killer’ı SQL Server sürecini durdurabilir.
Linux’ta Temel Güvenlik
- sa hesabını kapatın: kendi sysadmin login’inizi oluşturun, onunla yeniden bağlanın ve
ALTER LOGIN sa DISABLE;çalıştırın. Linux’ta Windows kimlik doğrulaması için sunucuyuadutilile Active Directory’ye bağlayın. - Ağı kısıtlayın: 1433 yalnızca uygulama sunucularına ve yönetim ağlarına açık olsun. SQL Server’ı asla doğrudan internete açmayın.
- Gerçek sertifikayla TLS kullanın: mssql-conf ile
network.tlscert,network.tlskeyvenetwork.forceencryptionayarlarını yapın. Linux üzerinde SQL Server 2025, TLS 1.3’ü destekliyor. - İlk günden yedek alın: yedek formatı Windows’takiyle aynıdır. Yedekleri ayrı bir volume’a ya da mount edilmiş bir ağ paylaşımına yazın ve sunucu dışına kopyalayın.
Yetkilerden denetime kadar sıkılaştırma listesinin geri kalanı Linux’ta da aynen geçerli; SQL Server güvenlik sıkılaştırma rehberimize göz atabilirsiniz.
Uzaktan Bağlanma
SSMS, MSSQL eklentisiyle VS Code ve tüm uygulama sürücüleri, Linux’taki SQL Server’a Windows’takine bağlanır gibi bağlanır: sunucu adı ya da IP adresi ve 1433 portu. Lokal sqlcmd çalışırken uzaktan bağlantı başarısız oluyorsa sırasıyla şunları kontrol edin:
- İstemcinin subnet’i için güvenlik duvarı kuralı var mı (
sudo ufw status)? - SQL Server beklenen portu dinliyor mu (
sudo ss -tlnp | grep 1433)? - Port
network.tcpportile değiştirilmiş mi, ya da istemci ile sunucu arasındaki bir ağ güvenlik duvarı bağlantıyı engelliyor mu? - İstemci sertifika doğrulamasında mı hata alıyor? İstemcide şifrelemeyi kapatmak yerine güvenilir bir sertifika kurun.
Linux’ta SQL Server’ı Güncelleme
Cumulative update’ler aynı depodan gelir. Paketi yeniden kurmak sunucuyu en son CU’ya taşır:
sudo apt-get update
sudo apt-get install -y mssql-server
# Mevcut build'leri listeleyip belirli bir build'i kurun (geri dönüş için de kullanılır)
apt-cache madison mssql-server
sudo apt-get install -y mssql-server=<sürüm>
Uyarı
Sıradan bir apt-get upgrade, mssql-server’ı da günceller ve servisi yeniden başlatır. Production sunucularında paketi sabitleyin (sudo apt-mark hold mssql-server) ve CU’ları, build’in bilinen sorunlar listesinde olmadığını kontrol ettikten sonra planlı bir bakım penceresinde kurun. Nedenini tehlikeli SQL Server build’leri yazımızda anlatıyoruz.
Windows’taki SQL Server’dan Farklar
Motor aynı, ama etrafındaki platform farklı:
- Analysis Services ve Power BI Report Server yalnızca Windows’ta çalışır. Integration Services Linux’ta bazı kısıtlamalarla çalışır.
- Always On availability group’lar ve failover cluster instance’lar, Windows Server Failover Clustering yerine Pacemaker kullanır. AG’lerin nasıl çalıştığını Always On rehberimizde anlatıyoruz.
- Windows kimlik doğrulaması için Active Directory’ye katılım ve keytab yapılandırması gerekir.
- Yapılandırma Configuration Manager yerine mssql-conf ile yapılır; log’lar
/var/opt/mssql/logaltındadır. - Lisanslama Windows’takiyle aynıdır: çekirdek başına ya da Server + CAL.
Ubuntu’dan SQL Server’ı Kaldırma
sudo apt-get remove -y mssql-server
# Veriyi, log'ları ve yapılandırmayı kalıcı olarak siler
sudo rm -rf /var/opt/mssql/
Kritik
Paketi kaldırmak veritabanlarını /var/opt/mssql altında bırakır; ancak bu klasörü silmek master dahil tüm veritabanlarını yok eder. Bir şey silmeden önce yedek alıp doğrulayın ve özel klasörlerde duran veritabanı dosyalarını taşıyın.
Production Kontrol Listesi
- SQL Server sürümü ile Ubuntu sürümü desteklenen bir eşleşme.
- Veri, log, tempdb ve yedek, noatime ile mount edilmiş ayrı XFS volume’larda.
- mssql TuneD profili aktif, swap yapılandırılmış.
- Bellek sınırı ve max server memory ayarlanmış.
- tempdb’de eşit boyutlu birden fazla veri dosyası var.
- Sunucuda job çalışıyorsa SQL Server Agent açık.
- sa kapalı, 1433 kısıtlı, TLS güvenilir bir sertifika kullanıyor.
- Yedekler zamanlanmış, sunucu dışına kopyalanıyor ve restore testi yapılıyor.
- mssql-server apt’de sabitlenmiş ve planlı olarak yamalanıyor.
İlgili Yazılar
Linux Üzerinde SQL Server Desteği
SQL Server’ı Linux üzerinde production’da mı çalıştırıyorsunuz?
Aryasoft’un kıdemli DBA ekibi, disk düzeni ve kernel ayarlarından Pacemaker ile yüksek erişilebilirliğe, yedekleme, güvenlik ve düzenli yamalamaya kadar Linux üzerindeki SQL Server sunucularınızı tasarlar ve kurar.