Wordpress

HyperDB 配置主/從

  • June 24, 2014

在伺服器 2008 R2 IIS 7.5 上執行,帶有 MySQL 主/從(也在伺服器 2008 r2 上)和 WordPress 3.7。它僅與 wordpress 3.5.2 兼容嗎?如果是這樣,是否有任何其他外掛允許主/從 mysql 設置?

這是我到目前為止所做的: 1. 我將 db.php 複製到 /wp-content/ 文件夾 2. 編輯 wp-config.php 文件以具有(不是真實 IP 地址)define(‘DB_HOST’, ‘192.168 .1.198’); 定義(‘DB_HOST_SLAVE’,‘192.168.1.198’);3. 編輯 db-config.php 並放在站點的根目錄下。

<?php
$wpdb->save_queries = false;
$wpdb->persistent = false;
$wpdb->max_connections = 10;
$wpdb->check_tcp_responsiveness = true;
$wpdb->add_database(array(
   'host'     => DB_HOST,
   'user'     => DB_USER,
   'password' => DB_PASSWORD,
   'name'     => DB_NAME,
   'write' => 1,
   'read' => 1,
   'dataset' => 'global',
   'timeout' => 0.2,
));
$wpdb->add_database(array(
   'host'     => DB_HOST_SLAVE,
   'user'     => DB_USER,
   'password' => DB_PASSWORD,
  'name'     => DB_NAME,
   'write' => 0,
   'read' => 1,
   'dataset' => 'global',
   'timeout' => 0.2,
));

現在,當我關閉主站點時,站點停止載入,我希望從站只會將站點設置為只讀。我在 php 日誌中看到的只是它試圖連接到 192.168.1.198,當我預計如果它無法連接到 192.168.1.199 時讀取將故障轉移到從站。這是錯誤

WordPress database error 2013-12-26 19:25:40 Can't select global__w -
'referrer' => 'blah.com/wp-admin/',
'server' => ,
'host' => 192.168.1.198,
'error' => ,
'errno' => 0,
'tcp_responsive' => ,
'lagged_status' => 3 for query SELECT option_value FROM wp_options WHERE option_name = 'db_upgraded' LIMIT 1 made by get_option

現在,如果我將 db-config.php 編輯為這樣

<?php
$wpdb->save_queries = false;
$wpdb->persistent = false;
$wpdb->max_connections = 10;
$wpdb->check_tcp_responsiveness = true;
$wpdb->add_database(array(
   'host'     => DB_HOST_SLAVE,
   'user'     => DB_USER,
   'password' => DB_PASSWORD,
   'name'     => DB_NAME,
   'write' => 0,
   'read' => 1,
   'dataset' => 'global',
   'timeout' => 0.2,
));

我可以讓網站在主伺服器宕機時啟動,但如果從伺服器宕機,整個站點都會宕機。這意味著如果主站啟動而從站關閉,則站點已關閉。

我在世界各地使用 Tungsten Replicator 和 3 個 MySQL 伺服器(所有主配置)。此配置對我有用。

MySQL.Cluster 解析為 corosync 集群中“主”節點的虛擬 IP - 最好只寫入一個主節點:)

$wpdb->add_database(array(
       'host'     => 'MySQL.Cluster',     // If port is other than 3306, use host:port.
       'user'     => DB_USER,
       'password' => DB_PASSWORD,
       'name'     => DB_NAME,
       'write'    => 1,
       'read'     => 2,
       'dataset'  => 'global',
       'timeout'  => 0.2,
));


$wpdb->add_database(array(
       'host'     => '127.0.0.1',     // If port is other than 3306, use host:port.
       'user'     => DB_USER,
       'password' => DB_PASSWORD,
       'name'     => DB_NAME,
       'write'    => 2,
       'read'     => 1,
       'dataset'  => 'global',
       'timeout'  => 0.1,
));

引用自:https://serverfault.com/questions/566098