Amazon LinuxにMariaDBをインストール

Amazon LinuxにMariaDBのインストールを試してみました。
ですがどうやらAmazon Linuxはサポートしていないようで、Amazon Linux2を使って下さいとのことです。
Amazon Linux以外のAMIを利用する場合には本記事の状況にはなりませんが、Aamazon Linuxを使う場合には注意が必要です。
今回はAmazon Linux/Amazon Linux2それぞれでMariaDBをインストールした際の結果についてを記載したいと思います。

インストール完了後は簡単ですが、MariaDB-clientパッケージに付属するmysqlコマンドを使ってAurora ServerlessなRDSクラスタへ接続確認をしました。
ServerlessなRDSクラスタは現時点でAuroraエンジン(5.6)のみ対応のようです。



###1. EC2にMariaDBをインストール
事前にEC2インスタンスを作成しSSHでログインしておきます。
ログイン後に初期環境設定を実施し、以下コマンドでMariaDBをインストールします。(MariaDBの設定は今回は割愛します。)

```
cat << EOF | sudo tee -a /etc/yum.repos.d/mariadb.repo

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.3/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
EOF

sudo yum install MariaDB-server MariaDB-client -y
```


参考ですが、今回利用したAMIは「Amazon Linux 2 LTS Candidate AMI 2017.12.0 (HVM), SSD Volume Type」です。
お試しなのでインスタンスサイズはt2.micro、スポットインスタンスを利用すると安上がりになるかもしれません。

単純なファイル追記の場合、ヒアドキュメント＋teeの組み合わせは便利ですね。(sudoが不要の場合はヒアドキュメント＋リダイレクトになる)
repoファイルの作成にviエディタを開かなくてもいいのは便利。

続いてインストールの出力となります。


###2-1. Amazon Linuxの場合のインストール結果
MariaDBをインストールしようとすると以下のエラーが出ます。

```
(省略)
--> トランザクションの確認を実行しています。
---> パッケージ MariaDB-client.x86_64 0:10.3.9-1.el7.centos を インストール
--> 依存性の処理をしています: libsystemd.so.0()(64bit) のパッケージ: MariaDB-client-10.3.9-1.el7.centos.x86_64
--> 依存性解決を終了しました。
エラー: パッケージ: MariaDB-client-10.3.9-1.el7.centos.x86_64 (mariadb)
             要求: libsystemd.so.0()(64bit)
 問題を回避するために --skip-broken を用いることができます。
 これらを試行できます: rpm -Va --nofiles --nodigest
```

MariaDBパッケージはsystemdに依存しているようですが、Amazon Linuxはsystemdをサポートしていないとのこと。
(正式サポートはAmazon Linux2から)

serverパッケージだけでなくclientパッケージもsystemdに依存しています。
（サーバ用途ならRDS使うと言う選択になる？クライアントツールは別途用意が必要になりますが...)


####2-2. Amazon Linux2の場合のインストール結果
無事インストールできました。

```
インストール:
  MariaDB-client.x86_64 0:10.3.9-1.el7.centos                 MariaDB-compat.x86_64 0:10.3.9-1.el7.centos                
  MariaDB-server.x86_64 0:10.3.9-1.el7.centos                

(省略)                                                                                

完了しました!
```

色々と調べてみましたが「なんでamazon linux ami使ってんの？centos ami使いなさい」ということだそうで。。。
https://serverfault.com/questions/775012/how-to-install-mariadb-on-amazon-linux

###3. Aurora Serverlessに接続してみる
MariaDB-clientパッケージでmysqlコマンドをインストールできたので、Aurora Serverlessに接続してみたいと思います。

RDSクラスタは以下のような感じです。(Aurora Serverlessの設定などは別途まとめてみたいと思います）
<img width="820" alt="aurora_serverless_summary.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/3ff31014-752d-6a4a-c371-4dd9421a7b6d.png">
<img width="822" alt="aurora_serverless_desc.png" src="https://qiita-image-store.s3.amazonaws.com/0/280717/afcdd7f5-ad27-d212-c4f8-0a38948d4a3c.png">

クライアントからの接続先はdatabase endpointで確認。
以下のように接続ます。

```
mysql -u username -p -h rdsclustername.cluster-XXXXXXXX.us-west-2.rds.amazonaws.com
Enter password: 

Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 5.6.10 MySQL Community Server (GPL)

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MySQL [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.004 sec)

MySQL [(none)]> 
```

アイドル状態が続くと処理性能は停止(インスタンスが停止した感じ?)するようです。一度停止し再接続の際に再開するようですが数十秒かかりそうな感じでした。（未確認ですが、少し放置してから接続した際に応答が若干遅かった。）

Aurora Serverlessの課金項目は、処理性能(Aurora Capacity Unit)、ストレージ容量、I/O数のようです。（本家ドキュメントを確認ください）
1ACUあたり0.06USD/Hで起動(現)時点で4ACUなので、１時間あたり0.24USD(26円?)でしょうか。（ストレージとI/O数は別途算出。


###まとめ
Amazon Linux AMIではMariaDB(クライアントパッケージ含む)をインストールできないので、EC2にMariaDBをインストールする場合、AMIは
Amazon Linux2もしくはCentOSを選択して下さいとのことです。

また簡単ですがAurora Serverlessをさっくり使ってみました。
(当初はこちらをしたかった...て言うかlambda関数からアクセスしたかった。Aurora Serverlessは記載内容を分離して整理したいと思います）


###参考記事
[Amazon Linux 2](https://aws.amazon.com/jp/amazon-linux-2/)
[Downloads Setting up MariaDB Repositories](https://downloads.mariadb.org/mariadb/repositories/)
[How to install mariadb on amazon linux](https://serverfault.com/questions/775012/how-to-install-mariadb-on-amazon-linux)
[Amazon Aurora Serverless](https://aws.amazon.com/jp/rds/aurora/serverless/)
[ヒアドキュメントを使いこなそう](https://qiita.com/hit/items/a8ac197375b4309511a4)
[sudoでリダイレクトをしたいとき](http://yut.hatenablog.com/entry/20111013/1318436872)