Narhost

Veritabanı Sunucusu Ne Zaman Ayrılmalı, İşaretler ve Bedeli

Veritabanı Sunucusu Ne Zaman Ayrılmalı, İşaretler ve Bedeli — Narhost Sunucu rehberi kapak görseli

İçindekiler

Kısaca özet

  • Veritabanı sunucusu, web uygulamasının verisini tutan MySQL, MariaDB veya PostgreSQL gibi motoru ayrı bir makinede çalıştırmaktır; küçük ve orta projelerde web ile veritabanı aynı sunucuda durur.
  • Ayırmanın dört güçlü işareti vardır: disk giriş-çıkışında sürekli bekleme, web ve veritabanının aynı belleği paylaşırken birbirini sıkıştırması, birden fazla uygulama sunucusuna geçiş ihtiyacı ve veritabanını internetten tamamen yalıtma isteği.
  • Ayırmanın bedeli ağ gecikmesi, ikinci sunucunun maliyeti ve iki ayrı işletim sistemini güncel tutma yüküdür.
  • Tek sunucuda yavaşlayan bir site çoğu zaman eksik indeks ya da yetersiz önbellek yüzünden yavaştır; ayırmadan önce sorgular ve bellek ayarı gözden geçirilmelidir.
  • Ayrı veritabanı sunucusu kurulduğunda veritabanı portu yalnız uygulama sunucusunun adresine açılır, yedek ise iki sunucunun dışında bir yerde tutulur.

Site büyüdü, VPS’in bellek grafiği sürekli tavanda, yoğun saatlerde sayfalar saniyelerce bekliyor. Geliştiriciniz “veritabanını ayrı bir sunucuya alalım” diyor, bir başkası “önce sorguları düzeltelim” diyor. İkisi de haklı olabilir. Veritabanı sunucusu ayırmak doğru zamanda yapıldığında ciddi rahatlama sağlar, erken yapıldığında ise iki kat bakım ve yeni bir gecikme kaynağı getirir. Karar, hangi kaynağın gerçekten tükendiğini ölçerek verilir.

Veritabanı Sunucusu Ayırmak Ne Demek

Tek sunucu mimarisinde web sunucusu, PHP veya uygulama süreçleri ve veritabanı motoru aynı işletim sistemi üzerinde çalışır. Uygulama veritabanına yerel bağlantıyla ulaşır; araya ağ girmez. Ayrık mimaride ise veritabanı motoru kendi sunucusuna taşınır. Uygulama sunucusu her sorguyu ağ üzerinden gönderir, veritabanı makinesi cevabı ağ üzerinden döndürür.

Bu değişiklik kod tarafında genellikle tek bir satırdır: bağlantı ayarındaki “localhost” yerine yeni makinenin adresi yazılır. Asıl iş altyapı tarafındadır. Yeni sunucunun kurulması, veritabanı motorunun uzak bağlantıya açılması, güvenlik duvarının yazılması, yedeklerin yeniden planlanması ve iki makinenin birlikte izlenmesi gerekir.

Bilgi

Veritabanı motorları varsayılan olarak yalnız yerel bağlantıyı dinler. Veritabanını ayrı bir makineye aldığınızda motorun dinleme adresini ve kullanıcı yetkilerini uzak bağlantıya göre değiştirmeniz gerekir. MariaDB’nin uzak bağlantı rehberi bu ayarların mantığını anlatır.

Ayırma Zamanının Geldiğini Gösteren İşaretler

Disk giriş-çıkışı darboğazı

Sunucu izleme ekranında işlemci boşta beklerken yük ortalaması yüksekse ve disk bekleme süresi (iowait) sürekli artıyorsa, disk hem web dosyalarına hem veritabanına yetişemiyor demektir. Büyük tablolarda indeks taraması, geçici tablolar ve sık yazılan günlükler aynı diski kullanan web sürecini de yavaşlatır. Veritabanını kendi diskine sahip bir sunucuya almak bu çekişmeyi bitirir.

Bellek baskısı

Veritabanı motoru, sık okunan veriyi bellekte tutarak hızlanır. Aynı sunucuda PHP işçileri de her istekte bellek ister. Trafik arttıkça ikisi aynı belleği paylaşır; motorun önbelleği küçülür, işletim sistemi takas alanına düşer ve her şey yavaşlar. Web tarafına daha fazla işçi eklemek veritabanının önbelleğini, veritabanı önbelleğini büyütmek de web işçilerini sıkıştırır. Bu çekişme ayrık mimarinin en klasik gerekçesidir.

Yatay ölçekleme ihtiyacı

Tek uygulama sunucusu yetmediğinde önüne bir dengeleyici koyup iki ya da üç uygulama sunucusuna geçersiniz. Bu sunucuların hepsi aynı veriyi görmek zorundadır; veritabanı bu noktada ister istemez ayrı bir veritabanı sunucusu olur. Bu geçişin ayrıntıları yük dengeleme yazısında anlatılıyor.

Güvenlik izolasyonu

Ayrık mimaride veritabanı internete hiç açılmaz; yalnız uygulama sunucusundan gelen bağlantıyı kabul eder. Web tarafında bir açık istismar edilse bile saldırganın veritabanı makinesine doğrudan erişimi olmaz. Kişisel veri, ödeme kaydı ya da sağlık bilgisi tutan uygulamalarda bu ayrım, performanstan bağımsız bir gerekçedir.

veritabanı sunucusu ayırma kararını ölçüm, işaret, bedel ve güvenli bağlantı adımlarıyla gösteren şema
Önce ölç, işareti doğrula, bedeli hesapla, sonra bağlantıyı yalnız uygulama sunucusuna aç.

Ayrı Sunucunun Bedeli Nedir

İlk bedel ağ gecikmesidir. Yerel bağlantıda bir sorgunun gidiş-dönüşü ihmal edilecek kadar kısadır; ağ üzerinden her sorguya milisaniyenin altında da olsa ek süre eklenir. Tek sayfada birkaç sorgu çalıştıran bir sitede bu fark hissedilmez. Ancak bir sayfayı üretmek için yüzlerce küçük sorgu gönderen, özellikle döngü içinde tek tek kayıt çeken uygulamalarda toplam gecikme belirgin biçimde büyür.

İkinci bedel maliyet ve yönetimdir. İki sunucunun kirası, iki işletim sisteminin güncellemesi, iki ayrı güvenlik duvarı ve izleme demektir. Yönetimsiz bir VPS’te bu işlerin hepsi sizde kalır. Üçüncü bedel ise tek arıza noktasının ortadan kalkmamasıdır: veritabanı makinesi tek başına duruyorsa o sunucu kapandığında bütün uygulama sunucuları da hata verir.

Dikkat

Yavaşlığın kaynağı eksik indeks, önbelleksiz sorgu ya da döngü içinde çalışan yüzlerce küçük sorgu ise veritabanı sunucusu ayırmak sorunu çözmez, ağ gecikmesiyle büyütür. Önce yavaş sorgu günlüğünü açın ve en ağır sorguları düzeltin; bellek ayarını sunucu boyutuna göre yapın. Bunlardan sonra hâlâ kaynak yetmiyorsa ayırmayı konuşun.

Tek Sunucu mu Ayrı Veritabanı Sunucusu mu, Karar Tablosu

Aşağıdaki tablo iki mimariyi karar verirken bakılan eksenlerde karşılaştırıyor.

Ölçüt Tek sunucu (web + veritabanı) Ayrı veritabanı sunucusu
Uygun ölçek Tek site, orta trafik, tek uygulama sunucusu Yoğun trafik, birden fazla uygulama sunucusu
Sorgu gecikmesi En düşük, yerel bağlantı Her sorguya ağ gecikmesi eklenir
Kaynak çekişmesi Web ve veritabanı aynı bellek ve diski paylaşır Her katman kendi kaynağını kullanır
Güvenlik Veritabanı yerel dinler, web açığı doğrudan veriye yakındır Veritabanı internete kapalı, yalnız uygulama sunucusuna açık
Yönetim yükü ve maliyet Tek işletim sistemi, tek kira İki işletim sistemi, iki kira, iki izleme

Özel Ağ ve Bağlantı Güvenliği

İki sunucu arasındaki trafik mümkünse internete çıkmayan bir özel ağ üzerinden akmalıdır. Sağlayıcınızın aynı hesap altındaki sunucular için özel ağ sunup sunmadığını sipariş öncesinde sorun. Özel ağ yoksa veritabanı makinesinin güvenlik duvarında veritabanı portunu yalnız uygulama sunucusunun IP adresine açın, diğer bütün adreslerden gelen istekleri reddedin ve bağlantıyı TLS ile şifreleyin.

Veritabanı kullanıcısını da aynı mantıkla kısıtlayın: uygulamanın kullanıcısı yalnız uygulama sunucusunun adresinden bağlanabilsin ve yalnız kendi veritabanında yetkili olsun. Uzaktan bağlantının adım adım nasıl kurulacağı ve istemciden nasıl test edileceği destek merkezindeki MySQL sunucuya bağlanma kartında anlatılıyor.

Örnek senaryo

Günde 8.000 siparişe ulaşan bir e-ticaret sitesi, 8 GB bellekli tek bir VPS’te çalışıyordu. Kampanya saatlerinde veritabanı önbelleği küçülüyor, disk bekleme süresi yükseliyor, ödeme adımı 6 saniyeye çıkıyordu. Ekip önce yavaş sorgu günlüğünden en ağır üç sorguya indeks ekledi; ödeme adımı 3 saniyeye indi ama kampanya saatlerinde tıkanma sürdü. Ardından veritabanını ayrı bir veritabanı sunucusuna taşıdılar, motorun belleğini o sunucunun büyük kısmına ayırdılar ve uygulama sunucusundaki PHP işçi sayısını artırdılar. Ödeme adımı kampanya saatlerinde de 2 saniyenin altında kaldı.

Yedekleme Planı Nasıl Değişir

Ayrık mimaride yedek iki parçaya bölünür. Uygulama sunucusunda kod, yüklenen dosyalar ve yapılandırma durur; veritabanı makinesinde ise veri. İkisinin yedeği aynı zaman aralığında alınmalıdır, yoksa geri yüklemede dosyalar ile veritabanı birbirini tutmaz. Veritabanı yedeği, çalışan motoru kilitlemeyen bir yöntemle alınmalı ve sunucunun dışındaki bir depoya kopyalanmalıdır.

Yönetimsiz sunucularda bu planı kurmak sunucu sahibinin işidir. Veritabanı sunucusu arızalandığında yedeği aynı makinede tutmak hiçbir işe yaramaz. En az bir kopyanın farklı bir konumda durduğundan ve geri yükleme denemesinin gerçekten yapıldığından emin olun.

Veritabanı Sunucusu İçin Kaynak Nasıl Seçilir

Veritabanı sunucusunda belirleyici kaynak bellek ve disk hızıdır. Sık kullanılan verinin tamamı ya da büyük kısmı belleğe sığdığında sorgular diske inmeden cevaplanır. Bu yüzden veritabanı makinesi için çekirdek sayısından önce bellek ve NVMe disk önceliklidir. Uygulama sunucusu ise daha çok işlemci ister, çünkü sayfa üretimi orada yapılır. Genel boyutlandırma mantığı için VPS için ne kadar RAM ve CPU gerekir yazısına bakabilirsiniz.

Sanal sunucu türünü seçerken de iş yükünü düşünün. Sürekli yüksek sorgu yükü olan bir veritabanı makinesinde çekirdeklerin size ayrılmış olması tutarlılık sağlar. VPS, VDS ve bulut sunucu arasındaki bu farkı tartan VPS mi VDS mi bulut sunucu mu karşılaştırması karar için temel kaynaktır.

Sonuç

Veritabanı sunucusu ayırmak bir performans refleksi değil, ölçülmüş bir ihtiyaca cevaptır. Disk beklemesi, bellek çekişmesi, birden fazla uygulama sunucusu ya da veri yalıtımı ihtiyacından biri varsa ayırın; yoksa önce sorguları ve önbelleği düzeltip tek sunucuda kalın.

Ayırmadan Önce Kontrol Listesi

  • Yavaş sorgu günlüğünü açın ve en ağır sorguları indeksle düzeltin.
  • Bellek, disk bekleme süresi ve işlemci grafiğini en az bir haftalık yoğun dönemde izleyin.
  • Veritabanı motorunun bellek ayarının sunucu boyutuna uygun olduğunu kontrol edin.
  • Uygulamanın sayfa başına kaç sorgu gönderdiğini ölçün; döngü içi sorguları azaltın.
  • İki sunucu arasında özel ağ olup olmadığını sağlayıcınıza sorun.
  • Veritabanı portunu yalnız uygulama sunucusunun IP adresine açacak kuralı önceden yazın.
  • Yedeklerin iki sunucunun dışında bir yerde tutulacağı planı hazırlayın ve geri yüklemeyi deneyin.

Sıkça sorulan sorular

Veritabanı sunucusu ayırmak siteyi her zaman hızlandırır mı?

Hayır. Darboğaz kaynak çekişmesiyse hızlandırır; darboğaz kötü yazılmış sorgu ya da eksik indeksse ağ gecikmesi eklendiği için yavaşlatabilir bile. Ayırmadan önce yavaş sorguları ve bellek ayarını gözden geçirmek, kararın doğru olup olmadığını gösterir. Ölçmeden yapılan ayırma çoğunlukla hayal kırıklığıyla biter.

Paylaşımlı hostingte veritabanı zaten ayrı mı?

Paylaşımlı hostingte veritabanının nerede çalıştığı sağlayıcının mimarisine bağlıdır ve sizin kontrolünüzde değildir. Sizin göreceğiniz şey paket sınırlarıdır. Veritabanı mimarisini kendiniz belirlemek istiyorsanız bu, VPS veya VDS gerektiren bir karardır.

WordPress için ayrı veritabanı sunucusu gerekir mi?

Tek bir WordPress sitesinde çoğu zaman gerekmez. Sayfa önbelleği ve nesne önbelleği doğru kurulduğunda veritabanına giden sorgu sayısı ciddi ölçüde azalır. Yoğun WooCommerce mağazalarında, çok sayıda giriş yapmış kullanıcısı olan üyelik sitelerinde ya da birden fazla uygulama sunucusu kullanıldığında ayrım anlamlı hâle gelir.

Veritabanı ile uygulama sunucusu farklı veri merkezlerinde olabilir mi?

Teknik olarak olabilir ama önerilmez. Her sorgu iki veri merkezi arasındaki mesafeyi kat eder ve gecikme milisaniyeler düzeyine çıkar; sayfa başına onlarca sorgu çalışan bir uygulamada bu fark doğrudan hissedilir. İki sunucuyu aynı veri merkezinde ve mümkünse aynı özel ağda tutmak gerekir.

Ayrı veritabanı sunucusunu kim yönetir?

Yönetimsiz VPS ve VDS’te veritabanı sunucusunun işletim sistemi, veritabanı motoru, güvenlik duvarı ve yedeği sunucu sahibinin sorumluluğundadır. Sağlayıcı donanımı, ağı ve altyapıyı sağlar. Bu yüzden ayrık mimariye geçmeden önce iki sunucuyu kimin güncelleyeceğini ekipte netleştirmek gerekir.

Narhost’ta

VPS paketlerimiz NVMe disk, 50 Gbps port ve anında kurulumla gelir; root erişimi sizde olduğu için veritabanı motorunu, bellek ayarını ve güvenlik duvarını kendiniz belirlersiniz. Güncel paketler VPS sunucu sayfasında.

VPS paketlerini incele

Bu konuyla ilgili Narhost hizmetleri

Yazıda anlatılan ihtiyaca doğrudan karşılık gelen paketler.

Alışveriş deneyiminizi iyileştirmek için yasal düzenlemelere uygun çerezler (cookies) kullanıyoruz. Detaylı bilgiye Gizlilik ve Çerez Politikası sayfamızdan erişebilirsiniz.