はじめに
Amazon Linux 2023 で動いている EC2 から RDS MySQL や Aurora MySQL に接続したいことが結構あります(Fargate の踏み台使えとかはなし)。
しかし、Amazon Linux 2023 の公式 yum リポジトリにも MySQL クライアントのパッケージはなさそうでした。
実際どうするのが一番良さそうなのか気になりつつ、2023/7時点での対応状況などなどを軽く調べてみました。
AWSのドキュメント
RDS MySQL DBインスタンスの接続には MariaDB クライアントを使うように促されてます。
Aurora MySQL への接続は、Aurora MySQL のバージョンと互換性のあるバージョンのMySQLクライアントを使え、ということみたいです。
一方でアプリケーションで使うドライバは以下を使うのがよさそうに思われました。フェイルオーバー時の挙動に対応してそうに思われました。 * GitHub - awslabs/aws-mysql-jdbc: The Amazon Web Services (AWS) JDBC Driver for MySQL is a driver that enables applications to take full advantage of the features of clustered MySQL databases. * Amazon Web Services (AWS) JDBC Driver for MySQL
MySQL側
一方で、MySQL 側では、RHEL/Oracle Linux/Fedora 向けの yum リポジトリは提供されています。 これらを使うことでインストールして使えそうですが(試してない)、厳密には Amazon Linux 2023 のものではありません。
ソースビルドも考えましたが、今のところ glibc で合っているものがなさそうでした。
Amazon Linux 2023 で公式のMySQLクライアントを使おうと思うと、以下のような感じで Docker イメージを使うのが楽そうに思いました。
% docker run --rm -it mysql:8.0.33 mysql -h db-hostname -u db-user -p
MariaDB と MySQL
MariaDB と MySQLの対応ってどんな感じかあまり分かってなかったのでこれも少し見てみました。
サーバー側は MariaDB 10.3 あたりから微妙に非互換が出てきているようです。
一部コネクターでは問題があったりするようでした。
でもMariaDB クライアントを利用して接続すること自体は通常は大丈夫そうな感じはします。
まとめ
Amazon Linux 2023 から、通常のちょっとしたオペレーションで Aurora MySQL へ接続する分には MariaDB クライアントでもよさそうに思いました。 Amazon Linux 2023 で公式のMySQLクライアントを使おうと思うと、Dockerイメージを使うのが楽そうに思いました。 アプリケーションで利用する場合は、aws-mysql-jdbcを使うのが良さそうに思いました。
参考
- Connecting to a DB instance running the MySQL database engine - Amazon Relational Database Service
- Connecting to an Amazon Aurora DB cluster - Amazon Aurora
- GitHub - awslabs/aws-mysql-jdbc: The Amazon Web Services (AWS) JDBC Driver for MySQL is a driver that enables applications to take full advantage of the features of clustered MySQL databases.
- Amazon Web Services (AWS) JDBC Driver for MySQL
- Maria DB Driver with AWS Aurora - MariaDB Knowledge Base