🐬

MySQL 8.0 compatibleがAmazon Auroraにやってきた!

2021/12/04に公開

この記事は株式会社FOLIOアドベントカレンダーの4日目の記事です🎉

🐬書いていること is 何?

  • Auroraは今までMySQL5.6.10a, 5.7.12 compatibleのバージョンしかなかった
  • 2021/11/18にMySQL8.0.23 compatibleが出たのでその調査
    • community MySQL8.0.23の機能については記載していない
    • 2021/11/23時点での調査

まとめ

先にまとめを書くと以下のようになります

  • Aurora version3はMySQL8.0系の新機能が使えるようになる
  • 既存のClusterのバージョンアップは大変
    • in-placeバージョンアップができない
    • パラメータグループや各種変数が変更・追加・削除されている
  • LTSバージョンがまだ出ていないので、出てから考えてもよい
  • まだ対応していない機能がある
    • Backtrack
    • Aurora Serverless
    • Aurora Proxy

Amazon Aurora Version3(MySQL8.0compatible)

前提

AWSではAmazon Auroraという独自のRDBMSサービスを提供しています。
AuroraはAWSのインフラアーキテクチャに合わせて設計された独自のRDBMSで、高いパフォーマンスとスケーラビリティが持ち味です。独自のRDBMSですがインターフェイスはMySQLとPostgreSQLと互換性のある2つのサービスがあります。この記事ではMySQLインターフェイスのことを取り上げています。
今回は2021/11/18にgenerally availableとなったMySQL8.0互換のあるVersion3の調査をしました。MySQL8.0系はCTEWindow関数など、5.7系になかった機能が多数実装されており、Auroraでのリリースが待ち望まれたバージョンになります。

AuroraとMySQLのバージョン

Aurora MySQL version3はcommunity MySQLの 8.0.23 と互換性のあるバージョンとなっています。執筆時点では8.0.mysql_aurora.3.01.0がリリースされています。
Auroraは<major version>.<minor version>.<patch version> でバージョン管理されており、メジャーバージョン毎にマイナーバージョンレベルでのLTS(Long Term Support)バージョンが存在します。
2021/11/23現在、Aurora MySQL version3はLTSが存在しません。従って、迅速なバージョンアップ対応ができないユーザ/システムにはまだ早い可能性があります。
参考までに各メジャーバージョンのLTSは以下です。

メジャーバージョン LTSバージョン
1(MySQL 5.6.10a comaptible) 1.19, 1.22
2(MySQL 5.7.12 comaptible) 2.04, 2.07
3(MySQL 8.0.23 comaptible) -

Aurora version3へのアップグレード

Auroraのバージョンアップは以下のフローに沿って実施します。
バージョンアップフロー

Aurora version3にバージョンアップできるversion2の一覧は以下のようになっています。

8.0.mysql_aurora.3.01.0へのバージョンアップパス一覧
$ aws rds describe-db-engine-versions --engine aurora-mysql \
  --query '*[].{EngineVersion:EngineVersion,TargetVersions:ValidUpgradeTarget[*].EngineVersion} |
    [?contains(TargetVersions, `'8.0.mysql_aurora.3.01.0'`) == `true`]|[].EngineVersion' \
  --output text | xargs -n1 echo
5.7.12
5.7.mysql_aurora.2.03.2
5.7.mysql_aurora.2.03.3
5.7.mysql_aurora.2.03.4
5.7.mysql_aurora.2.04.0
5.7.mysql_aurora.2.04.1
5.7.mysql_aurora.2.04.2
5.7.mysql_aurora.2.04.3
5.7.mysql_aurora.2.04.4
5.7.mysql_aurora.2.04.5
5.7.mysql_aurora.2.04.6
5.7.mysql_aurora.2.04.7
5.7.mysql_aurora.2.04.8
5.7.mysql_aurora.2.04.9
5.7.mysql_aurora.2.05.0
5.7.mysql_aurora.2.06.0
5.7.mysql_aurora.2.07.0
5.7.mysql_aurora.2.07.1
5.7.mysql_aurora.2.07.2
5.7.mysql_aurora.2.07.3
5.7.mysql_aurora.2.07.4
5.7.mysql_aurora.2.07.5
5.7.mysql_aurora.2.07.6
5.7.mysql_aurora.2.08.0
5.7.mysql_aurora.2.08.1
5.7.mysql_aurora.2.08.2
5.7.mysql_aurora.2.08.3
5.7.mysql_aurora.2.09.0
5.7.mysql_aurora.2.09.1
5.7.mysql_aurora.2.09.2
5.7.mysql_aurora.2.09.3
5.7.mysql_aurora.2.10.0
5.7.mysql_aurora.2.10.1

バージョンアップの注意点

Aurora version2からの差分

以下はAurora version2からバージョンアップする際に、検討するべき機能差分を整理したものです。

デプロイできるInstance Class

db.r5, db.r6g, db.x2g, db.t3, db.t4g が利用できます。
昔のdb.r4, r3, t3.small, t2は使えません。

追加/削除/一時的に利用不可になるパラメータグループ

Aurora version3になることでCluster,Instanceのパラメータグループ(概ねmy.cnf相当)で追加/削除/一時的に利用できないパラメータがあります。
以下のページの各パラメータシートのNotes欄を参照するとよいです。
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Reference.html
また、上記ページには利用不可になるMySQL status variablesもあるのでチェックしておくとよいです。

(改修予定)Backtrackが利用できない

同一インスタンスを特定日時の状態に戻すbacktrack機能が現バージョンでは利用できません。

デフォルト文字コードの変更

文字コードのデフォルトが変わります。(日本でのサービスであればありがたい変更と言えます。)

バージョン 文字コード
version2 latin1
version3 utf8mb4

(改修予定)Percona XtraBackupが利用不可

Percona XtraBackupを使ったバックアップができません。将来的にはサポートする予定はあるそうです。

mysql.lambda_async stored procedureの廃止

Auroraからlambda関数を呼び出す mysql.lambda_async stored procedureが完全廃止となり lambda_async 関数に移行しました。(Aurora version2のときは非推奨だったものが正式廃止になりました)
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Integrating.Lambda.html

innodb_flush_log_at_trx_commitの変更禁止

Aurora version1/2では変更できたinnodb_flush_log_at_trx_commitが変更できなくなります。
WALのディスクの書き出しがトランザクション毎に固定されます。

Aurora Serverlessの利用

以下のようになっており、商用利用はまだできなそうです。

Auroraバージョン Serverlessバージョン 対応状況
version2 version1 未対応
version3 version2(プレビュー版) 利用可

(改修予定)RDS Proxyの関連付けがうまくできない

RDS ProxyにAurora version3を選択すると関連づいていないProxyができてしまう。

おわりに

待ちに待ったMySQL8.0系compatibleのAuroraが出ました。
細かいところはまだこれからといった印象ですが、重要な機能が出るMySQL8.0系にアップグレードは非常に楽しみなので、時間が作れたら入れる価値が十分あると感じました。
また、FOLIOアドベントカレンダーはまだまだ続くのでよろしくお願いします。

参考記事

AWS Database Blog
https://aws.amazon.com/jp/blogs/database/amazon-aurora-mysql-3-with-mysql-8-0-compatibility-is-now-generally-available/
AWS 公式 doc
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.MySQL80.html
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.Updates.Versions.html#AuroraMySQL.Updates.LTS

Discussion