アプリケーションサービス部の千葉です。
自分の部署では社内外を問わず AWS のトレーニングを担うチームが存在します。
トレーニングの内容は顧客役から提示されたRFPを元にした提案から、受託〜検収までの一連の流れを模擬案件としてカリキュラムにしたものをトレーニーのレベルに合わせて複数実施してもらう。と言ったものです。
その中で、RDS を使ったアーキテクチャを提案していただく課題があるのですが、実装時に Amazon Linux 2023 に MySQL Client をインストールしようとするメンバーが後を絶たないので今回の記事を投稿しようと思いました。
インストールする手順は沢山のテック系 Blog で発信されており、その殆どの記事では丁寧に『MariaDBを使うと良いよ』と補足をしてくれているのですが、みんなインストール手順以外は読み飛ばしてるんじゃないかな。と
MariaDB の使用状況
Arch Linux / Fedora / openSUSE / SlackWare / Red Hat Enterprise Linux / Debian 等のディストリビューションで、既に MySQL から MariaDB への置き換えが完了しています。
また、Google は MariaDB 財団に開発者を派遣し内部 DB を MySQL から MariaDB へ置き換えています。
MariaDB が生まれた背景を理解したら、なぜ多くのオープンソースプロジェクトで MySQL ではなく MariaDB の採用が進んでいるのかを理解してもらえると思います。
MariaDB ってなに?
歴史は2009年04月20日まで遡ります。
この日、Oracle 社が Sun Microsystems 社を買収することに両社が合意しました。
これにより Sun が保有していた Java と同社が2008年に買収した MySQL を Oracle 社が手に入れることになります。
実は、この3年前にあたる2006年に Oracle 社は MySQL から拒否されるかたちで買収に失敗しているんです。
3年越しの MySQL 買収であること、また商用 RDB として強力なプロダクトを既にもっている Oracle 社がオープンソース・ソフトウェアである MySQL を買収後どのように扱っていくのか?といった論点で界隈は大いに盛り上がりました。
同年、MySQL の作者であるミカエル・ウィデニウスにより既存の MySQL をフォークするかたちで立ち上げたプロジェクトが MariaDB となります。
買収された会社が保有している既存の RDB として統合されたり、オープンソース・ソフトウェアの精神性が害される可能性がある環境下でプロジェクトを運営したくなかったんじゃないかな。って勝手に推測しています。
ちなみに、MySQL 名前は作者の長女の名前に由来しており、MariaDB の方は次女の名前から拝借しているそうです。
MySQL や Aurora のような RDS のクライアントとして MariaDB Client を利用して問題ないの?
問題ありません。これが今回の記事で最もお伝えしたいポイントです。
AWS からも以下のアナウンスがされています。
MariaDB は MySQL の構造、命名規則、データ定義ファイルを保持しています。さらに、すべての MySQL コネクタ、接続、およびポートをサポートします。
MySQL クライアントパッケージは MariaDB で変更しなくても動作します。
Amazon Linux 2023 から Aurora (MySQL Compatible) へ接続する
MariaDB Client パッケージのインストール
$ sudo dnf install mariadb105
Aurora への接続
$ mariadb -u admin -p -h example.cluster-xxxxxxxxxxxx.ap-northeast-1.rds.amazonaws.com
なぜ Amazon Linux 2023 で MySQL のバイナリパッケージを使わないほうが良いのか?
多くの方は MySQL のサイトから Community バージョン( Enterprise のサポートなし版)の、特に RHEL9 用のパッケージをダウンロードしていると思います。
別のディストリビューション向けバイナリパッケージの利用は、それなりの『覚悟』が必要だと考えます。
1. Amazon Linux 2023 の稼働環境にマッチしているとは限らない
標準 C ライブラリや Linux のシステムコール、ビルド環境が異なれば生成されるバイナリも異なります。
2. アップデートポリシーによって将来の動作が変わる可能性がある
ソフトウェア的な低レイヤ層だけでなく、今後の RHEL9 のアップデートによってインストール・アップデート・動作しなくなることもあります。
マイナーアップデートで新機能が RHEL9 に入ったとし、それが MySQL の機能追加になった場合、Amazon Linux 2023 がそれをサポートしていないと MySQL Community for RHEL9 パッケージを継続して利用できなくなる可能性もあります。
別ディストリ用バイナリパッケージを流用して『動く』のは実は『奇跡的』なことです。
別ディストリのパッケージを利用する際は、上記の様な状態になる懸念を理解することが必要です。
さいごに
『インストールできた』『動いた』からOKといった、短絡的で安易な判断をすることはプロフェッショナルの姿勢としては間違っていると思います。
我々が構築するシステムの多くは顧客の為のものです、継続性も考慮したアーキテクチャ設計ができるようになると良いですね。
以上、おしまい。