如何为WordPress网站设置HyperDB?

时间:2017-10-23 08:20:33

标签: database wordpress

我有一个大型数据库,我想分成几个数据库但连接到我的WordPress网站。我通过互联网搜索并找到了使用WordPress Codex提供的HyperDB class的解决方案。我下载了文件,我尝试了如下

$wpdb->add_database(array(
    'host'     => 'localhost',     // If port is other than 3306, use host:port.
    'user'     => 'root',
    'password' => '',
    'name'     => 'partitioning',
));

/**
 * This adds the same server again, only this time it is configured as a slave.
 * The last three parameters are set to the defaults but are shown for clarity.
 */
$wpdb->add_database(array(
    'host'     => 'localhost',     // If port is other than 3306, use host:port.
    'user'     => 'root',
    'password' => '',
    'name'     => 'slave',
    'write'    => 0,
    'read'     => 1,
    'dataset'  => 'global',
    'timeout'  => 0.2,
));

我正在使用xampp作为开发版本。在WordPress站点安装之后,我将db-config.php与wp-config.php文件目录和db.php一起放在wp-content文件夹中。这样做我得到了空白页面。

任何人都可以逐步详细说明如何设置数据库和HyperDB脚本吗?我的意思是如何使slave数据库或HyperDB自动生成slave数据库?如何将任何表拆分为从数据库?我的意思是整个过程。

1 个答案:

答案 0 :(得分:0)

如果您正在构建一个高容量的Wordpress站点,并且数据库是瓶颈(通常是这样),HyperDB绝对是正确的Wordpress解决方案。 HyperDB由Automattic编写,在Wordpress.com上使用,设计为适当的Wordpress插件。

HyperDB支持MySQL读取副本和分区,您使用它取决于您的用例。

这些配置选项实际上在HyperDB配置文件中有相当详细的记录,如下所示: https://plugins.trac.wordpress.org/browser/hyperdb/trunk/db-config.php

这不适用于您的情况;你必须调整它以适应你的设置。

R1=Radiobutton(root,text="Sort Student Numbers",value=1, command = sorted_numbers(1))

首先,要测试这是否适用于您现有的数据库,您应该将// This is the default database configuration // $wpdb->add_database(array( 'host' => 'localhost', 'user' => 'root', 'password' => '', 'name' => 'regular_db', )); // This is your secondary database. // $wpdb->add_database(array( 'host' => 'localhost', 'user' => 'root', 'password' => '', 'name' => 'product_db', 'dataset' => 'products', )); // This magic detects which database table is being read from/written to, and switches // hyperdb connection based on that. $wpdb->add_callback('my_db_product_detector'); function my_db_product_detector($query, $wpdb) { // This makes the assumption that you've only got one relevant table, wp_products. // Update this to whatever your table name(s) are. if ( preg_match('^wp_products$', $wpdb->table) ) { return 'products'; } } 更改为product_db,然后从那里开始。

此时,您需要做出架构决策。如果您只是想减小数据库的大小,那么现在将您的产品写入第二个数据库。或者,您可能完全拥有第二个数据库服务器以共享不同数据库之间的负载。

创建只读副本也值得考虑,但这取决于您正在使用的生态系统。如果您正在使用AWS,那么RDS将非常简单地创建只读副本。