Wordpress

LudicrousDB ve HyperDB ile WordPress için Çoklu Veritabanlarını Kullanma

wordpress sunucu
Share

WordPress ile yaşanılan en büyük sorunlardan biri veritabanı. Fiziksel sunucu veya sanal sunucu yada wordpress hosting kullanımından bağımsız olarak Üzerinde ne kadar çok veri kaydedilirse, o kadar yavaşlar ve tüm web sitesi ve kullanıcı deneyimi üzerinde kötü etkileri olur ve bu da ziyaretçi ve kullanıcı sayısında büyük bir düşüşe neden olur. Peki, onu bir İsviçre saati gibi çalıştırmak için ne yapabiliriz? Bu sorunu ararsanız, size daha az eklenti kullanın, DB’yi bir eklenti ile optimize edin, CDN kullanın[tamamen alakasız], şunu yapın, şunu yapın vb. şeyler anlatan birçok makale bulacaksınız. Tamam, bunlar iyi ama WordPress’inizi neyin daha harika hale getirebileceğini biliyor musunuz? Tek bir WordPress web sitesi için birden çok veritabanı kullanma. EVET, doğru okudunuz. Burada size birden fazla DB’yi bir WP web sitesine nasıl bağladığımı göstermek istiyorum ve sonuç olarak aynı anda çok sayıda kullanıcıyı idare edebildik ve herkesi daha mutlu ettik. Hadi gidelim.

 

HyperDB veya LudicrousDB?
HyperDB, birkaç WordPress yerleşik veritabanı işlevinin yerini alan çok gelişmiş bir veritabanı sınıfıdır. İsteğe bağlı sayıda veritabanı sunucusuna bağlanabilir.

Şunları destekler:

1- Okuma ve yazma sunucuları (replikasyon)
2- Okuma ve yazma için yapılandırılabilir öncelik
3- Yerel ve uzak veri merkezleri
4- Özel ve genel ağlar
5- Farklı veritabanlarında/ana bilgisayarlarda farklı tablolar
6- Akıllı yazma sonrası ana okumalar
7 – Düşen ana bilgisayar için yük devretme
8- Profil oluşturma için gelişmiş istatistikler
9- WordPress Multisite

Birden çok veri merkezine yayılan birçok MySQL sunucusuyla WordPress.com’da şu anda üretimde kullanılan kodu temel alır.

HyperDB, Otomatik tarafından oluşturulmuştur ancak bir süredir güncellenmemektedir ve bu nedenle bazı kullanıcılar için düzgün çalışmayabilir[Belki sizin için çalışabilir]. Peki alternatif nedir? gülünçDB !

LudicrousDB, Automattic’in HyperDB eklentisine dayalı olarak çoğaltma, yük devretme, yük dengeleme ve bölümlemeyi destekleyen WordPress için gelişmiş bir veritabanı arabirimidir.

Okurken, WordPress DB ile çok şey yapabilirsiniz. Bu yöntemde WP’yi 2 veritabanına bağlayacağız ve bazı tabloları bir denge oluşturacak ve web sitesini yüksek trafik saatlerinde açık tutacak şekilde başka bir veritabanına taşıyacağız.

Not: Prosedür hem LudicrousDB hem de HyperDB için hemen hemen aynıdır. Yani LudicrousDB ile çalışmayı öğrenirseniz HyperDB ile de çalışabilirsiniz.

LudicrousDB Nasıl Çalıştırılır
1- Başlamak için Github sayfasından LudicrousDB’yi indirin ve “ Add Plugin ” sayfasından WordPress paneline yükleyin .

2- Eklentiyi kurduktan sonra aktif etmeyin. /wp-content/plugins/ludicrousdb/ludicrousdb/drop-ins/ dizininden db.php dosyasını kopyalayın ve wp-content dizinine yapıştırın .

3- Aynı yoldan db-config.php dosyasını bulun ve wp-config.php dosyasının bulunduğu WordPress dizininizin kök dizinine kopyalayın .

Artık ihtiyacımız olan tüm dosyalar kuruluma hazır. WP DB’yi yapılandırmanın zamanı geldi. Erişim için gerekli tüm bilgileri içeren yeni bir sunucuda başka bir veritabanınız olduğunu varsayıyorum.

4- WP kökünde db-config.php dosyasını açın ve aşağıdaki kodları görmek için dosyanın sonuna gidin:


// A
$wpdb->add_database( array(
'host' => DB_HOST,
'user' => DB_USER,
'password' => DB_PASSWORD,
'name' => DB_NAME,
) );
// B
$wpdb->add_database( array(
'host' => DB_HOST,
'user' => DB_USER,
'password' => DB_PASSWORD,
'name' => DB_NAME,
'write' => 0,
'read' => 1,
'dataset' => 'global',
'timeout' => 0.2,
) );

Gördüğünüz gibi add_database ile istediğiniz kadar veritabanı ekleyebilirsiniz. Ama parametreler nelerdir?


ana bilgisayar : DB sunucusu. DB aynı sunucudaysa, yerel ana bilgisayar olmalıdır ve başka bir sunucudaysa, bağlantı noktası numarasıyla birlikte IP adresini veya etki alanı adını kullanın. IP-ADDRESS:PORT / Varsayılan port 3306'dır. (gerekli)
kullanıcı: DB kullanıcı adı (gerekli)
şifre: DB şifresi (gerekli)
isim: DB ismi (gerekli)
yaz: WP bu DB'ye yazabilir mi? Evet = 1, Hayır = 0 / Varsayılan 1'dir (isteğe bağlı)
oku: WP bu DB'den veri okuyabilir mi? Evet = 1, Hayır = 0 / Varsayılan 1'dir (isteğe bağlı)
veri kümesi: DB / Default'daki bir grup tablo için yalnızca bir ad 'global' (isteğe bağlı)
zaman aşımı: Bağlantı zaman aşımı / Varsayılan 0,2'dir (isteğe bağlı)

5- Bu kodun ilk kısmı WP’yi ana DB’ye bağlamak içindir. Bu yüzden aşağıdaki kodu olduğu gibi bırakıyoruz ve yapılandırması basit olan başka bir sunucuda olmadığı sürece herhangi bir değişikliğe gerek yok.


// Bir
$wpdb->add_database( array(
'host' => DB_HOST,
'user' => DB_USER,
'password' => DB_PASSWORD,
'name' => DB_NAME,
) );

6- Kodumuzun ikinci kısmını kullanarak başka bir DB ekleyelim.


// B
$wpdb->add_database( array(
'host' => db.example.com:3306,
'user' => testserver,
'password' => 5kjh4k8#$#@%9,
'name' => secondDB ,
'write' => 1,
'read' => 1,
'dataset' => 'wpposts'
) );

Kolay değil mi? Varsayılan değer benim için iyi olduğu için zaman aşımı parametresini yeni kaldırdım . Ama isterseniz ekleyip değiştirebilirsiniz.

Artık WP’miz 2 DB’ye bağlı olduğundan, bazı tablolarımızı ana DB’den 2. DB’ye taşımak ve WP’ye 2. DB’den veri okumasını ve yazmasını söylemek istiyoruz. Bu örnekte bu tablolar, WP’nin gönderileri ve meta verileri depoladığı yerdir.

7- PHPMyadmin kullanarak wp_posts ve wp_postmeta tablolarını ana DB’den dışa aktarın ve 2. DB’ye aktarın. (Testlerden sonra bu tabloları bırakabilirsiniz)

8- Şimdi add_callback’e ihtiyacımız var. add_callback ile WP tablolarını filtreliyoruz ve WP’ye bu tabloların verilerini 2. tablodan okumasını ve yazmasını söylüyoruz.


global $wpdb;
$wpdb->add_callback( 'db_callback' );
function db_callback( $query, $wpdb ) {
if ( $wpdb->base_prefix . 'posts' == $wpdb->table || $wpdb->base_prefix . 'postmeta' == $wpdb->table ) {
return 'wpposts';
}
}

Çok siteli bir WP’niz varsa ne olur?


$wpdb->add_callback( 'db_callback2' );
function db_callback2( $query, $wpdb ) {
if ( preg_match("/^{$wpdb->base_prefix}\d+_posts/", $wpdb->table) || preg_match("/^{$wpdb->base_prefix}\d+_postmeta/", $wpdb->table) ) {
return 'wpposts';
}
}

Yerçekimi formları tabloları için çok bölgeli DB için başka bir örnek:


$wpdb->add_callback( 'db_callback3' );
function db_callback3( $query, $wpdb ) {
if ( preg_match("/^{$wpdb->base_prefix}\gf_/", $wpdb->table) || preg_match("/^{$wpdb->base_prefix}\d+_gf_/", $wpdb->table) ) {
return 'wpposts';
}
}