MySQL を MariaDB でリプレース

MySQL で不満があるわけじゃないんですけどね。MySQL からフォークした MariaDB の話を聞くことが多くなってきた。

MariaDBは、MySQL派生として開発されている、オープンソースの関係データベース管理システム (RDBMS) である。

[From MariaDB - Wikipedia]

互換性の面での問題もないようだし、Zabbix と組み合わせるデータベースとして使う事例も増えてきているいるようですけど、

Red Hatは次期メジャーアップグレードバージョンとなる「Red Hat Enterprise Linux 7」では、デフォルトで使われるリレーショナルデータベースが「MySQL」から「MariaDB」へ変更される見通しであることがRed Hatサミットで発表されたことを、ITWire.comの記事「Red Hat ditches MySQL, switches to MariaDB」が伝えている。

[From RHEL7、MySQLからMariaDBへ変更 | マイナビニュース]

RHEL 7 で MySQL から MariaDB へデフォルトが変更になっているとなると、今後お仕事で使う機会が確実に出てきそう。ということで、手元の環境でも試しておこうとリプレースしてみた次第。
#Oracle に買収されたことで、先行きが見えにくいというのも、 MySQL が使われなくなりつつある理由みたい。


いきなりリプレースではなく、インストールをシミュレートしてみる

いきなりリプレース、なんてことしてハマりたくはないので、Debianではおなじみの aptitude をシミュレートモードで実行して、パッケージの削除とインストールがどう行われるのか、をチェック。

aptitude-s オプションを付けて実行すると、パッケージの削除・インストールの一連の流れをシミュレートしてくれるので、今回のように「何がどう変わるのか心配」という時には、-s オプション付きで実行してみるといいでしょう。

で、実際に実行してみた結果は、以下の通り。

nexus01:~# aptitude -s install mariadb-server-10.0
以下の新規パッケージがインストールされます:
mariadb-client-10.0{ab} mariadb-client-core-10.0{ab} mariadb-common{a} mariadb-server-10.0{b}
mariadb-server-core-10.0{ab}
更新: 0 個、新規インストール: 5 個、削除: 0 個、保留: 2 個。
アーカイブの 14.1 MB を取得する必要があります。展開後に 134 MB のディスク領域が新たに消費されます。
以下のパッケージには満たされていない依存関係があります:
mysql-client-5.6 : 競合: virtual-mysql-client 以下のパッケージから提供されている仮想パッケージです:
- mysql-client-5.7 (5.7.13-1~exp1), インストールされません
- mysql-client-5.5 (5.5.50-0+deb8u1), インストールされません
- mariadb-client-10.0 (10.0.27-0+deb8u1), 10.0.27-1 がインストール予定となっています
- mysql-client-5.6 (5.6.30-1), 5.6.30-1 がインストール済みです
- mariadb-client-10.0 (10.0.27-1), 10.0.27-1 がインストール予定となっています

mysql-server-5.6 : 競合: virtual-mysql-server 以下のパッケージから提供されている仮想パッケージです:
- mysql-server-5.7 (5.7.13-1~exp1), インストールされません
- mysql-server-5.5 (5.5.50-0+deb8u1), インストールされません
- mariadb-server-10.0 (10.0.27-0+deb8u1), 10.0.27-1 がインストール予定となっています
- mysql-server-5.6 (5.6.30-1), 5.6.30-1 がインストール済みです
- mariadb-server-10.0 (10.0.27-1), 10.0.27-1 がインストール予定となっています

mariadb-server-core-10.0 : 競合: mysql-server-5.6 5.6.30-1 がインストール済みです
破壊: mysql-client-5.6 5.6.30-1 がインストール済みです
破壊: mysql-server-core-5.6 5.6.30-1 がインストール済みです
破壊: virtual-mysql-server-core 以下のパッケージから提供されている仮想パッケージです:
- mysql-server-core-5.7 (5.7.13-1~exp1), インストールされません
- mysql-server-core-5.5 (5.5.50-0+deb8u1), インストールされません
- mariadb-server-core-10.0 (10.0.27-0+deb8u1), 10.0.27-1 がインストール予定となっています
- mysql-server-core-5.6 (5.6.30-1), 5.6.30-1 がインストール済みです
- mariadb-server-core-10.0 (10.0.27-1), 10.0.27-1 がインストール予定となっています

mariadb-server-10.0 : 競合: mysql-server-core-5.6 5.6.30-1 がインストール済みです
破壊: mysql-server 5.6.30-1 がインストール済みです
破壊: mysql-server-5.6 5.6.30-1 がインストール済みです
破壊: virtual-mysql-server 以下のパッケージから提供されている仮想パッケージです:
- mysql-server-5.7 (5.7.13-1~exp1), インストールされません
- mysql-server-5.5 (5.5.50-0+deb8u1), インストールされません
- mariadb-server-10.0 (10.0.27-0+deb8u1), 10.0.27-1 がインストール予定となっています
- mysql-server-5.6 (5.6.30-1), 5.6.30-1 がインストール済みです
- mariadb-server-10.0 (10.0.27-1), 10.0.27-1 がインストール予定となっています

mysql-client-core-5.6 : 競合: virtual-mysql-client-core 以下のパッケージから提供されている仮想パッケージです:
- mysql-client-core-5.7 (5.7.13-1~exp1), インストールされません
- mysql-client-5.5 (5.5.50-0+deb8u1), インストールされません
- mariadb-client-core-10.0 (10.0.27-0+deb8u1), 10.0.27-1 がインストール予定となっています
- mysql-client-core-5.6 (5.6.30-1), 5.6.30-1 がインストール済みです
- mariadb-client-core-10.0 (10.0.27-1), 10.0.27-1 がインストール予定となっています

mariadb-client-10.0 : 競合: mysql-client-core-5.6 5.6.30-1 がインストール済みです
破壊: mysql-client-5.6 5.6.30-1 がインストール済みです
破壊: virtual-mysql-client 以下のパッケージから提供されている仮想パッケージです:
- mysql-client-5.7 (5.7.13-1~exp1), インストールされません
- mysql-client-5.5 (5.5.50-0+deb8u1), インストールされません
- mariadb-client-10.0 (10.0.27-0+deb8u1), 10.0.27-1 がインストール予定となっています
- mysql-client-5.6 (5.6.30-1), 5.6.30-1 がインストール済みです
- mariadb-client-10.0 (10.0.27-1), 10.0.27-1 がインストール予定となっています

mariadb-client-core-10.0 : 競合: mysql-client-5.6 5.6.30-1 がインストール済みです
破壊: mysql-client-core-5.6 5.6.30-1 がインストール済みです
破壊: virtual-mysql-client-core 以下のパッケージから提供されている仮想パッケージです:
- mysql-client-core-5.7 (5.7.13-1~exp1), インストールされません
- mysql-client-5.5 (5.5.50-0+deb8u1), インストールされません
- mariadb-client-core-10.0 (10.0.27-0+deb8u1), 10.0.27-1 がインストール予定となっています
- mysql-client-core-5.6 (5.6.30-1), 5.6.30-1 がインストール済みです
- mariadb-client-core-10.0 (10.0.27-1), 10.0.27-1 がインストール予定となっています

mysql-server-core-5.6 : 競合: virtual-mysql-server-core 以下のパッケージから提供されている仮想パッケージです:
- mysql-server-core-5.7 (5.7.13-1~exp1), インストールされません
- mysql-server-core-5.5 (5.5.50-0+deb8u1), インストールされません
- mariadb-server-core-10.0 (10.0.27-0+deb8u1), 10.0.27-1 がインストール予定となっています
- mysql-server-core-5.6 (5.6.30-1), 5.6.30-1 がインストール済みです
- mariadb-server-core-10.0 (10.0.27-1), 10.0.27-1 がインストール予定となっています

以下のアクションでこれらの依存関係の問題は解決されます:

以下のパッケージを削除する:
1) mysql-client-5.6 [5.6.30-1 (now, unstable)]
2) mysql-client-core-5.6 [5.6.30-1 (now, unstable)]
3) mysql-server [5.6.30-1 (now, unstable)]
4) mysql-server-5.6 [5.6.30-1 (now, unstable)]
5) mysql-server-core-5.6 [5.6.30-1 (now, unstable)]

以下のパッケージをインストールする:
6) mariadb-server [10.0.27-1 (unstable)]



この解決方法を受け入れますか? [Y/n/q/?]
以下の新規パッケージがインストールされます:
mariadb-client-10.0{a} mariadb-client-core-10.0{a} mariadb-common{a} mariadb-server{a} mariadb-server-10.0
mariadb-server-core-10.0{a}
以下のパッケージが削除されます:
mysql-client-5.6{a} mysql-client-core-5.6{a} mysql-server{a} mysql-server-5.6{a} mysql-server-core-5.6{a}
更新: 0 個、新規インストール: 6 個、削除: 5 個、保留: 2 個。
アーカイブの 14.1 MB を取得する必要があります。展開後に 14.2 MB のディスク領域が解放されます。

注意: 'シミュレーション' モードを使用します。
先に進みますか? [Y/n/?]
パッケージのダウンロード/インストール/削除を行います。

と、こんな具合にパッケージの削除・インストールを行わずに、何がどうなるのかを確認することが出来ます。
解決すべき依存関係が出たタイミングで、aptitude が提示する案を受け入れるか否かを選択していくことで、削除・インストールされるパッケージが決定される、という流れになります。

とりあえず、結果から行くと MySQL 関連のパッケージ削除に引っ張られて削除されてしまうものはないみたいなので、再インストールしなくちゃいけないパッケージは発生しないようですね。

#他の人の書いた Debian での MySQL → MariaDB リプレース手順チェックしてみると、MySQL の削除と MariaDB のインストールをそれそれ別のステップに分けてるのが多い気がする。

いざ、リプレース!

とりあえず、パッケージ絡みでの問題はあまりなさそうなのがわかったので、さくっとリプレース。

-s オプションを外して、 "aptitude install mariadb-server-10.0" と実行すれば、 MySQL から MariaDB へのリプレース完了!

途中、MySQL の削除するための前処理にあたる mysqld 停止のところで時間がかかりますけど、特にエラーも出ずに終了。Zabbix も監視データの取得、Web GUIの表示ともに正常に行えているようですので、動作的な問題もなさそうです。

ということで、あっさり終わって、ちょっと拍子抜けという感じもありますが、リプレースは無事終了。
#もう 1 台のサーバは、様子を見つつ追々やりますかね。

トラックバック(1)

Zabbix に関して言えば、このところずっと開発版を追っかけているわけですけど、ダッシュボードでグラフを表示させた後、グラフの自動再描画がかかっても、ず... 続きを読む

コメントする