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 ハマリポイントと対応
Search
tk3fftk
December 22, 2022
Technology
670
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Aurora MySQL ハマリポイントと対応
tk3fftk
December 22, 2022
More Decks by tk3fftk
See All by tk3fftk
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
710
TROCCOで始めるクラウドコストを民主化するためのFinOps
tk3fftk
3
600
障害対応のRunbookは作った、でも本当に動くの? AWS FIS で EKS の AZ 障害を再現してみた
tk3fftk
1
150
AWSの資格って役に立つの?
tk3fftk
2
400
ヘルシーSRE
tk3fftk
2
330
セキュアなAI活用のためのLiteLLMの可能性
tk3fftk
5
3k
スタートアップの1人目SREが SREチームを分割しようと考えるに至るまで
tk3fftk
1
320
どちらかだけじゃもったいないかも? ECSとEKSを適材適所で併用するメリット、運用課題とそれらの対応について
tk3fftk
2
1.1k
そろそろOn-Callの通知音について考えてみよう (PagerDuty編)
tk3fftk
3
1.5k
Other Decks in Technology
See All in Technology
Disciplined Vibes: Scaling AI-Assisted Engineering
sheharyar
0
130
Android の公式 Skill / Android skills
yanzm
0
130
フロンティアAIのゲート化と地政学リスク
nagatsu
0
120
チームで進めるAI駆動アジャイル×ウォーターフォール
kumaiu
0
150
LLMと共に進化するプロセスを目指して
ymatsuwitter
12
4k
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
790
Amazon Bedrock AgentCore ワークショップ JAWS UG TOHOKU / amazon-bedrock-agentcore-workshop-jawsug-tohoku-2026
gawa
9
680
プロダクト開発から業務改善コンサルまで。事業全体へ「染み出す」ことで広がるエンジニアの可能性
ham0215
0
100
非定型業務をAI slackbotで自動化する ~ 社内要望を自動壁打ちするbotを作った ~/automating-ad-hoc-work-with-ai-slackbot
shibayu36
0
600
AIっぽい文章を採点して人間らしく直すアプリを作ってみた
yama3133
2
130
Oracle AI Database@Azure:サービス概要のご紹介
oracle4engineer
PRO
6
1.9k
AGENTS.mdとSkillsで始めるAIエージェント活用
sonoda_mj
3
200
Featured
See All Featured
Designing Powerful Visuals for Engaging Learning
tmiket
1
410
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
49
10k
We Have a Design System, Now What?
morganepeng
55
8.2k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
200
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
A better future with KSS
kneath
240
18k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
Transcript
trocco® ӡ༻ͰֶͼΛಘͨ Aurora MySQL ϋϚϦϙΠϯτͱରԠ primeNumber SRE ߴ௩و (@tk3fftk)
ձ໊ࣾ גࣜձࣾprimeNumber දऔకCEO ాᬑ ༤थ ۀ 201511݄ Office ౦ژ্۠େ࡚ࡾஸ1൪1߸ JR౦ٸࠇϏϧ5F
© primeNumber.Inc ࢲͨͪͷϏδϣϯ ͋ΒΏΔσʔλΛɺ Ϗδωεͷྗʹม͑Δɻ primeNumberɺσʔλςΫϊϩδʔΧϯύχʔɻ ͋ΒΏΔσʔλ͕രൃతʹ૿͍͑ͯ࣌͘ʹɺ ୭͕͘͢ɺ؆୯ʹσʔλΛ͑ΔڥΛߏங͠ɺ σʔλ׆༻·ͰͷϓϩηεΛ࠷దԽɻ ߴͳςΫϊϩδʔͱಠࣗͷΞΠσΞͰɺੈքதͷϏδωεΛࢧԉ͠·͢ɻ
3
© primeNumber.Inc 4
© primeNumber.Inc ߴ௩و (Hiroki Takatsuka, @tk3fftk) גࣜձࣾprimeNumber ΤϯδχΞϦϯάຊ෦ SRE 5
• େࡕ → ਆށ → ౦ژ ◦ ࡢژʹ͍ͨͷͰ౦ւಓ৽װઢͷӡస ݟ߹ΘͤͷӨڹ͕ͬͭΓड͚·ͨ͠😇 • ϠϑʔגࣜձࣾͰ։ൃऀ͚ϓϥοτϑΥʔϜ ͷ։ൃɾӡ༻෦ (2016~2022) ◦ ྗ͍ͯͨ͠ͷ OSS ͷ CI/CD πʔϧ Screwdriver.cd ͷ։ൃɾSRE ◦ εΫϥϜϚελʔͬͨΓEMͬͨΓ • trocco® ʹ2021/10 ͔Β෭ۀͰSREͱͯؔ͠Θ
© primeNumber.Inc • Aurora MySQL Ͱ Reader ͷෛՙ͕ Writer (Clusterશମ)
ʹӨڹ༩͑Δ͜ ͱ͕͋ΔΑ ◦ Aurora MySQL ಛ༗ͷͰͳ͍͚Ͳग़͍͢ΞʔΩςΫνϟʹͳ͍ͬͯΔΑ ◦ trocco® ͷ Aurora ͷࣾͰͷ͍ํͰ͕ͬͭΓҾ͔͔͍ͬͬͯͨΑ • ্هΛղܾͯ͠·͕͔ͩ͋ͬͨΒผͷରԠೖΕͨΑ ࠓ͢͜ͱ 6
trocco® ͕໘ͨ͠՝
© primeNumber.Inc ϝϞϦރׇʹΑΔDBΠϯελϯεμϯ → Failover ൃੜ • τυϝΛͨ͠ͷػೳϦϦʔε࣌ͷ ALTER TABLE
8
© primeNumber.Inc Failover ޙ࠶ͼԼ͕Γଓ͚Δ FreeableMemory • ϦϦʔεʹࢧো͕ग़Δঢ়ଶ • ϝϞϦރׇ͕ݪҼͰམͪͨͷʹɺ·ͨϝϞϦ͕ʹʹݮ͍ͬͯ͘ ◦
Ͳ͜·ͰԼ͕Δͷ͔ɺͳͥ͜ΜͳʹԼ͕Δͷ͔ɺਆ (AWS Support) ʹفΔʑ 9
© primeNumber.Inc Q. فͬͯͳ͍ͰରԠͨ͠ΒͲ͏Ͱ͔͢ʁ • A. ͪΖΜ͍߹Θͤͱಉ࣌ʹௐࠪɺରࡦͷݕ౼ਐΊ͍ͯ·ͨ͠ • ఆظతʹ࠶ىಈ͢Δʁ ◦
trocco® ࢭΊΒΕͳ͍ (ࢭΊͨ͘ͳ͍) ▪ 24͓࣌ؒ٬͞Μͷసૹδϣϒ͕ಈ͍͓ͯΓɺॠஅͰӨڹ͕ग़ΔՄೳੑ͕͋Δ • (͜ͷ͋ͨΓผ్վળ͍͖͍ͯͨ͠ϙΠϯτͰ͢) • ϝϞϦ૿͢ઃఆ͢Δ or Ϧιʔε૿͢ʁ ◦ ͲͪΒ࠶ىಈ͕ඞཁʹͳΔͨΊɺ্هͱಉ͡ཧ༝Ͱ࠷ऴखஈʹ͔ͨͬͨ͠ ▪ ࠶ىಈͳ͠ͷखஈ͕͋͠ΔͷͳΒͦͬͪΛબͼ͍ͨ ◦ 11݄ʹRDSΫϥελҠߦΛ༧ఆ͍ͯͨ͠ͷͰɺ2ϲ݄͑ΕઃఆมߋͰ͖Δ 10
© primeNumber.Inc ͦͯ͠ AWS Support ΑΓճ͕ • > ͋ΔλΠϛϯάΑΓʮRollbackSegmentHistoryListLengthʯʹେ͖ͳ͕ݟΒΕΔΑ͏ʹͳ͓ͬͯΓ·ͨ͠ҝɺͪ͜ ΒফඅϝϞϦʹӨڹΛ༩͍͑ͯͨͷͰͳ͍͔ͱఆக͓ͯ͠Γ·͢ɻ
• > MySQL DBΤϯδϯʹ͓͍ͯɺwriter/readerͷํͰɺඇৗʹ࣮ߦ࣌ؒͷ͍ΫΤϦ͕ଘࡏ͍ͯ͠Δ߹ɺಡΈऔΓҰ؏ ੑΛ࣮ݱ͢ΔͨΊʹϩʔϧόοΫηάϝϯτʹաڈͷใΛอ࣋͠ͳ͚Ε͍͚ͳ্͍ؔɺϩϯάΫΤϦ࣮ߦதͷߋ৽ใ Λશͯอ࣋͠ͳ͚ΕͳΒͳ͍ͱ͍͏ಈ࡞ʹىҼͨ͠ͷͱͳΓ·͢ɻ͜ͷͱ͖ɺߋ৽ʹΑͬͯอ࣋͠ͳ͚ΕͳΒͳ͍աڈ ͷใͷྔ͕ɺͪ͜ΒͷϝτϦΫεͱͳΓ·͢ɻ͜ͷͨΊɺߋ৽ྔ͕ଟ͍DBʹ͓͍ͯ࣌ؒͷಡΈऔΓΫΤϦ͕࣮ࢪ͞Εͨ ߹ɺDBͷෛՙ্͕ঢ͢ΔՄೳੑ͕͍͟͝·͢ɻ 11
© primeNumber.Inc Failover ޙͷ RollbackSegmentHistoryListLength (RSHLL) • ࢦఠΒͬͯΔ͠໌Β͔ʹةͳͦ͏ͳܗΛ͍ͯ͠Δ 12
© primeNumber.Inc ͳͥ RollbackSegmentHistoryListLength (RSHLL) ͕૿େ͢Δ͔ • τϥϯβΫγϣϯͷҰ؏ੑΛ֬อ͢ΔͨΊʹɺMySQL աڈͷߦͷཤྺͷΑ͏ͳͷ Λ͍࣋ͬͯΔ
◦ ྫ͑ɺ1લ͔ΒऴΘΒͳ͍ SELECT จ͕͋ͬͨͱͯ͠ɺͦͷ SELECT Ͱ৮͍ͬͯΔߦ͕ผͷτϥϯ βΫγϣϯͰߋ৽͞Εͨͱͯ͠ɺσʔλͷҰ؏ੑΛอͭͨΊʹ SELECT ͕ऴΘΔ·Ͱݹ͍ߦࣺͯΒ Εͳ͍ ▪ ࣺͯΒΕ͍ͯͳ͍ݹ͍ߦ͕ཷ·ͬͯ͘Δͱ৭Μͳͱ͜ΖͰύϑΥʔϚϯεͷ͕ग़Δ • ࢀߟ: Chasing a Hung MySQL Transaction: InnoDB History Length Strikes Back - Percona Database Performance Blog • Aurora ΞʔΩςΫνϟతʹ͜ͷ͕ग़͘͢ͳ͍ͬͯΔ ◦ Aurora MySQL DB ΫϥελʔͰͷ͍ SELECT ΫΤϦͷτϥϒϧγϡʔςΟϯά ▪ > Aurora MySQL Ͱɺڞ༗ετϨʔδͷϘϦϡʔϜͷੑ্࣭ɺཤྺϦετͷ͞ΫϥελʔϨ ϕϧͰ͋ΓɺݸʑͷΠϯελϯεϨϕϧͰ͋Γ·ͤΜɻ 13
© primeNumber.Inc trocco® ͷ Reader ͷ͍ํ͕ग़͔ͬͨ͢ • ࣌ؒτϥϯβΫγϣϯΛுΔΑ͏ͳΫΤϦΛఆظతʹྲྀ͍ͯͨ͠ 14
RollbackSegmentHistoryListLength ͷ૿େʹରͯ͠ ͲͷΑ͏ͳରԠҊ͕͋ΓɺԿΛߦ͔ͬͨ
© primeNumber.Inc ͲͷΑ͏ͳରԠҊ͕͔͋ͬͨʁ • ظରԠ ◦ ࣮࣌ؒߦ͞Ε͍ͯΔΫΤϦΛࢭΊΔ ◦ ࣮࣌ؒߦ͞Ε͍ͯΔΫΤϦΛߴԽ͢Δ •
தظରԠ ◦ MySQL ͷϨϕϧΛมߋ͢Δ ◦ Reader ʹ͚࣮ͯߦ͍ͯ͠ΔΫΤϦΛผΫϥελʹ͚Δ ◦ Writer ͕ར༻Ͱ͖ΔϝϞϦΛ૿͢ (ཁ࠶ىಈ) ◦ Aurora engine ͷ version Λ্͛Δ (ཁ࠶ىಈ) 16
© primeNumber.Inc ͲͷΑ͏ͳରԠҊ͕͔͋ͬͨʁ • ظରԠ ◦ ࣮࣌ؒߦ͞Ε͍ͯΔΫΤϦΛࢭΊΔ ◦ ࣮࣌ؒߦ͞Ε͍ͯΔΫΤϦΛߴԽ͢Δ •
தظରԠ ◦ MySQL ͷϨϕϧΛมߋ͢Δ ◦ Reader ʹ͚࣮ͯߦ͍ͯ͠ΔΫΤϦΛผΫϥελʹ͚Δ ◦ Writer ͕ར༻Ͱ͖ΔϝϞϦΛ૿͢ (ཁ࠶ىಈ) ◦ Aurora engine ͷ version Λ্͛Δ (ཁ࠶ىಈ) 17
© primeNumber.Inc ࣮࣌ؒߦ͞Ε͍ͯΔΫΤϦΛࢭΊΔɾߴԽ • Reader Ͱݕग़͞Ε͍ͯΔ slowquery Λௐࠪͯ͠Ұ࣌ఀࢭ 18
© primeNumber.Inc Reader ʹ͚࣮ͯߦ͍ͯ͠ΔΫΤϦΛผΫϥελʹ͚Δ • Aurora ͷΫϩʔϯػೳ + binlog ϨϓϦέʔγϣϯΛͬͯੳ༻
Aurora Ϋϥ ελΛ࡞ ◦ ظରԠͰࢭΊͨ Redash, trocco® ʹΑΔ trocco® ͷσʔλసૹΛ࠶։ͤ͞Δత ◦ ίετݮͷͨΊຊମΫϥελΑΓ1ͭԼͷΠϯελϯεαΠζͰՔಇ ▪ CPUUtilization, BufferCacheHitRatio, SwapUsageͳͲΛݟܾͯఆ ▪ ϦιʔεʹՃ͑ϨϓϦέʔγϣϯϥά (AuroraBinlogReplicaLag) Λࢹ • සൟʹϥάΔΑ͏ͳΒ্͛Δ͜ͱݕ౼ • ੳ༻Ͱ͋Εؾܰʹམͱͯ͠ΠϯελϯεαΠζมߋɺͱ͍͏͜ͱՄೳͳͣ 19
© primeNumber.Inc FreeableMemory ͷݮগ؇͔ʹͳͬͨ 20
© primeNumber.Inc ͲͷΑ͏ͳରԠҊ͕͔͋ͬͨʁ (࠶ܝ) • ظରԠ ◦ ࣮࣌ؒߦ͞Ε͍ͯΔΫΤϦΛࢭΊΔ ◦ ࣮࣌ؒߦ͞Ε͍ͯΔΫΤϦΛߴԽ͢Δ
• தظରԠ ◦ MySQL ͷϨϕϧΛมߋ͢Δ ◦ Reader ʹ͚࣮ͯߦ͍ͯ͠ΔΫΤϦΛผΫϥελʹ͚Δ ◦ Writer ͕ར༻Ͱ͖ΔϝϞϦΛ૿͢ (ཁ࠶ىಈ) ◦ Aurora engine ͷ version Λ্͛Δ (ཁ࠶ىಈ) 21
© primeNumber.Inc Writer ͕ར༻Ͱ͖ΔϝϞϦΛ૿͢ (ཁ࠶ىಈ) • innodb_buffer_pool_size Λ DBInstanceClassMemory*3/4 (default)
→ DBInstanceClassMemory*5/8 ◦ BufferCacheHitRatio, SwapUsage Λݟͯஅ ▪ BufferCacheHitRatio ΄΅100%ͩͬͨͨΊ (SwapUsage ͣͬͱθϩͩͬͨ) 22
© primeNumber.Inc Aurora engine ͷ minor version Λ্͛Δ (ཁ࠶ىಈ) •
ϝϞϦؔ࿈ͷ bugfix ͱ͔ imporovement ͕ೖ͍ͬͯΔՄೳੑ͕͋Δ ◦ Release notes for Amazon Aurora MySQL-Compatible Edition - Amazon Aurora • Zero Downtime Patching ·ͩར༻Ͱ͖ͳ͍ engine όʔδϣϯͩͬͨ ◦ ͦͦຊʹαʔϏεӨڹग़ͣ͞ʹ͑Δͷ͔ݕূ͠ͳ͍ͱ͏ͷ͜Θ͍ 23
© primeNumber.Inc ࠓޙͷల 24 • binlog ͷར༻ΛΊΔ ◦ binlog Λ༗ޮʹ͍ͯ͠ΔͱΫϥογϡޙͷ෮چ͕࣌ؒ͘ͳΔɺͱͷ͜ͱ
▪ ࢀߟ: Amazon Aurora ετϨʔδͱ৴པੑ - Amazon Aurora ◦ όοΫτϥοΫػೳ͕͑ͳ͍ • Aurora ΫϩʔϯػೳΛͬͨ߹ͷσʔλͷ࣋ͪํίετ໘Ͱݒ೦ ◦ ίϐʔΦϯϥΠτ ͰσʔλΛอ࣋ɾߋ৽͢Δ ▪ ޮѱ͍͔ʁΫϩʔϯ࡞࣌ͷσʔλΛແବʹอ࣋͠ଓ͚ͯ͠·͍ͬͯΔ͔ʁͳͲ • ސ٬૿ʹΑΓݟࠐ·ΕΔDBෛՙΛԼ͛Δ
© primeNumber.Inc ·ͱΊɾॴײ • Aurora Reader ʹ͛ͨΫΤϦ͕ΫϥελશମʹӨڹΛ༩͑ಘΔ ◦ RollbackSegmentHistoryListLength
ͷ૿େʹΑΔϦιʔεফඅɾύϑΥʔϚϯεԼͳͲ • ࣌ؒͷτϥϯβΫγϣϯ͕ආ͚ΒΕͳ͍߹ҎԼͷରԠΛೖΕͯΈΔ ◦ Ϋϥελ͝ͱͯ͠ Reader ʹ͛ͯͨΫΤϦΛͦͬͪʹ͛Δ ◦ MySQL ϨϕϧΛREAD COMMITTEDʹ͢Δ • AWS Support ͪΌΜͱ׆༻͖͢ ◦ ʮΒͳ͍͜ͱΛΒͳ͍ʯྖҬʹ͍ͭͯฦΛ͘ΕΔ 25
© primeNumber.Inc ࢀߟ • Amazon Aurora ϦʔυϨϓϦΧͷ࠶ىಈʹؔ͢ΔτϥϒϧγϡʔςΟϯά ◦ > ૿େԽ͕ਐΉ
History List Length (HLL) ΛௐΔ (Aurora MySQL - ޓ) • Chasing a Hung MySQL Transaction: InnoDB History Length Strikes Back - Percona Database Performance Blog • Aurora MySQL DB ΫϥελʔͰͷ͍ SELECT ΫΤϦͷτϥϒϧγϡʔςΟϯά 26