MySQL 8.0 compatibleがAmazon Auroraにやってきた!
この記事は株式会社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系はCTEやWindow関数など、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
バージョンアップの注意点
- 調査時点ではin-placeアップグレードはできません
- 上記対応バージョンであれば、Auroraのスナップショットからversion3へリストアできます
- backtrackを利用しているClusterであれば、論理dumpからのリストアをします
- CloudWatchのメトリクス名も変更されるものがあるので、監視系スクリプトやIaC(CloudFormation/Terraform/etc..)で指定している場合は修正が必要です
https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/AuroraMySQL.MySQL80.html#AuroraMySQL.8.0-inclusive-language
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
欄を参照するとよいです。
また、上記ページには利用不可になる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のときは非推奨だったものが正式廃止になりました)
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
AWS 公式 doc
Discussion