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)プラグインの有効化
プラグインが有効化されていなかったら、有効にしてください。
以上です。