Ana içeriğe geç

MySQL Replikasyonu ile WordPress Performans Optimizasyonu

Bu rehberde ne öğreneceksiniz?

Bu rehberde WordPress sitenizin veritabanı performansını artırmayı öğreneceksiniz.
Amaç, okuma yükünü dağıtarak yüksek trafiği daha akıcı karşılamaktır.


🧠 Teknik Özet

Ana Teknik Konu:
MySQL Master–Slave replikasyonu ve HyperDB entegrasyonu.

Çözülen Problem:
Tek veritabanı sunucusunun yoğun okuma trafiğinde yetersiz kalması.

İzlenen Adımlar:

  • Slave MySQL sunucusu kurulumu
  • Master replikasyon ayarları
  • Veri senkronizasyonu
  • HyperDB ile okuma/yazma ayrımı

1️⃣ MySQL Slave Sunucusunu Kurun

Yeni bir veritabanı sunucusu oluşturun (örnek: tr1-db02) ve MySQL kurun:

sudo apt-get update
sudo apt-get install mysql-server
  • Bu komutlar Slave rolünü üstlenecek MySQL sunucusunu kurar.

2️⃣ Master Sunucuyu Replikasyon İçin Ayarlayın

  • Master sunucuda yapılandırma dosyasını açın:

sudo vi /etc/mysql/my.cnf
  • Bu dosya MySQL’in ağ ve replikasyon ayarlarını içerir.

Aşağıdaki satırları aktif edin:


bind-address = MASTER_OZEL_IP
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
  • Bu ayarlar Master sunucunun replikasyon yapmasını sağlar.

  • MySQL’i yeniden başlatın:

sudo service mysql restart
  • Değişikliklerin aktif olmasını sağlar.

Replikasyon kullanıcısını oluşturun:


CREATE USER 'repl'@'%' IDENTIFIED BY 'guclu_sifre';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
  • Slave sunucuların Master’a bağlanabilmesi için yetki tanımlar.

3️⃣ Verileri Master’dan Slave’e Senkronize Edin

  • Master üzerinde veri tutarlılığı için tabloları kilitleyin:

FLUSH TABLES WITH READ LOCK;
SHOW MASTER STATUS;
  • Veritabanını dondurur ve log konumunu gösterir.

Verileri yedekleyin ve Slave sunucuya aktarın:


mysqldump --lock-all-tables -u root -p --all-databases > masterdump.sql
scp masterdump.sql user@SLAVE_OZEL_IP:/tmp
  • Mevcut verileri güvenli şekilde Slave sunucuya taşır.

4️⃣ Slave Sunucuyu Master’a Bağlayın

  1. Slave sunucuda yedeği içeri aktarın:

mysql -u root -p < /tmp/masterdump.sql
  • Slave sunucuyu Master ile senkron hale getirir.

Replikasyon bağlantısını tanımlayın:


CHANGE MASTER TO
MASTER_HOST='MASTER_OZEL_IP',
MASTER_USER='repl',
MASTER_PASSWORD='guclu_sifre',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=408;
  • Slave sunucuya Master bilgilerini tanıtır.

Replikasyonu başlatın:


START SLAVE;
  • Slave artık Master’ı dinlemeye başlar.

  • Durumu kontrol edin:

SHOW SLAVE STATUS\G
  • Replikasyonun sorunsuz çalıştığını doğrular.

5️⃣ WordPress İçin HyperDB Yapılandırması

  1. HyperDB eklentisini indirin ve çıkarın:

wget http://downloads.wordpress.org/plugin/hyperdb.zip
unzip hyperdb.zip
  • HyperDB dosyalarını indirir.

Slave veritabanını tanımlayın:


define('DB_SLAVE_1', 'SLAVE_OZEL_IP');
  • WordPress’e ikinci veritabanı kaynağını bildirir.

  1. db.php dosyasını etkinleştirin:

cp hyperdb/db.php /var/www/rabisu.cloud/wp-content/
chmod a-w /var/www/rabisu.cloud/wp-content/db.php
  • WordPress’in varsayılan veritabanı sınıfını HyperDB ile değiştirir.

❓ Sıkça Sorulan Sorular (SSS)

1. Master sunucu çökerse ne olur? Yazma işlemleri durur, okuma işlemleri Slave üzerinden devam edebilir.

2. Birden fazla Slave eklenebilir mi? Evet. Aynı adımlar tekrar edilerek ölçekleme yapılabilir.

3. HyperDB kullanmak zorunlu mu? Zorunlu değil ama WordPress için en stabil çözümdür.

4. Bu yapı kimler için uygundur? Okuma trafiği yüksek WordPress siteleri için idealdir.


🚀 Sonuç

MySQL Master–Slave mimarisi sayesinde WordPress siteniz daha fazla kullanıcıyı rahatça karşılar. Bu yapı, büyüyen projeler için sağlam ve ölçeklenebilir bir temel sunar. Yüksek performanslı altyapılar için Rabisu Bulut platformunda hemen deneyebilirsiniz.