Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Aurora MySQL v1 → v3 の移行を準備する

hmatsu47
April 10, 2022

Aurora MySQL v1 → v3 の移行を準備する

JAWS-UG 朝会 #32 2022/4/11

hmatsu47

April 10, 2022
Tweet

More Decks by hmatsu47

Other Decks in Technology

Transcript

  1. Aurora MySQL v1 → v3 の移行を準備する
    JAWS-UG朝会 #32 2022/4/11
    まつひさ(hmatsu47)

    View full-size slide

  2. 自己紹介
    松久裕保(@hmatsu47)
    ● https://qiita.com/hmatsu47
    名古屋で Web インフラのお守り係をしています
    以前 MySQL 8.0 の薄い本を作って配っていました
    ○ Qiita の記事:
    https://qiita.com/hmatsu47/items/ceb75caf46e3c761095d
    ○ GitHub リポジトリの他、印刷版を BOOTH で配布していました
    ○ 2021/5 発行の 8.0.24 対応版を最後に更新停止しました
    https://note.com/hmatsu47/n/n3ad586c31dce
    2

    View full-size slide

  3. 本日のネタ
    ● Aurora MySQL v1(5.6 互換)の EoL が発表
    ○ https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.
    MySQL56.EOL.html
    ● 2023/2/28 までに v2 または v3 へ移行が必要
    ● せっかく移行するなら v3 へ
    ● v3 移行に必要な情報を集めて Zenn で本にまとめた
    …という話
    3

    View full-size slide

  4. Aurora MySQL v1 の EoL までの流れ
    ● 2022/9/27 : 新しいクラスタ・インスタンス作成停止
    ○ 以下は(EoL まで)実行可能
    ■ v1 スナップショットの復元
    ■ クラスタにリードレプリカ追加
    ■ インスタンス設定変更
    ■ ポイントインタイムリカバリ(PITR)
    ■ 既存 v1 クラスタのクローン作成
    ● 2023/2/28 : EoL(予定)※時刻はいずれも 00:00:00 UTC
    4

    View full-size slide

  5. Aurora MySQL v2 の EoL はどうなる?
    ● Amazon Aurora メジャーバージョンが利用可能な期間
    ○ https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Aurora.V
    ersionPolicy.html#Aurora.VersionPolicy.MajorVersionLifetime
    ■ 現時点の予定 : 2024/2/29
    ■ 延長される可能性はある
    ● 本家 MySQL 5.7 の EoL : 2023/10/21
    ○ https://endoflife.software/applications/databases/mysql
    ■ あと 1 年半後
    5

    View full-size slide

  6. Aurora MySQL v3 への移行、という選択
    ● ベースは MySQL の最新バージョン、8.0 に
    ● 他の RDBMS と遜色ないレベルの SQL 文をサポート
    ○ MySQL は「軽い SQL 文を高速に実行」が売りだった
    ○ その分複雑な処理は苦手→バージョンを重ねるごとに改善
    ● 性能向上
    ○ 並列処理性能が向上
    ○ インデックスのないテーブル結合の高速化(ハッシュ結合)
    6

    View full-size slide

  7. ただし、v1 からの移行には難しさも
    ● v2 以降に廃止・変更された機能がある
    ○ AWS 公式 Aurora MySQL 関連ドキュメント
    ● リリースモデルの変更がある
    ○ Continuous Delivery Model(継続提供モデル)を採用
    ● 移行パスや移行条件に制限がある
    ○ v3 へのインプレースアップグレード不可、など
    ● コードが大きく書き換えられている
    7

    View full-size slide

  8. 移行の難しさ①廃止・変更された機能がある
    ● クエリキャッシュ廃止
    ○ 便利だけど並列処理の妨げに→本家 MySQL 8.0 で廃止
    ● 古い暗号化関数の廃止
    ○ 時代の流れ(脆弱な暗号を使い続けるの、ダメ!)
    ● MySQL 独自文法の廃止
    ○ 例 : GRANT 文でユーザ作成と権限の割り当てを一度に済ませる
    ● GIS 機能リニューアルによる非互換 などなど
    8

    View full-size slide

  9. 移行の難しさ②リリースモデルの変更がある
    ● コミュニティ版 MySQL 8.0 のリリースモデル変更
    ○ Continuous Delivery Model(継続提供モデル)を採用
    ○ マイナーバージョンアップで機能が追加・変更・削除される
    ● Aurora MySQL v3 も本家に追従する予定
    ○ 初期リリースの 3.01.0 : MySQL 8.0.23 互換
    ■ LTS (長期サポートバージョン)ではない
    ■ 今後のマイナーバージョンで LTS 提供予定
    9

    View full-size slide

  10. リリースモデル変更による影響
    ● 予約語の追加(継続的に発生)
    ○ 新機能に関するキーワードが予約語化(RANK など)
    ○ テーブル名やカラム名などとのバッティングで不具合の可能性
    ● 挙動が変更される機能・SQL 文の存在(同上)
    ○ 例 : GROUP BY 〜 ASC/DESC および暗黙ソート廃止(8.0.13)
    ■ これは MySQL ユーザにはよく使われているので影響範囲が大きい
    ■ 特に ASC を指定しない暗黙ソートは無意識に使っていることが多い
    10

    View full-size slide

  11. 移行の難しさ③移行パスや移行条件に制約がある
    ● v1 → v3 は直接アップグレードできない
    ○ クローンなどで一旦 v2 へ
    ● v2 → v3 クローン・インプレースアップグレード未提供
    ○ v2 → v3 は今のところスナップショットからの復元一択
    ○ 現状では Global Database を v3 に移行するのが困難
    ● バックトラック使用中のクラスタは NG
    ● Aurora Serverless v1 は非サポート
    11

    View full-size slide

  12. 移行の難しさ④コードが大きく書き換えられている
    ● SQL 文の仕様が同じでも内部処理が違うと…
    ○ 同じ SQL 文を実行しているのに思わぬ性能低下の可能性が
    ● 実は MySQL 5.6 → 5.7 でもそこそこ変更が入っている
    ○ まれに旧バージョンより遅くなるSQL 文があったり
    ● MySQL 8.0 では、それ以上に変更が入っている
    ○ Aurora MySQL v3 でも同様の問題が生じる可能性あり
    12

    View full-size slide

  13. 参考 : SQL 文を実行するときの流れ
    ● v3 ではそれぞれに変更が入った
    ● 実行計画のバリエーションが増えた結果、
    ■ ORDER BY する前のデータの並び順が変わる
    ■ 効率の悪い実行計画が選択される→遅くなることも
    13
    構文解析
    パーサ・リライタ
    実行計画
    オプティマイザ
    実行
    エグゼキュータ
    ・ハンドラ

    View full-size slide

  14. 結局のところ、
    ● 事前調査は大事
    ○ ノールックでいきなり移行するのは危険
    ● 設定やアプリケーション変更の必要性
    ○ ほぼ発生するものとみたほうが良い
    ● 動作検証や性能検証が必要
    ● 移行パスや手順を確認した上で計画を立てる必要がある
    14

    View full-size slide

  15. そこで、必要な情報を Zenn で本にまとめてみた
    https://zenn.dev/hmatsu47/books/aurora-mysql3-plan-book
    15

    View full-size slide

  16. ポイント
    ● 変更点をできるだけ集約
    ○ AWS 公式 Aurora MySQL 関連ドキュメント
    ○ Oracle 公式 MySQL 関連ドキュメント
    ○ その他ブログなど
    ● その中で、特に注意が必要な点をピックアップ
    ● あわせて、移行計画に必要なステップや情報を解説
    16

    View full-size slide

  17. こんなイメージ
    17

    View full-size slide

  18. こんなイメージ
    18

    View full-size slide

  19. こんなイメージ
    19

    View full-size slide

  20. まとめ
    ● Aurora MySQL v1 は 2023/2/28 EoL 予定
    ○ v2 の EoL も意外と早く来るかも
    ● v1 → v3 の移行には気を付ける点が多くある
    ○ v1 → v2 より非互換が多い、リリースモデルが変わった、など
    ● v1 → v3 移行に必要な情報をまとめてみた
    ○ Zenn で本を公開中
    ○ https://zenn.dev/hmatsu47/books/aurora-mysql3-plan-book
    20

    View full-size slide