Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Amazon RDS for MySQL v8へのみちのり
Search
gho4d76g
October 07, 2023
Technology
880
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Amazon RDS for MySQL v8へのみちのり
第32回 中国地方DB勉強/LT
gho4d76g
October 07, 2023
Other Decks in Technology
See All in Technology
AI臭い文章とは何なのか
nasuvitz
2
270
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
760
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
1
320
Antigravity SDK for the Java Developer
glaforge
0
210
なぜAI任せのゲームは面白くならないのか?
hirohasuyoutube
0
170
白金鉱業Meetup Vol.25 アウトカムが二値のデータに対するCausal Impact
brainpadpr
0
310
メルカリにおけるAI時代の高速プロトタイピング基盤「Arca」
ryotarai
15
12k
人にやさしく、AIにやさしく、書き手を選ばないIaCのガードレール再考 / Rethinking IaC Guardrails for Humans and AI Alike
kohbis
5
1.3k
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
290
AI Agent入門〜今更聞けないAgentの話〜
hiromimaganuma
0
120
AIエージェントの権限管理 3: Agentic RAG の Fine grained access control 編
ren8k
1
280
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
550
Featured
See All Featured
Building the Perfect Custom Keyboard
takai
2
890
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.3k
Become a Pro
speakerdeck
PRO
31
6.3k
The Limits of Empathy - UXLibs8
cassininazir
1
690
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
420
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.8k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
370
The browser strikes back
jonoalderson
0
1.7k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
250
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
Transcript
Amazon RDS for MySQL v8へのみちのり 第32回 中国地方DB勉強 2023/10/07 ※このページは削除して構いません USE
TEMPLATE Click @gho4d76g
• お話すること(主にインフラ観点) ◦ Amazon RDS for MySQLのライフサイクル ◦ Amazon RDS
for MySQLのアップグレードとサービスダウンタイム ◦ Amazon RDS for MySQLv5.5→v5.6→v5.7→v8 を駆け抜けたあるシステム の話 • お話しないこと(主にアプリケーション観点) ◦ データベースバージョン移行におけるアプリケーションの機能・性能試験に関 するトピック ◦ データベースエンジンのパフォーマンスチューニングに関するトピック 今日お話すること・しないこと
Amazon RDS for MySQLのライフサイクル MySQL Community Edition Amazon RDS for
MySQL 2024 2022 2020 2018 2016 2014 2012 2010 2024 2022 2020 2018 2016 2014 2012 2010 v5.6 Release v5.6 Release v5.6 EoL v5.7 Release v5.7 EoL v5.7 Release v8.0 Release v8.0 Release 2026 v8.0 EoL(予定) 2026 v5.6 EoL(延長) v5.7 EoL(延長) イマココ! v8.0 EoL(予定) ─Community Supportを基準にライフサイクル管理を考えるのが基本 ─
Amazon RDS for MySQLライフサイクル 2023/9/1にv5.7系EoL発表と併せ て延長サポートを発表 • 最大3年間の有償延長サポート • 2023/12からオプトイン可
• これまでのdbインスタンス稼働コ ストに加えて$0.120/vCPU数/時 間の追加コストが発生 (ap-northeast-1, 2年目まで) https://aws.amazon.com/jp/about-aws/whats-new/2023/09/amazon-aurora-rds-extended-support-mysql-postgresql-databases/?nc1=h_ls
[命題] ◦ データベースはITサービスの構成要素の中で最も長命 ◦ データベースの格納データは基本的に増え続ける ◦ データベースの停止 = ITサービスの停止 ◦
ITサービスにはそれぞれ許容可能なダウンタイムが存在する アップグレード vs サービスダウンタイム 移行方式設計 is 重要
(1)単純なインプレースアップグレード v5.7.x P アップグレードプロセス v8.0.x P 許容可能な サービスダウンタイムか? アップグレードを開始 アップグレード完了
アップグレードに所要する時間は対象のデータベースの状態によって 大きく異なるためリハーサル重要
リードレプリカによる多段アップグレード方式 v5.7.x v5.7.x v5.7.x v8.0.x プライマリ (オンライン状態) リードレプリカ作成 プライマリ (オンライン状態)
v8.0.x v5.7.x スイッチオーバー サービスダウンタイム 約10分程度 非同期レプリ ケーション 非同期レプリ ケーション(*) ※ 異なるマイナーバージョン、 異なるメジャーバージョン間の非同期レプリケーションが可能(ただし制約もある) 参考: MySQL バージョン間のレプリケーション互換性 (https://dev.mysql.com/doc/refman/8.0/ja/replication-compatibility.html) 破棄 (2)リードレプリカによるスイッチオーバー方式 レプリケーションを解除し アップグレードを開始 アップグレード完了後、レ プリケーションを再開 プライマリはこの時間分の Binaryログを保持を担保 (binlog retention hours+十分な ストレージ空きスペース) アップグレードプロセス (≠サービスダウンタイム) P P RR P RR P
• AWS re:Invent 2022で発表 • ミラー環境(Green)のリソースデプロイ、ロ ジカルレプリケーションの構成、同期、 Blue-Green間のスイッチオーバーといった 一連のタスクをよしなにコントロールしてくれ るサービス
(3)Amazon RDS ブルー/グリーンデプロイ 画像出所: https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/UserGuide/blue-green-deployments-overview.html
RDS for MySQL v5.5→5.6→v5.7→v8 を駆け抜け たあるシステムの話 時期 主要なDBメンテナンス 移行方式 特記
2016年 v5.5.x → v5.6.x への更新 インプレースアップグレー ド ー 2021年 v5.6.x → v5.7.x への更新 インプレースアップグレー ド(※) デフォルトでは許容不可能なダウンタイム が発生するためワークアラウンドとして ”old temporal datatypes” の変換処理 をスキップすることを選択 2022年 DBインスタンスストレージ 暗号化 暗号化したリードレプリカ によるスイッチオーバー インプレースでは不可能。加えてRDS固有 の問題であるファーストアタッチペナルティ との戦い 2023年 v5.7.x → v8.0.x への更新、 ストレージType変換(GP3 移行) 異なるメジャーバージョン のレプリカによるスイッチ オーバー v8.0でold temporal datatypesのサ ポート終了にともない、v5.7移行時の方式 選択が一気に負債化 → 呪縛/(^o^)\
• ”old temporal datatypes”とは? ◦ MySQL5.6.4より前に使用されていたマイクロ秒非対応のTIME、DATETIME型。 MySQL8.0では廃止されておりアップグレード前にこれらの型変換が必須 ◦ 通常のmysql_upgradeあるいはALTER TABLE
FORCEによって変換可能 • なぜ負債化したのか? ◦ v5.7移行時に、インプレースアップグレード時間短縮のために、”old temporal datatypes”の変換を省略 (─avoid_temporal_upgradeの甘い誘惑─) ◦ RDS固有の制約でRDSマスターユーザーであってもシステムスキーマ (e.g. mysql)のデータ ベースオブジェクトを変更できない (─アンタッチャブルパワー・ rdsadmin─) ”old temporal datatypes”の負債化
パラメータ `avoid_temporal_upgrade=false`を設定して5.7.38→5.7.41間のマイナーバー ジョンアップをすることでシステムスキーマに残置した old temporal datatypesを変換。その 後、v8系へのメジャーアップグレードが可能に( ただし、トレード・オフとしてマイナーアップグ レード所要時間は48時間超え💦) ”old
temporal datatypes”の負債化 5.7.38 5.7.41 8.0.32 マイナーアップグレード メジャーアップグレード システムスキーマに古い DATETIME型が残置 (ALTER不可) 直接アップグレードは不可 能 システムスキーマの古い DATETIME型が変換され た状態 (∩´∀`)∩ワーイ
怖い話👻 次の条件を満たす場合にRDS for MySQL v8系への道が閉ざされる可能性 があります。 • v5.6.4系以前のバージョンでプロビジョンしたRDS DBインスタンス •
v5.6.4移行後にパラメータ `avoid_temporal_upgrade=true` を設定 • 現時点のv5.7系最新バージョン(v5.7.43)まで更新ずみ 最後の希望は v5.7.44のマイナーアップデートリリース ただし、現時点ではv5.7.44のリリース予定は未定
• 移行方式設計は慎重に ◦ 先の先を見なアカン──── ◦ 手間を惜しまず、人事を尽くそう • マネージドサービスに固有の制約に向き合う ◦ RDS
for MySQLの場合: ▪ ファーストアタッチペナルティ、rdsadminという特別な存在 • 今後の不安要素 ◦ utf8mb3の廃止が次の負債化の予感💦 まとめ