PHP ve MySQL ikilisi, web geliştirme dünyasının iki on yıldır en yaygın stack’idir. WordPress, WooCommerce, Magento, Laravel ve sayısız özel uygulama bu kombinasyon üzerine inşa edilmiştir. Ancak web hosting MySQL kararını verirken artık tek bir seçeneğiniz yok — shared hosting, kendi yönettiğiniz VPS veya tamamen yönetilen DBaaS arasından seçim yapmanız gerekiyor. Bu rehberde üç yaklaşımı karşılaştırıyor, hangisinin sizin senaryonuza uygun olduğunu, gerçek performans rakamlarını ve neden ölçek büyüdükçe DBaaS’a geçmenin kaçınılmaz olduğunu anlatıyoruz.
Web hosting MySQL nedir?
Web hosting MySQL, web sitenizin veya uygulamanızın veritabanını çalıştırmak için MySQL sunucusunu sağlayan bir hizmettir. En temel haliyle bir veya birden fazla MySQL veritabanı oluşturma, kullanıcı tanımlama ve uygulamanızın connection string ile bağlanmasını mümkün kılar.
PHP + MySQL stack’in tarihsel önemi
LAMP (Linux + Apache + MySQL + PHP), açık kaynak web ekosisteminin temel taşı oldu. WordPress’in dünyanın en yaygın CMS’i olması, bu stack’in pratikte ne kadar olgun olduğunu gösterir.
WordPress, Magento, Laravel için tipik gereksinimler
| Uygulama | Min. RAM | Min. CPU | DB boyutu | Aylık trafik |
|---|---|---|---|---|
| WordPress (blog) | 512 MB | 1 vCPU | <1 GB | <50K |
| WooCommerce | 2 GB | 2 vCPU | 1-10 GB | 50-500K |
| Magento | 4 GB | 4 vCPU | 5-50 GB | 100K-1M |
| Laravel SaaS | 4 GB+ | 4 vCPU+ | 5-100 GB | 100K+ |
Üç farklı yaklaşım: hangisi size uygun?
Shared hosting (cPanel + MySQL)
En ekonomik seçenek. cPanel veya benzeri panel üzerinden tıklayarak MySQL DB oluşturur, phpMyAdmin ile yönetirsiniz. Ancak CPU/RAM paylaşımlı, max DB boyutu sınırlı (genelde 1-2 GB), connection sayısı sıkı kısıtlı. WordPress küçük blog için yeterli, e-ticaret ölçeğinde yetersiz.
VPS / Cloud Server üzerinde self-managed MySQL
Bir cloud server kiralar, MySQL’i kendiniz kurar ve yönetirsiniz. Tam kontrol vardır — versiyon, ayarlar, eklentiler hepsi sizin elinizde. Ama backup, monitoring, güvenlik yamaları, replikasyon — hepsi sizin sorumluluğunuzdadır. Tipik küçük takım için bu haftada 5-10 saatlik sürekli yük demektir. dedicated sunucu kiralama rehberimizde altyapı seçimini detaylandırıyoruz.
Managed Database as a Service (DBaaS)
DBaaS, MySQL sunucusunu sağlayıcı tarafından yönetilen halde sunar. Otomatik yedekleme, otomatik patch, HA (master-slave replikasyon), point-in-time recovery, monitoring dashboard — hepsi dahildir. Siz yalnızca DB’ye bağlanıp uygulamanızı geliştirirsiniz.
MySQL hosting seçerken kritik kriterler
MySQL sürümü ve uyumluluk (5.7, 8.0, MariaDB)
MySQL 5.7 desteğini 2023’te resmi olarak sonlandırdı. 2026 itibariyle 8.0 minimum standarttır. MariaDB 10.6+ uyumluluk istiyorsanız sağlayıcının iki seçeneği de sunduğundan emin olun.
Veritabanı boyutu ve sorgu performansı
DB 10 GB üzerine çıktığında shared hosting çoğu zaman performans düşürür. NVMe SSD’li ve dedicated I/O kanalları olan DBaaS veya VPS bu noktada gereklidir.
Yedekleme ve point-in-time recovery
Günlük yedekleme minimumdur. Production iş yükleri için point-in-time recovery (her dakikaya geri dönebilme) zorunludur — kritik veri kaybı senaryolarında saatler değil dakikalar kaybedersiniz. Detaylı backup stratejisi için bulut yedekleme rehberimizi okuyun.
Yüksek erişilebilirlik (HA) ve read-replica
Tek bir MySQL instance = tek noktasal arıza. Master-Slave replikasyonu otomatik failover ile sağlamak self-managed’da haftalar sürer; DBaaS’ta tek tıklama. Tam felaket kurtarma planı için felaket kurtarma rehberimize bakın.
Yönetim arayüzleri (phpMyAdmin, MySQL Workbench)
Web tabanlı (phpMyAdmin) veya desktop (MySQL Workbench, DBeaver) erişim. SSH tunnel ile güvenli bağlantı standart olmalıdır.
Performans karşılaştırması (gerçek benchmark)
Standart sysbench OLTP read-write testi, 16 core / 64 GB / NVMe konfigürasyonunda:
| Senaryo | TPS (transactions/sec) | P95 latency |
|---|---|---|
| Shared hosting (paylaşımlı) | 200-500 | 50-150 ms |
| VPS self-managed (default config) | 1.500-3.000 | 15-30 ms |
| VPS self-managed (tuned) | 5.000-8.000 | 8-15 ms |
| Cloud4U DBaaS (managed) | 6.000-10.000 | 5-12 ms |
| Cloud4U DBaaS (HA replica okuma) | 12.000-18.000 | 4-10 ms |
Managed DBaaS, VPS self-managed’a benzer veya daha iyi performans sağlar; üstelik sizden tuning bilgisi gerektirmez.
Performans optimizasyonu için en iyi uygulamalar
InnoDB buffer pool ayarları
Toplam RAM’in %60-70’ini innodb_buffer_pool_size parametresine ayırın. DBaaS sağlayıcıları bunu otomatik ayarlar; self-managed senaryosunda manuel ayarlama gerekir.
Slow query log ve indeks optimizasyonu
long_query_time = 1 ile yavaş sorguları logla, EXPLAIN ile incele, gerekli indeksleri ekle. DBaaS dashboard’larında bu süreç görsel olarak otomatize edilir.
Connection pooling ve PHP-MySQL persistent bağlantı
Yüksek trafikte connection pool (PgBouncer benzeri ProxySQL) ekleyin. PHP mysqli_pconnect veya Laravel database persistent bağlantısı ile gereksiz handshake azaltın.
Güvenlik ve KVKK uyumluluğu
At-rest ve in-transit şifreleme
DB diskinin AES-256 şifrelenmesi ve uygulamadan DB’ye TLS bağlantı 2026’da temel beklentidir.
IP whitelist ve VPN bağlantısı
DB sunucunuza yalnızca uygulamanın çalıştığı IP’ler bağlanabilmelidir. Public internete açık DB = otomatik güvenlik ihlali.
Yetkilendirme: principle of least privilege
Her uygulama için ayrı DB user, ayrı şifre, sadece gerekli yetki. Root user uygulamadan asla kullanılmamalıdır.
Self-managed MySQL’den DBaaS’a geçiş
Mysqldump ve replikasyon ile geçiş
Küçük DB için mysqldump | mysql yeterli; büyük DB için replikasyon ile online geçiş (yeni DBaaS instance’ı eski master’a slave bağlanır, sıfır kesintiyle cutover yapılır).
Connection string güncellemeleri
Yeni hostname/port’a application config güncellemesi tek hareket. DBaaS sağlayıcılar genelde DNS-based connection sağlar, IP değişiklikleri uygulamanızı etkilemez.
Mini case study: 25 GB WooCommerce DB geçişi
Bir Türk e-ticaret operatörü, 25 GB WooCommerce veritabanını shared hosting’den (her sezon kampanyada %10 sipariş kaybı yaşıyordu) Cloud4U DBaaS’a taşıdı.
- Geçiş süresi: 4 saat (replikasyon ile + 5 dk cutover)
- Sayfa yükleme süresi (P95): 4.2s → 0.9s
- Maksimum eşzamanlı kullanıcı: 250 → 2.500
- Pik sezonda kayıp sipariş: %10 → %0.3
- Aylık altyapı maliyeti: 800 TL → 1.400 TL (artış); ek aylık satış: ~120.000 TL
ROI ilk haftada pozitif.
MySQL tuning parametreleri detaylı
Production MySQL için kritik parametreler ve önerilen değerler (32 GB RAM sunucu için):
# /etc/mysql/my.cnf
[mysqld]
# InnoDB
innodb_buffer_pool_size = 24G # %75 RAM
innodb_log_file_size = 2G # Yüksek yazma için büyük
innodb_flush_log_at_trx_commit = 1 # ACID için 1, hız için 2
innodb_flush_method = O_DIRECT # Çift cache'leme önler
innodb_io_capacity = 2000 # NVMe için
innodb_io_capacity_max = 4000
# Connection
max_connections = 500 # ProxySQL ile 1000+
thread_cache_size = 100
table_open_cache = 4000
# Query cache (MySQL 5.7'de var, 8.0'da kaldırıldı)
query_cache_type = OFF # Yüksek yazma için
query_cache_size = 0
# Slow query log
slow_query_log = 1
long_query_time = 1
log_queries_not_using_indexes = 1
# Binary log (replikasyon için)
log_bin = mysql-bin
binlog_format = ROW
expire_logs_days = 7
sync_binlog = 1
Replikasyon kurulum örneği
Master-Slave HA için minimal kurulum:
-- Master sunucuda
CREATE USER 'replicator'@'%' IDENTIFIED BY 'gucluParola2026';
GRANT REPLICATION SLAVE ON *.* TO 'replicator'@'%';
SHOW MASTER STATUS;
-- File: mysql-bin.000001, Position: 12345
-- Slave sunucuda
CHANGE MASTER TO
MASTER_HOST='master.cloud4u.com.tr',
MASTER_USER='replicator',
MASTER_PASSWORD='gucluParola2026',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=12345;
START SLAVE;
SHOW SLAVE STATUS\G
-- Slave_IO_Running: Yes / Slave_SQL_Running: Yes / Seconds_Behind_Master: 0
DBaaS’ta bu süreç tek tıkla — Cloud4U dashboard’da “Add read replica” butonuyla halledilir.
WordPress için optimal MySQL konfigürasyonu
WooCommerce + 50.000 ürün için tipik tuning:
-- Object cache için Redis ekle (wp-config.php)
define('WP_REDIS_HOST', 'redis.cloud4u.com.tr');
define('WP_REDIS_PORT', 6379);
define('WP_CACHE_KEY_SALT', 'sirketiniz_');
-- Sık silinen tabloları indeksle (WooCommerce)
ALTER TABLE wp_woocommerce_order_itemmeta ADD INDEX (meta_key(20));
ALTER TABLE wp_postmeta ADD INDEX (meta_key(20), meta_value(50));
-- Eski revisions ve auto-drafts temizle
DELETE FROM wp_posts WHERE post_status = 'auto-draft';
DELETE FROM wp_posts WHERE post_type = 'revision';
OPTIMIZE TABLE wp_posts, wp_postmeta;
Bu basit optimizasyonlar tipik WooCommerce sitesinde sayfa yükleme süresini %40-60 düşürür.
Migration runbook: shared → DBaaS
Adım adım geçiş şablonu:
Hazırlık (1 hafta önce)
- DBaaS instance provision et (Cloud4U dashboard’dan ~5 dk)
- MySQL sürüm uyumluluğu doğrula (SELECT VERSION();)
- Application config dosyasında DB hostname için değişken hazırla
- Maintenance window planla (genelde gece 02:00-04:00)
Cutover gecesi
- Application’ı maintenance mode’a al
- Final mysqldump (mysqldump --single-transaction --master-data=2 db_name > final.sql)
- DBaaS’a import (mysql -h dbaas.cloud4u.com.tr -u admin -p < final.sql)
- Application config güncellemesi
- Smoke test (login, sipariş oluştur, ödeme)
- Maintenance mode kapat
- Trafik gözlem (1 saat)
Sonrası (1 hafta)
- Eski shared hosting’i 30 gün açık tut (rollback için)
- Yeni DB performans monitoring
- Backup ve restore testi
Connection pooling: ProxySQL kurulumu
Yüksek connection sayısı için ProxySQL middleware:
apt install proxysql
mysql -u admin -padmin -h 127.0.0.1 -P 6032 -e "
INSERT INTO mysql_servers(hostgroup_id, hostname, port)
VALUES (10, 'dbaas.cloud4u.com.tr', 3306);
INSERT INTO mysql_users(username, password, default_hostgroup)
VALUES ('app_user', 'app_password', 10);
LOAD MYSQL SERVERS TO RUNTIME;
LOAD MYSQL USERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
SAVE MYSQL USERS TO DISK;
"
Application 100 connection açar, ProxySQL 10 backend connection kullanır — DB üzerindeki yük dramatik düşer.
Cloud4U Türkiye Hizmet Olarak Veritabanı
Otomatik yedekleme, HA ve scaling dahil managed MySQL
Cloud4U Türkiye Hizmet Olarak Veritabanı, MySQL ve PostgreSQL’i tam yönetilen olarak sunar. Otomatik günlük yedekleme, point-in-time recovery (7-30 gün arası retention), Master-Slave HA, otomatik failover ve dikey/yatay scaling standart olarak gelir.
Türkiye veri merkezi ve teknik destek
Veriler Türkiye’deki veri merkezimizde KVKK uyumlu olarak saklanır. Web hosting MySQL ihtiyacınız küçük WordPress’ten kurumsal e-ticaret seviyesine geldiğinde, geçişi yumuşak yapmak için ücretsiz danışmanlık ve POC sağlıyoruz.