DBサーバ 比較 MySQL vs MariaDB 移行編

昔ながらのmaster/slaveでMySQLを運用してきたが、最近は大分考えが変わってきた。少なくとも自分の趣味環境においてはパフォーマンスより運用の利便性を優先しないと作業の生産性が改善しない。MySQLにおいてmaster/slave構成を取ってきたのは、趣味レベルにおいてはわずかでしかない性能を気にしての事。GMOクラウドからIDCFクラウドに引っ越して内部通信品質も大きく改善したので、今回はwordpressのDBをマルチマスターとなるMariaDBのGalera Clusterに移行してみる。

自分で開発したサービスならDBに対するreadとwriteを切り分けて、slaveを使いこなす事も可能だが、wordpressなどの既成のツールではそういう訳にもいかない。そもそもwordpressの複数台運用は何気に難易度が高く、DBだけマルチマスター化しても達成出来ない事もあって結局1台運用を続けてきた。作業時のみ2号機に切り替えて・・・とかやっていたが、たまの切り替えだと事故を起こすだけなので、結局1号機を短時間でメンテナンスするという運用になり下がってしまっていた。

ちなみにDBだけマルチマスター化しても意味がないのは、wordpressが更新がWebUI経由になるためだ。更新ボタンを押すとwordpressそのものや各種プラグインの更新を行ってくれる。これが結構便利なので今更手作業には戻りたくない。中には当然DBの変更を伴う更新もあるので、アプリケーションの更新とDBの更新が同期して行われる必要がある。そのアプリの更新をGlusterFSで複数台対応できるようになったので、DBもマルチマスター化すれば、今度こそwordpress複数台運用の可能性が。

MariaDBは10から独自機能が諸々追加されたので10系、10.1がstableなようなのでこれで。以下のようにyumリポジトリを設定してインストール可能。

vi /etc/yum.repos.d/mariadb.repo
cat /etc/yum.repos.d/mariadb.repo
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.1/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

yum install MariaDB-server MariaDB-client

1号機は当然クラスターの1台目になるので、クラスターが空の状態として設定する。起動時も特別なオプションを付ける必要があり、systemctlだとうまくいかないのでserviceコマンドで起動する。

vi /etc/my.cnf.d/server.cnf
cat /etc/my.cnf.d/server.cnf
[mariadb]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
binlog_format=ROW
wsrep_cluster_address='gcomm://'
wsrep_cluster_name='db'
wsrep_node_name='db1'
wsrep_node_address=192.168.1.1
log-error=error.log

service mysql start --wsrep-new-cluster

2号機からは1台目ありきの構築ができるので、wsrep_cluster_addressの値を正しく設定する。また起動方法もsystemctlで普通にあげればよい。

vi /etc/my.cnf.d/server.cnf
cat /etc/my.cnf.d/server.cnf
[mariadb]
wsrep_on=ON
wsrep_provider=/usr/lib64/galera/libgalera_smm.so
binlog_format=ROW
wsrep_cluster_address='gcomm://192.168.1.1,192.168.1.2'
wsrep_cluster_name='db'
wsrep_node_name='db2'
wsrep_node_address=192.168.1.2
log-error=error.log

systemctl start mariadb

これでさくっとマルチマスターとして動き出してくれた。適当にDBを作ったりtableを作ったりしてみれば相方にも同期されているのがわかるはず。既存のMySQLからmysqldumpしたデータを放り込んでwordpressからアクセスさせてみるが、何の問題もなく動作した。トップページの性能検証もしてみたが、こちらも問題なし。まあ、DBは参照のみだろうし、プラグインがページをキャッシュするだろうし、DBはあまり性能に影響しないんだけどね。

性能上の大きな問題はなさそうなので、しばらくはMariaDBで様子見。このままの設定だと1号機の方が再起動時に相方を気遣わないので、wsrep_cluster_addressの値は2号機と同じにしてsystemctl restartしておく。3台目以降を作る予定は今のところないが、MariaDBをインストールして上記の設定ファイルで起動すれば一瞬でクローンを作れるはず。最もありがたいのはchefのrecipeが非常に簡潔になること。masterとか気にしないでいいしね。ともあれ、これでいよいよwordpressを2台化するための準備が整った。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)