VPS'te veritabanı: PostgreSQL mi MySQL mi
Bir veritabanı neredeyse her zaman işlemciye değil, belleğe ve diske dayanır. Çalışan veri kümesi önbelleğe sığıyorsa sorgular ucuz bir sunucuda bile hızlı çalışır; sığmıyorsa her şeyi diskin hızı belirler. PostgreSQL ile MySQL arasında nasıl seçim yapılacağını, veritabanına ne kadar bellek ayrılacağını, hangi diskin alınacağını ve verilerin nasıl kaybedilmeyeceğini ele alıyoruz.
Çoğu site ve uygulama için veritabanı seçimi sizin yerinize çoktan yapılmıştır: WordPress, Bitrix ve PHP motorlarının büyük kısmı MySQL için tasarlanmıştır, Django, Rails ve Go ile yazılmış pek çok proje ise varsayılan olarak PostgreSQL kullanır. Seçim size kalmışsa iki veritabanı da tipik yükün altından kalkar; fark, hangisinin bakımının sizin için daha rahat olduğunda ve teknoloji yığınınızın neyi desteklediğindedir.
PostgreSQL mi MySQL mi?
- MySQL ve MariaDB, PHP tabanlı içerik yönetim sistemleri ve e-ticaret siteleri için standarttır. Her kontrol paneli ve her paylaşımlı hosting onları destekler, onlar için daha çok hazır kılavuz bulunur ve bir siteyi paylaşımlı hostingden VPS'e taşımak genellikle bir döküm alıp içe aktarmaktan ibarettir.
- PostgreSQL, karmaşık sorgular, raporlar ve sıkı veri bütünlüğü gerektiren uygulamalar için tercih edilir. Veri türleri açısından daha zengindir (JSONB, diziler, aralıklar) ve coğrafi veriler için PostGIS, vektör araması için pgvector gibi eklentileri destekler.
Proje yeniyse ve motor bir veritabanını dayatmıyorsa ekibin tanıdığını seçin: 4–8 GB belleği olan bir sunucuda ikisi arasındaki hız farkı, iyi ayarlanmış ile kötü ayarlanmış bir veritabanı arasındaki farktan küçüktür. Çalışan bir projede veritabanını değiştirmek pahalıdır, bu yüzden bu karar bir kez verilir.
Veritabanına ne kadar bellek ayrılmalı?
İki veritabanı da sık kullanılan verileri kendi önbelleğinde tutar ve bu önbelleğin boyutu, kurulumdan sonraki en önemli ayardır. Varsayılan değer küçüktür: ikisinde de 128 MB. Bu nedenle ayar yapılmazsa 8 GB belleği olan bir sunucudaki veritabanı bu belleği neredeyse hiç kullanmaz.
- PostgreSQL: belgelere göre veritabanına ayrılmış, 1 GB ve üzeri belleği olan bir sunucuda
shared_buffersiçin makul başlangıç değeri belleğin %25'idir. %40'tan fazlasını ayırmanın yararı pek olmaz, çünkü PostgreSQL işletim sisteminin dosya önbelleğine de dayanır. - MySQL (InnoDB): MySQL 8.4 belgelerine göre ayrılmış sunucularda
innodb_buffer_pool_sizearabellek havuzuna çoğu zaman fiziksel belleğin %80'ine kadarı verilir.
Her iki durumda da anahtar sözcük "ayrılmış"tır. Aynı VPS'te web sunucusu, PHP-FPM, Redis ve kuyruklar da çalışıyorsa veritabanına daha az kalır: sitenin de barındırıldığı 4 GB'lık bir sunucuda MySQL arabellek havuzuna 3 GB değil, 1–1,5 GB vermek mantıklıdır. Geri kalanı uygulama süreçlerine ve pay olarak gerekir; aksi halde sunucu swap'a düşer ve veritabanı küçük bir önbellekle çalıştığı durumdan daha yavaş hale gelir.
Sunucu boyutu için ölçüt "sıcak" verilerin hacmidir: sürekli erişilen tablolar ve indeksler. Bunlar önbelleğe tamamen sığıyorsa okumaların çoğu diske hiç ulaşmaz. accsly.io kataloğuna göre Kasım 2026 itibarıyla 4 GB bellekli bir VPS'in ortanca fiyatı ayda yaklaşık 22 dolar, 8 GB için 41 dolar, 16 GB için 74 dolar, 32 GB için 134 dolar. Fiyatlar katalogda rubleyle tutulur ve 7 Kasım 2026 kuruyla (1 dolar = 82,14 ruble) çevrilip yuvarlanmıştır. Bellek ve çekirdek seçimi hakkında daha fazlası Bir web sitesine ne kadar bellek ve kaç çekirdek gerekir? yazısında, 16 GB ve üzeri bellekli paketler ise 16 GB RAM'li VPS sayfasında.
Disk ve IOPS
Veriler belleğe sığmadığında ve ayrıca her yazma işleminde veritabanı diske küçük, rastgele işlemlerle erişir. Burada önemli olan, paket açıklamasındaki kapasite ya da sıralı hız değil, saniyedeki giriş-çıkış işlemi sayısı (IOPS) ve gecikmedir. NVMe, SATA SSD'yi tam da bu işlemlerde geride bırakır; sabit disk ise çalışan bir veritabanı için hiç uygun değildir: SSD'nin on binlerce işlem yaptığı yerde o saniyede yüzlerce işlem yapar.
accsly.io kataloğuna göre Kasım 2026 itibarıyla 29.603 VPS paketinin %41'inde NVMe belirtilmiş ve büyük paketlerde bu oran daha yüksek: 2 GB bellekli paketlerde %38, 32 GB bellekli paketlerde %45. Disklerin karşılaştırması NVMe mi SSD mi: web sitesi için fark var mı? yazısında, paket seçkisi NVMe VPS sayfasında.
VPS paket açıklamasındaki rakamlar bir üst sınırdır: disk, fiziksel sunucudaki komşularla paylaşılır ve birçok sağlayıcı sanal makine başına IOPS'u sınırlar. Gerçek hız, satın aldıktan sonra, sunucuyu hâlâ iade edebilecekken fio aracıyla 4–16 KB'lık bloklarla rastgele okuma ve yazma testi yapılarak ölçülür. Bunun deneme süresinde nasıl yapılacağı Ödeme yapmadan önce VPS ping ve hızı nasıl test edilir yazısında anlatılıyor.
Yedekler ve replikalar
Sağlayıcının aldığı disk anlık görüntüsü (snapshot) kullanışlıdır, ancak veritabanının en güvenilir kopyası değildir: yazma sırasında alınan bir görüntü, çökme sonrası kurtarma gerektirebilir ve genellikle aynı sağlayıcıda saklanır. Veritabanı için kopyalar, veritabanının kendi araçlarıyla ayrıca alınır:
- Mantıksal döküm: PostgreSQL için
pg_dump, MySQL içinmysqldump. InnoDB tabloları için döküm--single-transactionseçeneğiyle alınır; mysqldump belgelerinde belirtildiği gibi bu sayede tablolar kilitlenmeden tutarlı bir döküm elde edilir. Onlarca gigabayta kadar olan veritabanları için uygundur; büyük bir veritabanının dökümden geri yüklenmesi saatler sürebilir. - Belirli bir ana geri dönüş: veritabanı dosyalarının tam kopyası ile değişiklik günlüğünün kesintisiz arşivi. PostgreSQL'de bu WAL arşivleme, MySQL'de ikili günlüktür (binary log). Böylece dünkü gece yarısına değil, hatalı
DELETEkomutundan bir dakika öncesine dönebilirsiniz.
Kopyalar veritabanı sunucusunun dışında, örneğin nesne depolamada ya da başka bir veri merkezindeki ayrı bir VPS'te tutulur ve düzenli olarak geri yüklenerek test edilir. Yedeklemenin genel kuralları VPS yedekleri: stratejiler ve araçlar yazısında, kopyalar için depolama seçenekleri VPS'te dosya depolama: diskler ve nesne depolama yazısında.
Replika, veritabanının başka bir sunucudaki ve değişiklikleri neredeyse anında alan ikinci kopyasıdır: PostgreSQL'de akış replikasyonu, MySQL'de replikasyon. Ana sunucu çöktüğünde hızla ona geçmeyi ve raporları replikaya yönlendirerek ana sunucunun yükünü hafifletmeyi sağlar. Ancak yedeğin yerini tutmaz: yanlışlıkla silinen bir tablo saniyenin küçük bir kesrinde replikadan da silinir.
Yönetilen veritabanı mı, VPS'te kendi veritabanınız mı?
Bulut sağlayıcıları yönetilen veritabanları sunar: siz bağlantı adresini alırsınız, kurulum, güncellemeler, yedekler ve replikalar ise sağlayıcının işidir. Örneğin Amazon RDS'te otomatik yedekler 35 güne kadar saklanır ve belirli bir ana geri dönülebilir.
- Yönetilen veritabanı, ekipte veritabanının sorumluluğunu üstlenecek kimse olmadığında, otomatik devralmalı (failover) yüksek erişilebilirlik gerektiğinde ya da kesinti ek ücretten daha pahalıya geldiğinde kârlıdır. Dezavantajları: aynı bellek ve disk VPS'tekinden belirgin biçimde pahalıdır, bazı ayarlar ve eklentiler kullanılamaz, başka bir sağlayıcıya geçmek daha zordur.
- VPS'te kendi veritabanınız daha ucuzdur ve sürüm, ayarlar ve eklentiler üzerinde tam denetim sağlar. Karşılığında güncellemeler, yedekler, disk alanının izlenmesi ve geri yüklemenin test edilmesi sizin işinizdir. İki yaklaşım arasındaki fark hakkında daha fazlası Bulut sunucu mu VPS mi yazısında.
Küçük bir proje için yaygın bir orta yol, veritabanını siteyle aynı VPS'te tutmak ve günlük döküm ile değişiklik günlüğü arşivini ayrı bir depolamaya göndermektir. Veritabanı birkaç gigabaytlık "sıcak" veriye ulaştığında ya da uygulamayı yavaşlatmaya başladığında NVMe'li ayrı bir sunucuya taşınır ve veritabanı portu internete kapatılarak yalnızca uygulamanın adreslerinden erişime izin verilir. Böyle bir sunucuya uygun paketler PostgreSQL için VPS, MySQL için VPS ve Veritabanı için VPS sayfalarında toplanmış. Disk alanını ve sorgu gecikmesini hemen sunucu izlemeye eklemeye değer: dolan disk, veritabanının durmasının en sık nedenidir.