MariaDB と MySQL のバージョン比較

どこにも見やすい相対表が無かったので作りました。

ただ、よく調べてみると、MariaDB が MySQL よりも先に特定の機能を先に導入したりしていて、 完璧な相対は出来ない です。(まあ完璧に同じだったらなぜ別の製品を作らないといけないのかという話になりますよね)。

なので、この相対表を仕事で使うのは絶対におすすめしません (免責)。

MariaDB公式サイトの MySQL との比較ドキュメントを参考に作成しました。

MariaDB MySQL
5.1 5.1
5.2 5.1
5.3 5.1
5.5 5.5
10.0-10.1 5.6
10.2~3 5.7 (*)
10.4~7 8.0 (*)

バイナリ&レプリカ互換

両ソフト 5.5 まではほぼ完全互換。

MariaDB 10.0~3 は InnoDB の互換性の問題がるものの、ほぼバイナリ互換があります。

MariaDB 10.2 サーバーは、MySQL 5.7 サーバーのレプリカサーバーとしても機能するらしいです。MySQL の一部情報、Global Transaction IDs (GTIDs) events は MariaDB GTID events の置き換えられてしまうらしいです。

MariaDB 10.3 と MySQL 5.7 とそれ以前は、バイナリ互換があります。

バイナリ互換を簡単に説明すると、MySQL 5.7 をアンインストールして、サーバー上の /var/lib/mysql に生の DB データを残したまま、MariaDB 10.3 をインストールすると、そのまま DB 情報を引き継いで使い続けることができるということです。

MySQL 8 は、MariaDB とバイナリ互換がありません。

MySQL 8 と MariaDB 10.4 以降は注意

MySQL 8 と MariaDB 10.4~ はバイナリ互換性が無くなっています。

差分がすごく細かいので、MariaDB公式サイトの MySQL との比較ドキュメントを参考にすると良いです。

Concrete CMS は MySQL 5.1.5 から対応

Concrete CMS (旧 concrete5)は 5.7.0〜8.5.2までは MySQL 5.1.5 から対応しています。

絵文字 (utf8mb4) の対応は 8.5.0 からです。

絵文字対応

大多数に絵文字を利用するには、utf8mb4 の collation や charaset である必要があります。 InnoDB で Antelope なデータベースだと、DBの変換時に Index エラーが起きる場合があります。

MySQL 5.7.9 以降だと InnoDB の設定追加が不要になったので、MySQL 5.7.9 以降の選択をおすすめします。

innodb_file_per_table
innodb_file_format = Barracuda
innodb_file_format_max = Barracuda
innodb_large_prefix

こぼれ話

MySQL の My はオリジナルコード作者の Michael "Monty" Widenius の娘の名前。 MariaDB は、MySQL が当時サン・マイクロシステムズ社に買収され、退社した後に作った互換DB。名前の Maria も、Widenius氏の娘の名前。まさに姉妹DB。

参考