🌌
Amazon Aurora MySQL v1(5.6 互換)→ v3(8.0 互換)移行を計画する(1)はじめに
Amazon Aurora MySQL 互換エディション(以降「Aurora MySQL」と表記)のバージョン 1(MySQL 5.6 互換・以降「v1」)の EoL が発表されました。
ここで 「v2(MySQL 5.7 互換)への移行でお茶を濁す」 ことも考えられますが、本家 MySQL 5.7 の EoL も 2023/10/21 に迫っています。
仮に今回の v1(MySQL 5.6)同様だとすると Aurora MySQL v2 の EoL は本家の 2 年後の 2025/10 あたりでしょうか。ちょっと微妙ですね。
というわけで、これから数週間の予定で Aurora MySQL v3(MySQL 8.0 互換)移行に必要そうな情報をかき集めてみます。
そもそも Aurora MySQL v3 に移行するメリットは?
Aurora MySQL v2 の EoL 予想時期が微妙だとして、それだけの理由でいきなり v3 への移行を進めようとすると、
- まだ 3 年以上あるなら大丈夫じゃない?
- いきなりバージョン飛ばしするのはリスク大きいんじゃない?
という声に負けて頓挫するかもしれません。
そのような声に負けないように(?)あらかじめ知っておくと良さそうな点をまとめてみました。
新機能が追加されている
代表的なものを挙げます。
- ウィンドウ関数
- 共通テーブル式(CTE・
WITH
句) -
CHECK
制約 - ロールによる権限管理
既存の機能が強化されている
同様に、いくつか挙げます。
- インデックス関連
- 降順インデックス
- 関数&式インデックス
- 不可視インデックス
- JSON 機能
-
JSON_TABLE()
関数 - 複数値インデックス
- 行更新の内部処理効率化
-
ドキュメントストアとしての利用https://qiita.com/hmatsu47/items/2de98cd0c9472e72a52a- Aurora MySQL v3 は X プラグインをサポートしていませんでした…残念
-
- GIS 機能
(ワークロードによっては)高速化が期待できる
実行計画のバリエーションが増えたため、ワークロードによっては高速化する可能性があります。
- (本家 MySQL 8.0 ベースの)ハッシュジョイン対応
- アンチジョインの効率化
- ヒストグラム対応
また、後日続きの記事で触れる予定ですが、Aurora 独自実装のパラレルクエリの適用範囲が広がっています。
v3 移行で気を付けなければならないポイントは?
v1(MySQL 5.6)→ v2(MySQL 5.7)と比べても要配慮な変更点が多いです。
現時点で頭の中に浮かんでいるものだけを挙げても、
- 過去のバージョンとの非互換
- デフォルト設定の変更
- 例:SQL モード・文字セット・照合順序・認証プラグイン
- デフォルト動作の変更
- 例:暗黙のソート順・
GROUP BY
でのソート
- 例:暗黙のソート順・
- 機能追加の影響
- 例:予約語の追加 → 既存アプリケーションで使用しているデータベース(スキーマ)名・テーブル名・列名などとのバッティング
- 機能削除(または非推奨)の影響
- 例:クエリキャッシュ廃止
- 新機能への移行による影響
- 例:ロック確認用
INFORMATION_SCHEMA
スキーマ・sys
スキーマ内テーブル&ビュー変更
- 例:ロック確認用
- デフォルト設定の変更
- 性能の変化
- CPU コア数が少ないインスタンスでは以前のバージョンより性能が劣化する可能性がある
- スケール重視の設計に変わってきているため
- 過去バージョンでクエリキャッシュが有効に働いていたケースでは性能低下の可能性がある
- 認証方式と暗号化の見直しを行う場合はコネクションのオーバーヘッド増加で性能低下の可能性がある
- CPU コア数が少ないインスタンスでは以前のバージョンより性能が劣化する可能性がある
- Aurora 固有の事情・制約
- パラメータグループの初期値・項目の変更がある
現時点では v3 へのインプレースアップグレードができない現時点ではバックトラックが使えない
などがあります。
今後の記事で順次触れていく予定です。
に続きます。
Discussion