Web制作、Web開発の歩き方

サーバー、データベース、インフラに関するトピックス

■第12話:MySQLからMariaDBへのリプレース

(最終更新日:2023.09.12)

Cookieのイメージ
この記事は6分で読めます!
(絵が小さい場合はスマホを横に)

「安全に移行したい!」

MySQL自体に不満は無いものの、OracleがMySQLを所有してから「このまま無料で使えるのか」と不安を感じる人も少なくない。 一方、MariaDBは完全オープンソースのソフトウェアであり、無料で安心して使いたい方にお薦めできる。 今回はそんなMySQLからMariaDBへのリプレース方法やそれに関する情報を紹介する。


1.mysqldumpによるexport、import

MariaDBとMySQLはそれぞれ、MariaDB10.3とMySQL5.7まではバイナリ互換であったため、ファイルをそのままコピーするだけで移行できた。 しかし、MariaDB10.4とMySQL8.0以降では互換性がなくなっている。 そのため、データを移行するにはmysqldumpによって、一旦データをsqlファイルにexportする必要がある。

mysqldump自体は、MySQL Workbenchを使うなり、mysqldumpコマンドを使うことで簡単にバックアップファイルを作成することができる。 このバックアップファイル(sqlの書かれたファイル)をMariaDBにimportすれば、データを移行することができる。

バイナリ互換があったときは、データベースを止めてバイナリファイルをコピーすれば、それでバックアップ完了である。 それに比べると、今回のようなexportとimportを行う方法は、若干面倒である。 というのも、import先に同名のデータベーススキーマを作ってimportする必要がある。データベーススキーマが多い場合は特に面倒である。 しかしながら、行う作業自体は難しくないのと、バージョンの互換性、my.iniファイルのコピー、ログのコピーといった部分を考慮しなくて良いので、 安全に移行するという意味では、かえってやり易いと思う。

データベースの移行に際してバックアップファイルは残るが、importが上手くいかなかった時を考慮して、データベース自体のフルバックアップも取っておこう。

データベースのインデックス

mysqldumpのコマンド



2.移行のテスト

移行したら、まずは今まで使用していた命令が動くか確認してみよう。 SQL単位で確認した上で、アプリケーションでの動作を確認するのが理想ではあるが、 そこまで特殊な変数、関数を使ってないのであれば、アプリケーション上での動作だけでも構わない。 動作検証して問題がなければそのまま、SQLが実行されない、取得したデータがおかしい(ゼロ埋めしてしまう等の型ずれ)がある場合は、 原因箇所を特定して、修正コードを充てるなりの対処をしよう。

地味な作業だが、この辺りは1つ1つ確認するしかないと思う。 テストコードがあれば、ある程度は自動化できる。そこで、許容値から外れた変な値を見つけてくれるはずだ。

動作検証

3.移行における注意点

ほぼ、同様の命令が使えるとはいえ、MySQLとMariaDBもバージョンが進むにつれ違いが出てきた。 注意して見る点としては、以下の通りである。

「MySQL固有の関数や変数を使ってないか?」
「ストレージエンジンは同じか?」
「認証プラグインや暗号化は同じものが使えるか?」
「ユーザやロール権限の取り扱いは同じにできるか?」

この辺りは確認した上で、MySQLからMariaDBへの移行に取り掛かろう。

注意点

4.まとめ

以前よりは互換性がなくなったとは言え、MySQLからMariaDBの移行はそれほど難しくない。 完全なオープンソースなソフトを使いたいという方は、一つの手段として持っておいて良いだろう。 一点注意点として、現時点ではMariaDBの長期サポートはMySQLの長期サポートよりも短い傾向にある。 MariaDBは5年、MySQLは通常で7~8年程度である。

有償サポートをつければ、MySQLは10年程度は使い続けることができる。 更に、セキュリティ監視や自動バックアップ、パフォーマンスチューニング、問題発生時の問合せなどをサポートしてくれる。 そのあたりも考慮した上で、どちらを使うかを決めよう。

▼参考図書、サイト

   MariaDB Foundation  MySQL
   MariaDB と MySQL の違いは?  aws