WordPressでWEBサーバ、NFS、DBサーバの冗長構成 5 [DBサーバ(スレーブ)+HyperDBの設定]
前回に引き続きWordPressの冗長構成について説明していきます。
さて、今回はDBサーバ(スレーブ)とHyperDBの設定になります。
DBサーバ2つでレプリケーション設定を行い、マスター・スレーブ構成にすることで、DBサーバに冗長性をもたせることができるようになります。
早速設定を始めていきましょう。
スレーブの設定
マスター(DB1)、スレーブ(DB2)とします。
DB2に接続し、DB1と同じバージョンでmariaDBをインストールします。
curl -sS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash yum -y install MariaDB-server MariaDB-client systemctl start mariadb systemctl enable mariadb
ポート3306をあけておきます。
firewall-cmd --zone=public --add-port=3306/tcp --permanent firewall-cmd --reload firewall-cmd --list-ports
マスターの設定
my.confの設定
vi /etc/my.cnf #my.cnfに下記記述を追加 [mysqld] log-bin server-id=1 #再起動 systemctl restart mariadb
my.cnfの位置ががわからないときは検索しましょう
mysql --help | grep my.cnf
レプリケーション用のユーザを作成します。
#スレーブ用ユーザ作成 mysql -u root -p GRANT REPLICATION SLAVE ON *.* TO repl@DB2のIP IDENTIFIED BY 'password'; FLUSH PRIVILEGES;
ここで、DB1にあるデータをDB2に移す作業を行います。
#データを同期させるため、一時的にデータをロックする FLUSH TABLES WITH READ LOCK;
ステータスも見ておきましょう。ここの数値はあとで使います。
MariaDB [(none)]> SHOW MASTER STATUS; +---------------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +---------------------------+----------+--------------+------------------+ | db-test-bin.000001 | 1022 | | | +---------------------------+----------+--------------+------------------+ 1 row in set (0.001 sec)
MariaDBからログアウトし、DBのダンプファイルを用意します。
mysqldump -u root -p --all-databases --lock-all-tables > dump.sql mysql -u root -p UNLOCK TABLES;
SCPとかでダンプファイルをDB2に送っておきましょう
scp dump.sql DB2のIP:/root/
再度DB2で設定
vi /etc/my.cnf #下記の記述を変更 [mysqld] server-id=2 #再起動 systemctl restart mariadb #ダンプファイルのインポート mysql -u root -p < dump.sql #MariaDBの設定 mysql -u root -p CHANGE MASTER TO MASTER_HOST='***', MASTER_USER='repl', MASTER_PASSWORD='password', MASTER_LOG_FILE='***', MASTER_LOG_POS=***; START SLAVE;
それぞれ下記の値をいれます。
MASTER_HOST : マスター側のホスト名、もしくは IP アドレス
MASTER_USER : マスター接続に使用するユーザー名
MASTER_PASSWORD : マスター接続に使用するユーザーのパスワード
MASTER_LOG_FILE : SHOW MASTER STATUS で確認した File
MASTER_LOG_POS : SHOW MASTER STATUS で確認した Position
ここまでできたら設定完了です!
試しにDB1でなにかSQLを実行して、DB2にも反映されることも確認しておきましょう。
HyperDBの設定
DBのレプリケーションの設定が終わったら、最後にWordPressから2つのDBを使用するように設定する必要があります。
その際に使えるのがHyperDBというプラグインです。
これを使用することで、書き込みをDB1、読み込みの際はDB2を優先的に読むという設定が簡単にできます。
HyperDBは通常のプラグインと異なり、WordPressのダッシュボードから設定するのではなく、一部ファイルを配置して利用します。
以下で設定をしていきます。
もし、このブログの解説通りにWordPressの冗長構成を行っている場合は、WordPress一式のファイルを置いているNFSサーバで設定を行います。
#wp-config.phpと同じ階層にdb-config.phpを作成 vi db-config.php
#db-config.php <?php // Master ( read and write ) $wpdb->add_database(array( 'host' => 'DB1のIP', 'user' => 'user', 'password' => 'password', 'name' => 'DB_name', 'write' => 1, 'read' => 2, )); // Slave ( read only ) $wpdb->add_database(array( 'host' => 'DB2のIP' 'user' => 'user', 'password' => 'password', 'name' => 'DB_name', 'write' => 0, 'read' => 1, ));
最後にhyperdb.zipをダウンロードしてdb.phpをwp-content以下に置きます。
wget https://downloads.wordpress.org/plugin/hyperdb.1.5.zip unzip hyperdb.1.5.zip mv hyperdb/db.php /export/nfs/wp-content/
これでHyperDBの設定が完了です!!