HyperDB亡き後の救世主。プラグイン「LudicrousDB」

wordpressでdbレプリケーションを実現!

mysqlのバージョンアップに伴いHyperDBが使えなくなってしまいました。
このため、マスターとスレーブに分散接続していたサービスで、やむを得ず、web1からはマスターへ、web2からはスレーブへと接続するようにしていました。

記事の更新などはhostsファイルでマスターに必ず接続するようにし、スレーブへ書き込むことはありませんでした。

しかし、先日プラグインからのdb書き込みができず、エラーが発生。とりあえず、マスターへ接続するようにして対応しました。

その後、HYperDBの更新がされているかもしれないとい思い、ググったところHyperDBのgithubでその後継としてludicrousDBというものがあることを知り、調べると現在も管理されているようなので、インストールしました。

問題なく動いていますので簡単にインストールの手順をご紹介します。
ポイントはiudicrousdb.phpをpluginファルダ内に配置することです。

githubなどでは、その点が詳しく書かれておらず、参考になれば幸いです。

インストール手順

1)下記urlのgithubからファイルをダウンロードして解凍する

https://github.com/stuttter/ludicrousdb/archive/refs/heads/master.zip

2)コンフィグレーションファイルdb-config.phpを編集する。

<例>

/master writter/
$wpdb->add_database(
    array(
        ‘host’ => DB_HOST,
        ‘user’ => DB_USER,
        ‘password’ => DB_PASSWORD,
        ‘name’ => DB_NAME,
        )
);
//DB_HOST 、DB_USER 、DB_PASSWORD 、DB_NAME はwp-configに設定されているものを引き継ぐ。
//writeとreadパラメーターはデフォルトが可(1)なので記述していない。
//同様にdatasetもglobalがデフォルトなので記述していない

/slave reader/
$wpdb->add_database(
    array(
        ‘host’ => ‘172.16.0.2’,
        ‘user’ => DB_USER,
        ‘password’ => DB_PASSWORD,
        ‘name’ => DB_NAME,
        ‘write’ => 0,
        ‘read’ => 1,
        ‘dataset’ => ‘global’,
    )
);
//hostには読み取り専用のホスト名を記述する。
//DB_USER 、DB_PASSWORD 、DB_NAME はwp-configに設定されているものを引き継ぐ。
//writeは0として書き込み系のsqlは飛ばさない。
//readは1として読み込み系のsqlが飛ぶようにする。
//readは2,3など数値を増やすと、接続頻度(mastar: slave)が1:2、1:3というように調整が可能。

3)ファイルの配置

/db-config.php
/wp-content/db-error.php
/wp-content/db.php
/wp-content/plugins/ludicrousdb.php
/wp-content/plugins/ludicrousdb/
/wp-content/plugins/ludicrousdb/includes/class-ludicrousdb.php
/wp-content/plugins/ludicrousdb/includes/functions.php

プラグインディレクトリにludicrousdb.phpを配置するとwpは自動的にludicrousdbプラグインを読み込む。
HyperDBではwp-congfig.php内で
define(‘DB_CONFIG_FILE’, ABSPATH . ‘db-config.php’);
というように書き加えていたが、LudicrousDBは不要。
functions.php内でDB_CONFIG_FILEの設定を行っている。

4)プラグインの有効化

プラグインが有効化されていなかったら、有効にしてください。

以上です。