$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
わたしのまわりのニュー・ノーマル3選
Search
hmatsu47
PRO
January 19, 2021
Technology
0
920
わたしのまわりのニュー・ノーマル3選
吉祥寺.pm25 [Online] 2021/01/19 Talk
hmatsu47
PRO
January 19, 2021
Tweet
Share
More Decks by hmatsu47
See All by hmatsu47
今年の MySQL/HeatWave ネタ登壇振り返り
hmatsu47
PRO
0
10
今年の DB ネタ登壇振り返り
hmatsu47
PRO
0
8
RDS/Aurora アップデート 2025
hmatsu47
PRO
0
18
YAPC::Fukuoka 2025 現地ハイブリッド参加の旅
hmatsu47
PRO
0
7
今年の FESTA で初当日スタッフ+登壇してきました
hmatsu47
PRO
0
12
攻略!Aurora DSQL の OCC(楽観的同時実行制御)
hmatsu47
PRO
0
9
PostgreSQL でもできる!GraphRAG
hmatsu47
PRO
0
11
Aurora DSQL のトランザクション(スナップショット分離と OCC)
hmatsu47
PRO
0
16
いろんなところに居る Amazon Q(Developer)を使い分けてみた
hmatsu47
PRO
0
35
Other Decks in Technology
See All in Technology
意外と知らない状態遷移テストの世界
nihonbuson
PRO
1
240
Entity Framework Core におけるIN句クエリ最適化について
htkym
0
120
アプリにAIを正しく組み込むための アーキテクチャ── 国産LLMの現実と実践
kohju
0
220
ハッカソンから社内プロダクトへ AIエージェント「ko☆shi」開発で学んだ4つの重要要素
sonoda_mj
6
1.6k
MySQLとPostgreSQLのコレーション / Collation of MySQL and PostgreSQL
tmtms
1
1.2k
[2025-12-12]あの日僕が見た胡蝶の夢 〜人の夢は終わらねェ AIによるパフォーマンスチューニングのすゝめ〜
tosite
0
180
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
1
1.9k
SQLだけでマイグレーションしたい!
makki_d
0
1.2k
なぜ あなたはそんなに re:Invent に行くのか?
miu_crescent
PRO
0
210
AWSの新機能をフル活用した「re:Inventエージェント」開発秘話
minorun365
2
450
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
9.9k
Bedrock AgentCore Memoryの新機能 (Episode) を試してみた / try Bedrock AgentCore Memory Episodic functionarity
hoshi7_n
2
1.9k
Featured
See All Featured
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
750
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
115
92k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
Reality Check: Gamification 10 Years Later
codingconduct
0
1.9k
Amusing Abliteration
ianozsvald
0
69
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
31
Building Adaptive Systems
keathley
44
2.9k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
130
How GitHub (no longer) Works
holman
316
140k
Crafting Experiences
bethany
0
22
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
230
Transcript
わたしのまわりのニュー・ノーマル(むりやり) 3 選 吉祥寺.pm25【オンライン】 2021/01/19 まつひさ(hmatsu47)
自己紹介 松久裕保(@hmatsu47) https://qiita.com/hmatsu47 名古屋で Web インフラのお守り係をしています MySQL 8.0 の薄い本を作って配っています ◦
Qiita の記事: https://qiita.com/hmatsu47/items/ceb75caf46e3c761095d ◦ GitHub リポジトリの他、印刷版を勉強会などで無料配布していました ◦ 新型コロナウイルスの関係でオフライン勉強会ができなくなったので、 現在は BOOTH でも配布しています(100円+送料)後の話に続く… https://booth.pm/ja/items/2524481 2
吉祥寺.pm 初トーク参加です • 一般参加:過去 1 回 ◦ 設計ナイトを含めても過去 2 回
• 「一句」が浮かばず一週間悩む ◦ これ↓を見て「聞きたかった」と思いつつ 3
本日のネタ(むりやり 3 選) • 継続的デリバリーモデル • OLTP + OLAP =
HTAP • レガシーなシステムでのクラウドとの付き合い方 4
[1] 継続的デリバリーモデル • 2020/12/08、CentOS 8 終了のお知らせ ◦ https://blog.centos.org/2020/12/future-is-centos-stream/ ◦ 2021/末終了
◦ 今後は CentOS Stream に注力 • CentOS Stream : 継続的デリバリー ◦ 赤帽エンジニアブログ https://rheb.hatenablog.com/entry/centos_stream 5
ところで、継続的デリバリーモデルといえば(強引) • MySQL Innovation Day(2018/05)の講演にて ◦ MySQL 8.0 は継続的デリバリーモデルによって、GA となった後
も機能を継続的に追加していくことに https://gihyo.jp/dev/serial/01/oss-db-various-news/0034 • 四半期毎にマイナーバージョンアップ ◦ それにあわせて新機能追加・改良 6
継続的デリバリーモデル : 使用上の注意 • アップデートで突然、挙動が変わる ◦ 例)NLJ Only だった MySQL、8.0.18
にて Hash Join を採用 ▪ なぜか同じ SQL(文)によるデータの取得結果が違ったり…?? ◦ 例)予約語の追加が命取りに https://dev.mysql.com/doc/mysqld-version-reference/en/keywords.html →メジャーバージョン間の差異 https://dev.mysql.com/doc/refman/8.0/en/keywords.html →8.0 マイナーバージョンでの追加・削除・変更 7
「変わる」ことを前提に付き合っていく • 変わっても良いようにしておく ◦ 例)自動アップデートは OFF に(確認後にアップデート) ◦ 例)DB・テーブル・列名などはバッククォート(`)で挟む •
変化を積極的に追い続ける ◦ メジャーバージョンアップまでの間「塩漬け」しない ▪ 一度に大きな変化に対応する必要があり、かえって大変になる ▪ セキュリティパッチを当てられないリスクが大きい 8
【余談】MySQL 8.0 の薄い本も • 四半期毎のマイナーバージョンアップに追従 ◦ 継続的デリバリー中 ▪ 正直しんどい •
2021/01 は MySQL 8.0.23 リリース見込み ◦ そろそろ出る?昨日(2021/01/18)出てた ◦ 薄い本も 8.0.23 対応版の改訂時期 9
ところで、MySQL といえば • 集計・分析用の重たいクエリを投げると ◦ 数時間結果が返ってこないことも • 集計・分析をするなら ◦ ETL
経由で分析・OLAP 用の環境にデータを流して処理 10
MySQL の旧ノーマル : 集計・分析が苦手な子 (後述 URL の PDF 資料「20201223_MySQL_MDS_HeatWave_jp.pdf」より引用) 11
[2] OLTP + OLAP = HTAP • Oracle Cloud の
MySQL Database Service(MDS)に HeatWave 機能が追加! ◦ https://www.mysql.com/jp/why-mysql/presentations/business-benefits-of- using-mds-and-heatwave-202012-doc-jp/ (サービス説明 PDF 資料) ※要 Oracle シングル・サインオンアカウント(無料) • 分析クエリが自動的に HeatWave へ ◦ https://qiita.com/sugimount/items/9ecf8800cd59ba2a635c 12
MySQL のニュー・ノーマル : MDS で HeatWave (前述 URL の PDF
資料「20201223_MySQL_MDS_HeatWave_jp.pdf」より引用) 13
MySQL が「集計・分析できる子」に!(MDS 限定ですが ) https://dev.mysql.com/doc/ (MDS・HeatWave が先頭に) 14
[3] クラウドとの付き合い方 • とあるサービスの話 : 約 3 年半前、自社サービス (15 年モノのレガシー
Web システム)を AWS へ移行 ◦ https://qiita.com/hmatsu47/items/23e2f0b36ab46234b9db (ほか、計 3 記事) ◦ LB を ALB、DB(MySQL)を Aurora へ ◦ ほぼ AWS に「載せただけ」(でも大変だった) • 2020/12、サービス別に AWS アカウントを分離 ◦ メインのサービスを別アカウントへ移行 15
ALB の仕組み • 複数の AZ にある複数のインスタンスがターゲットサーバ にリクエストを振り分ける ◦ (1AZ で使わないかぎり)単一インスタンスではない
• 負荷に応じて自動的にスケールアウト/スケールイン→ スケールアップ/スケールダウン ◦ インスタンスの数やサイズが動的に変わる 16
ある日の ALB(事情によりメトリクスグラフは出せませんが) • 突然、スパイクアクセスを受ける ◦ 調査+サポートに問い合わせ ▪ 瞬間的に大量のリクエストがあった ▪ その後は元のリクエスト数に戻った(継続はしていない)
• ALB 関連のメトリクスグラフは異常なまま ◦ コネクション数が倍増(ずっと戻らない) ◦ 他は元に戻っていた(分間 リクエスト数・平均 レスポンス時間など) 17
そのとき、ターゲットサーバでは • コネクション数が 3 倍に(ずっと戻らない) ◦ アイドルタイムアウト設定など何も変えていないのに • Web サーバの設定が「昔のまま」だったので
◦ コネクション増→メモリ使用量がダイレクトに増加 ◦ 一部(設定上の)コネクション上限に達する ▪ アカウント移行作業時、サーバソフトウェア類のバージョンは上げていた のに、設定内容が一部古いままだった 18
スパイク前のイメージ 19 ALB Web
スパイク後のイメージ 20 ALB Web
ALB の中身はブラックボックス • 日々進化している ◦ 例えば、スケールアップ時の応答性の向上とか ▪ 暖機がほぼ不要になった • 「昨日と同じ動きをする」とは限らない
◦ 使う側も、クラウドの流儀(Elastic)に合わせてスケール対応 する構成に変えていかないといけない (問題のコネクション数は年が明けたところで元の水準に戻っていた) 21
時を戻して…ここで、突然の一句。 年の瀬に ひやり Aurora 再起動 22
サポートに問い合わせてみて原因が判明 先読みが コケて Aurora 再起動 • 再起動後のエラーログに↑を見つけたら AWS サポートへ ◦
決して bugs.mysql.com にバグレポートを上げてはいけません (ちなみに、オーロラは冬の季語ではないらしい) 23 yyyy-mm-dd hh:mm:ss XXXXXXXXXXXX InnoDB: Assertion failure in thread nnnnnnnnnnnnnn in file ut0boundedqueue.cc line 123 InnoDB: Failing assertion: oldVersion != EMPTY_ENTRY && oldVersion != SUPERSEDED_ENTRY InnoDB: We intentionally generate a memory trap. InnoDB: Submit a detailed bug report to http://bugs.mysql.com. (後略)
その後、DB の性能問題が発生 • ワークアラウンド対応(先読み無効化)の影響? ◦ あったとしても軽微 ▪ 普段から利用状況を見ていたので概ね判断が付いた • 原因を見つけて対応
◦ 無事、解決 • 念のため別の対応策も準備 ◦ 構成を変えると DB 負荷がどう変わるか何度か検証していた 24
本日のネタ(むりやり 3 選)のまとめ • 継続的デリバリーモデル ◦ 「変わる」ことを前提に付き合っていく • OLTP +
OLAP = HTAP ◦ MySQL が「集計・分析できる子」に!(ただし MDS に限る) • レガシーなシステムでのクラウドとの付き合い方 ◦ レガシーでも Elastic を意識してスケール対応(設定) ◦ 可観測性と「平常時」の把握が大事(構成変更時の変化の検証も) 25
【振り返り】変わったもの・変わっていないもの • ニュー・ノーマルで変わったもの ◦ 使うツール/ツールの使い方 ◦ 手段・手順 • ニュー・ノーマルでも変わっていないもの ◦
ベースとなる考え方 ◦ 目的 26