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
TRUNCATE user;に如何にして立ち向かうか
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
meru_akimbo
November 20, 2018
Programming
350
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
TRUNCATE user;に如何にして立ち向かうか
2017年 YAPC::Kansaiでの発表資料です
https://yapcjapan.org/2017kansai/
meru_akimbo
November 20, 2018
Other Decks in Programming
See All in Programming
Verilogで学ぶCPU自作入門
uyuki234
8
4.1k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
2
660
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
140
残高管理から台帳サービスへの進化
artoy
1
200
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
すこし踏み込む CancellationToken
htkym
2
1.7k
Workers Cache を知る
syumai
0
370
パズルゲームの作り方 / how to make puzzle games
kaityo256
PRO
2
300
S3 TablesのIcebergデータに、AIエージェントからアクセスしてみた / 20261016developersio2026joetsu-accessing-iceberg-in-s3tables-via-agent
kasacchiful
PRO
0
160
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
350
Next.js: The final boss of Web Performance
guaca
0
280
phperだってパンチカードでコーディングしたい
o0h
PRO
0
340
Featured
See All Featured
Darren the Foodie - Storyboard
khoart
PRO
4
4k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
2
2.2k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Claude Code のすすめ
schroneko
67
230k
Why Our Code Smells
bkeepers
PRO
340
58k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
580
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
940
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
710
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
630
The SEO Collaboration Effect
kristinabergwall1
1
590
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.7k
Transcript
TRUNCATE user;ʹ Կʹཱ͔ͯͪ͠͏͔ @meru_akimbo
Who are you? • @meru_akimbo • αʔόॻ͍ͨΓWebΦϖϨʔγϣϯͨ͠Γ όΠΫͬͨΓ • 24ࡀ
• ΊͬͨʹਓલͰ·ͤΜ
ԠืͷܦҢ
None
ίϫΠ!
க໋ইʹͳΓͦ͏ͳΫΤϦ • TRUNCATE user; • DROP TABLE user; • DROP
DATABASE myapp; • DROP DATABASE myapp_user;
ோΊΔ͚ͩͰਏ͍
ྲྀੴʹͦΜͳΫΤϦଧͨͶʔΑ • ։ൃπʔϧ͕όάͬͯޡര • ։ൃDBͱצҧ͍ͯ͠ଧͬͨ • γφϦΦ৭ʑ…. • ຊ൪DBʹDROP DATABASEଧͪࠐΜͩ͜ͱ
͋Δਓੈͷதʹ͍Δ • ࢲͰ͢
େ͛͞ͳΫΤϦ͡Όͳͯ͘ • appͷόάͰக໋తͳෆ߹͕ɺͱ͔ • ͦ͏͍͏ͷ͋ΔΘ͚Ͱ • ϊʔΨʔυઓ๏΄΅΄΅͋Γ͑ͳ͍ • ͱ͍͏ͱ͜Ζ·ͰલఏͳΘ͚Ͱ
ʮͪΌΜͱόοΫΞοϓऔΕࡁΉͰ?ʯ
None
“ͪΌΜͱ” is Կ
ͦΕ”ͪΌΜͱ”Ͱ͖ͯΔ? • ͍͟ͱ͍͏࣌ຊʹϦετΞͰ͖Δͷ? • ϦετΞͨ͠Βͦͷ··αʔϏε࠶։Ͱ͖ Δͷ? • σʔλྔ૿͑ͯͦͷΓํͰେৎ?
ฐࣾͰΑ͋͘Δmysqlߏ • લఏͱͯ͠ΦϯϓϨ • master 1ɺslave nɺbackup 1 • backup24࣌ؒʹ1
• backup༻ͷDBΛҰࢭΊͯcp͢Δ • ऴΘͬͨΒbackup༻DBΛ࠶্ཱͪ͛
͍ؒ͜ͷӡ༻ͩͬͨ • ಛʹى͖ͯͳ͔ͬͨ • ࣮ࡍʹbackup͔ΒmasterΛrestore͢ΔϨ ϕϧͷࣄނ·ͩݟͨ͜ͱͳ͍ • ৽͍͠slaveͷߏஙͳͲʹΑ͘ΘΕ͍ͯ ͨ
ن͕େ͖͘ͳ͖ͬͯͨ • ࠓ·ͰͷεϖοΫͷDBαʔόͩͱ͍͔ͭ ͳ͍Α͓…
None
HDD => SSD • ࣓ྗΛଳͼͨԁ൫Λճసͤ͞ΔّࣜͰઓ͍ ଓ͚Δͷਏ͍… • ͷؙ • ͠Β͘ฏʹͳͬͨ
IO waitԼ͕ͬͯΊͰͨ͠ΊͰͨ͠
(ͦͷޙͷνϡʔχϯάͷઓ͍·ͨผͷ …
݄ͦͯ͠ྲྀΕ…
upstartʹbackupΛࡴ͞Εͨ
/etc/init/mysqlΑΓ # MySQL Service description "MySQL Server" author "Mario Limonciello
<
[email protected]
>" start on runlevel [2345] stop on starting rc RUNLEVEL=[016] respawn respawn limit 2 5 env HOME=/etc/mysql umask 007 # The default of 5 seconds is too low for mysql which needs to flush buffers kill timeout 300 ҎԼলུ
mysqlͷఀࢭʹ͕͔͔࣌ؒΓ͍͗ͯͨ͢…
͋ɺkill timeoutɺSIGKILLଧͨΕ·͢
backupͷmysqlىಈͰ͖ͳ͘ͳͬͨ
ͻͱ·ͣtimeoutΛ৳͍ͯ྇ͩ͠…
next battle field….
ϨϓϦέʔγϣϯԆઓ૪
backupͷΈԆ͕ى͖࢝Ίͨ • ͦͦͳΜͰbackup͚͓͖ͩͨͷ?
backupHDDͷ··͔ͩͬͨΒ….
ΞϗΈ͍ͨʹݟ͑Δ͕… • ͨͩϨϓϦέʔγϣϯ͢Δʹॳେ ৎͩͬͨͷͩ • backup༻్ͰSSDΛ༻ҙ͢Δͱɺ༰ྔେ ͖͘ͳΓ݁ߏ͓ߴ͍ • σʔλαΠζ૿͑ͨΒͬͱͰ͔͍ͷ ങͬͯೖΕସ͑Δͷ͔?
• ͻͱ·ͣ࠷ॳݟૹ͍ͬͯͨΑ͏
࠷ॳΕ͍͍ͯͭͨ • ࠶ىಈͷλΠϛϯάͰ͕ͬͭΓΕɺঃʑ ʹղফ • ͕ɺͩΜͩΜͻͲ͘ͳ͖ͬͯͨ • master͔ΒҾ͖͞ΕΔҰํʹ
backup͕ΕΔͱࠔΔ͜ͱ • ·͋ΞϓϦέʔγϣϯ͔ΒΘΕͯ ͳ͍ͷͰɺଈக໋తͰͳ͍ • Εͨঢ়ଶͰ࡞ͬͨbackupՁ͕͍ • 1Εͨঢ়ଶͰ࡞ΔͱɺϦετΞ࣌ʹ࠷େ 2ΕΔܭࢉʹͳΔ
None
SSDΛͬ͞͞ͱങͬͯྑ͔͕ͬͨ… • ͻͱ·ͣmy.cnfͷௐΛͯ͠ΈΔ͜ͱʹ͠ ͨ • innodb_lru_scan_depth • innodb_io_capacity_max • ͳͲioʹؔ͢Δ෦Λௐ
վળ
͕ɺμϝͬ • نͷ֦େʹͭΕͯ·ͨΕ࢝Ίͨ • εϖοΫࠩΛͰຒΊΔͷ͕ݶքʹདྷͨ
͏͔͍͍ͭͬͯΑͶ…?
͜ͷػձʹ৭ʑݟ͍ͨ͠… • ༰ྔ͕૿͖͑ͯͯਏ͘ͳ͍ঢ়ଶ • Ԇ͕ൃੜͮ͠Β͍ঢ়ଶ • ͦͦ࠷େ1ר͖Δͷڐ༰Ͱ͖ͳ͘ ͳ͖ͬͯͯΔͷͰͳΜͱ͔͠ͱ͖͍ͨ
Ҋ1: SSDͱHDD྆ํϚϯτͯ͠HDDʹϑ ϧόοΫΞοϓΛஔ͘ • ᝑମͷ߹Ͱ2ຕϚϯτෆՄͳͷͰແཧ • ૬มΘΒͣσʔλࣦ͢Δ࣌ؒଟΊ
Ҋ2: SSDԽ + ࠩόοΫΞοϓ • SSDʹͭͭ͠ɺࠩόοΫΞοϓΛऔಘͯ͠ ϩʔϧόοΫ͢Δ࣌ؒΛͭͭ͘͠༰ྔͷ ૿Ճ͑Δ • Քಇͯ͠ΔDB+ϑϧόοΫΞοϓ+ࠩͷ
༰ྔ͕ඞཁͰɺ͜ΕͰΘΓͱͭΒ͍
Ҋ3: SSDԽ+binlogͰϩʔϧϑΥϫʔυ • SSDʹͯ͠ɺϑϧόοΫΞοϓͷස૿ ͣ͞ɺൃੜ࣌binlogΛൃੜલ ·Ͱద༻ͤͯ͞σʔλͷফࣦΛ΄΅0ʹ͢Δ • ՔಇDB+ϑϧόοΫΞοϓΛ͓࣋ͬͯ͘ͷ ༰ྔ͕(ry
࠾༻Ҋ: SSDԽ+ԆϨϓϦέʔγϣϯ • ԆϨϓϦέʔγϣϯ͢ΔslaveΛઃஔ͠ɺ ͦΕΛόοΫΞοϓͱ͢Δ • ൃੜͨ͠Βstop slave͔ͯ͠Βrelaylog Ͱൃੜલ·Ͱ͢ •
ՔಇDB+Ԇͷrelaylogͷ༰ྔͰࡁΉ
·͍͠ͱ͜Ζ • TRUNCATE user;࣮ߦ͔ΒԆ͍Ռͨ͢ ·Ͱ์ஔͯ͠͠·͏ͱࢮ͵ • ͱ͍͑Ԇ͕े͚Ε·͋େৎͰ ͠ΐ • ෮چʹ͕͔͔࣌ؒΔͷڐ༰
Ͳͷ͘Β͍Ԇͤ͞Δ? • ࠓ24࣌ؒʹͯ͠Δ • 24࣌ؒαʔϏεͨ͠Βྲྀੴʹؾͮ͘ • ͚Ε͍΄Ͳ༛༧͕૿͑ΔͷͰɺͬ ͱ͍͍͔ͯ͘ • ա͗Δͱrelaylog͕ͨ·Γ͗͢Δ
ϦετΞͲ͏Δͷ? • relaylogΛmysqlbinlog͔ΒSQLʹॻ͖ى͜ ͯ͋͛ͯ͠ɺͷલ·Ͱ࣮ߦ͢Δ? • ͱࢥ͍ͬͯͨ࣌ظ͕ʹ͋Γ·ͨ͠ • start slaveͷΦϓγϣϯͰָͰ͖Δ
START SLAVE ͷUTILΦϓγϣϯ • START SLAVE UTIL RELAY_LOG_FILE = 'log_name',
RELAY_LOG_POS = log_pos • ࢦఆͷrelaylogͷࢦఆͷpositionͰstop͢Δ Α͏ʹ্ͨ͠Ͱstart slaveͰ͖Δ • ͋ͱRESET SLAVE ALL;ͰmasterʹͳΕΔ
TRUNCATE user;ଧͬͯͲ͏ʹ͔ͳΔ
ଧͨͳ͍ͷ͕Ұ൪͍͍
ᘳͰͳ͍… • TRUNCATE user;ͱbackupαʔόͷཧత ͳഁଛ͕ಉ࣌ʹى͖ͨΒ..? • ૿͍͍͕ͯ͠…. • ᘳΛٻΊΔͱ͍͘ΒϦιʔε͕͋ͬͯ Γͳ͍…
ͦͷଞ࠷ۙࢥ͏͚Ͳ • RDSϩʔϧϑΥϫʔυͰ͖ͳ͍Β͍͚͠ ͲͲ͏ͳΜ͡ΌΖ? • σʔλͷϩετΈΜͳڐ༰ͯ͠Δͷ? • όοΫΞοϓઓུɺʹͳΔ͜ͱ͘͢ͳ ͍Α͏ͳ͖͕͢ΔͷͰଞࣾࣄྫ͠Γͨ͞