HyperDB 配置主/从

HyperDB 配置主/从

在服务器 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'); define('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,
));

当主服务器宕机时,我可以让网站恢复运行,但如果从服务器宕机,整个网站就会宕机。也就是说,如果主服务器正常运行而从服务器宕机,整个网站就会宕机。

答案1

我正在使用 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,
));

相关内容