Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Aurora MySQL v1 → v3 の移行を準備する
Search
hmatsu47
PRO
April 10, 2022
Technology
4k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Aurora MySQL v1 → v3 の移行を準備する
JAWS-UG 朝会 #32 2022/4/11
hmatsu47
PRO
April 10, 2022
More Decks by hmatsu47
See All by hmatsu47
ゲームで挑戦!VPC の気持ちになって IPv4/v6 パケットをルーティングしよう!
hmatsu47
PRO
0
20
続・名古屋城とデータセンター
hmatsu47
PRO
0
20
【再演】IPv6 VPC の実装パターンをいくつか
hmatsu47
PRO
0
21
名古屋城とデータセンター
hmatsu47
PRO
0
32
IPv6 に関する話
hmatsu47
PRO
0
23
さいきんの光ファイバーの話
hmatsu47
PRO
0
50
低いほうのレイヤを見てみる話
hmatsu47
PRO
0
26
IPv6 VPC の実装パターンをいくつか
hmatsu47
PRO
0
44
光ファイバーと IPv6 絡みの話
hmatsu47
PRO
0
60
Other Decks in Technology
See All in Technology
AmplifyHostingConstructからSSRフレームワークのためのホスティング設計を考察する/amplify-hosting-construct
fossamagna
1
310
AIエージェントがあれば技術書なんてすぐ書けるでしょ→無理でした
watany
4
340
Webアプリ認証の全体像 / The Big Picture of Web App Authentication
kitano_yuichi
1
440
_NIKKEI_Tech_Talk__勉強会は熱量では続かない___17回続いた輪読会の設計術.pdf
_awache
2
110
Aurora MySQL 8.4リリース! Rubyistが備えること / what-rubyist-should-prepare-for-aurora-mysql-8-4
fkmy
0
1.1k
ダッシュボード"開発"について 〜使われるダッシュボードのつくりかた〜
kimichan
0
210
それでも、技術なブログを書く理由 #kichijojipm / Why I Still Write Tech Blogs Even Now
shinkufencer
0
630
大量データに対しても、生成AIを用いてリーズナブルにデータ加工をしたい!Databricksのai_queryについて調べてみた
kamoshika
2
290
AI_Dev_Day_製造業領域でのAI活用から見た活用の罠と成功に導く実践知.pdf
kintotechdev
0
180
AI工学特論: MLOps・継続的評価
asei
7
1.6k
AIツールを導入しても生産性はあがらない? カオナビが直面した 3つの壁と乗り越え方。/ Overcoming 3 Barriers to AI-Driven Productivity at kaonavi
kaonavi
0
230
kaonavi Tech Night#1
kaonavi
0
160
Featured
See All Featured
Utilizing Notion as your number one productivity tool
mfonobong
4
450
How STYLIGHT went responsive
nonsquared
100
6.2k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
350
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
620
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.6k
Transcript
Aurora MySQL v1 → v3 の移行を準備する JAWS-UG朝会 #32 2022/4/11 まつひさ(hmatsu47)
自己紹介 松久裕保(@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
本日のネタ • 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
Aurora MySQL v1 の EoL までの流れ • 2022/9/27 : 新しいクラスタ・インスタンス作成停止
◦ 以下は(EoL まで)実行可能 ▪ v1 スナップショットの復元 ▪ クラスタにリードレプリカ追加 ▪ インスタンス設定変更 ▪ ポイントインタイムリカバリ(PITR) ▪ 既存 v1 クラスタのクローン作成 • 2023/2/28 : EoL(予定)※時刻はいずれも 00:00:00 UTC 4
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
Aurora MySQL v3 への移行、という選択 • ベースは MySQL の最新バージョン、8.0 に •
他の RDBMS と遜色ないレベルの SQL 文をサポート ◦ MySQL は「軽い SQL 文を高速に実行」が売りだった ◦ その分複雑な処理は苦手→バージョンを重ねるごとに改善 • 性能向上 ◦ 並列処理性能が向上 ◦ インデックスのないテーブル結合の高速化(ハッシュ結合) 6
ただし、v1 からの移行には難しさも • v2 以降に廃止・変更された機能がある ◦ AWS 公式 Aurora MySQL
関連ドキュメント • リリースモデルの変更がある ◦ Continuous Delivery Model(継続提供モデル)を採用 • 移行パスや移行条件に制限がある ◦ v3 へのインプレースアップグレード不可、など • コードが大きく書き換えられている 7
移行の難しさ①廃止・変更された機能がある • クエリキャッシュ廃止 ◦ 便利だけど並列処理の妨げに→本家 MySQL 8.0 で廃止 • 古い暗号化関数の廃止
◦ 時代の流れ(脆弱な暗号を使い続けるの、ダメ!) • MySQL 独自文法の廃止 ◦ 例 : GRANT 文でユーザ作成と権限の割り当てを一度に済ませる • GIS 機能リニューアルによる非互換 などなど 8
移行の難しさ②リリースモデルの変更がある • コミュニティ版 MySQL 8.0 のリリースモデル変更 ◦ Continuous Delivery Model(継続提供モデル)を採用
◦ マイナーバージョンアップで機能が追加・変更・削除される • Aurora MySQL v3 も本家に追従する予定 ◦ 初期リリースの 3.01.0 : MySQL 8.0.23 互換 ▪ LTS (長期サポートバージョン)ではない ▪ 今後のマイナーバージョンで LTS 提供予定 9
リリースモデル変更による影響 • 予約語の追加(継続的に発生) ◦ 新機能に関するキーワードが予約語化(RANK など) ◦ テーブル名やカラム名などとのバッティングで不具合の可能性 • 挙動が変更される機能・SQL
文の存在(同上) ◦ 例 : GROUP BY 〜 ASC/DESC および暗黙ソート廃止(8.0.13) ▪ これは MySQL ユーザにはよく使われているので影響範囲が大きい ▪ 特に ASC を指定しない暗黙ソートは無意識に使っていることが多い 10
移行の難しさ③移行パスや移行条件に制約がある • v1 → v3 は直接アップグレードできない ◦ クローンなどで一旦 v2 へ
• v2 → v3 クローン・インプレースアップグレード未提供 ◦ v2 → v3 は今のところスナップショットからの復元一択 ◦ 現状では Global Database を v3 に移行するのが困難 • バックトラック使用中のクラスタは NG • Aurora Serverless v1 は非サポート 11
移行の難しさ④コードが大きく書き換えられている • SQL 文の仕様が同じでも内部処理が違うと… ◦ 同じ SQL 文を実行しているのに思わぬ性能低下の可能性が • 実は
MySQL 5.6 → 5.7 でもそこそこ変更が入っている ◦ まれに旧バージョンより遅くなるSQL 文があったり • MySQL 8.0 では、それ以上に変更が入っている ◦ Aurora MySQL v3 でも同様の問題が生じる可能性あり 12
参考 : SQL 文を実行するときの流れ • v3 ではそれぞれに変更が入った • 実行計画のバリエーションが増えた結果、 ▪
ORDER BY する前のデータの並び順が変わる ▪ 効率の悪い実行計画が選択される→遅くなることも 13 構文解析 パーサ・リライタ 実行計画 オプティマイザ 実行 エグゼキュータ ・ハンドラ
結局のところ、 • 事前調査は大事 ◦ ノールックでいきなり移行するのは危険 • 設定やアプリケーション変更の必要性 ◦ ほぼ発生するものとみたほうが良い •
動作検証や性能検証が必要 • 移行パスや手順を確認した上で計画を立てる必要がある 14
そこで、必要な情報を Zenn で本にまとめてみた https://zenn.dev/hmatsu47/books/aurora-mysql3-plan-book 15
ポイント • 変更点をできるだけ集約 ◦ AWS 公式 Aurora MySQL 関連ドキュメント ◦
Oracle 公式 MySQL 関連ドキュメント ◦ その他ブログなど • その中で、特に注意が必要な点をピックアップ • あわせて、移行計画に必要なステップや情報を解説 16
こんなイメージ 17
こんなイメージ 18
こんなイメージ 19
まとめ • 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