Veritabanı ayrı VDS’e ne zaman çıkar?
Küçük sitede MySQL ile PHP aynı makinededir. Ayrı DB VDS: CPU’yu web’den ayırmak, birden fazla uygulamanın aynı MariaDB’ye bağlanması, yedek/IOPS’u izole etmek. Erken ayırma ağ gecikmesi ve TLS maliyeti ekler; 100 istek/sn yoksa gerekmeyebilir.
PostgreSQL vs MySQL: uygulama sürücüsü belirler. Redis cache’tir, asıl kayıt değildir. “DB VDS” RAM ve NVMe işidir; 16 çekirdek 4 GB RAM ile InnoDB buffer sığmaz. Ayrı ağ (private IP) public 3306’dan iyidir. SSL require ile kullanıcı oluşturun. max_allowed_packet büyük import’u keser. wait_timeout kısa tutulursa PHP “MySQL server has gone away” üretir. PostgreSQL’de max_wal_size yedek I/O’sunu etkiler. İzleme olmadan “DB yavaş VDS büyüt” çoğu zaman eksik indekstir: EXPLAIN ANALYZE.
MySQL/MariaDB boyutlandırma
innodb_buffer_pool_size kabaca RAM’in %50–70’i (aynı makinede OS+PHP varsa daha az). 8 GB DB VDS’te 4–5 GB pool gerçekçi. max_connections her bağlantı bellek yer; 500 bağlantı 2 GB’ı bitirir. NVMe fsync maliyeti HDD’ye göre düşük olsa da raid/battery yoksa innodb_flush_log_at_trx_commit=1 duruşma için doğrudur.
apt install mariadb-server. bind-address 10.x veya özel ağ; 0.0.0.0 + zayıf root parola internet tarama kurbanıdır. Kullanıcı: 'app'@'WEB_VDS_IP' IDENTIFIED BY ... GRANT yalnızca gereken DB. ufw allow from WEB_IP to any port 3306.
PostgreSQL notları ve yedek
apt install postgresql. pg_hba.conf hostssl veya host satırı yalnızca uygulama IP. shared_buffers RAM’in ~%25’i klasik başlangıç. pg_dump -Fc günlük, WAL arşiv ileri. mysqldump --single-transaction InnoDB için. Yedekleri DB sunucusunun kendi diskine tek kopya bırakmayın.
| Senaryo | RAM | Disk | Ayrı VDS? |
|---|---|---|---|
| WP blog | 2–4 GB (paylaşımlı) | NVMe 50 GB | Hayır |
| Woo orta | 8 GB | 100 GB | Belki |
| Çok uygulama | 16 GB | 200 GB+ | Evet |
| Analitik / ağır rapor | 32 GB | IOPS kritik | Evet |
Teşhis: yavaş sorgu ve bağlantı
slow_query_log veya pg_stat_statements. EXPLAIN. Index eksikliği CPU’yu “DB yavaş VDS al” diye yanıltır. iowait varsa buffer pool küçük veya disk tavanı. max_connections doldu: uygulama bağlantı havuzu (PHP-FPM, PgBouncer).
SSL uygulama-DB arasında iç ağda bile iyi fikirdir. Şifreyi web wp-config’de saklarsınız; git’e koymayın. Replikasyon (primary-replica) bu yazının ötesi; önce yedek ve izleme. innodb_log_file_size eski varsayılan küçük kalabilir; değiştirmek restart ister. table_open_cache ve tmpdir NVMe’de olsun. PostgreSQL’de work_mem her sıralamayı çarpar; 16 MB × bağlantı sayısı RAM’i yer. Bağlantı havuzu yoksa PHP her istekte yeni TCP açar — latency 0.5 ms olsa da 200 child ölçeklemez. iptables/ufw’de 3306/5432’yi 0.0.0.0/0 açmak “DB VDS aldım yine hack” hikâyesinin başlangıcıdır. monitoring: SHOW GLOBAL STATUS LIKE 'Threads_running'; pg_stat_activity.
Emriva ürün eşlemesi
Bu bölüm ürün eşlemesidir. DB VDS için ECC’li Xeon hatları ve NVMe üst paketler (RAM 16–32 GB) uygun düşer. Web ayrı, DB ayrı iki Xeon sık görülen çizimdir. Günlük snapshot dump’ın yerine geçmez; mysqldump/pg_dump alın.
3306’yı dünyaya açmayın. Destekte bind-address ve ufw durumunu yazın, şifre yazmayın.
