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
mysql_first_performance_ tuning_y8
Search
mamy1326
May 27, 2017
Programming
2.8k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
mysql_first_performance_ tuning_y8
初めてのMySQLパフォーマンスチューニング
mamy1326
May 27, 2017
More Decks by mamy1326
See All by mamy1326
PHPer が知るべき MySQL クエリチューニング/What PHPers Need to Know about MySQL Query Tuning
mamy1326
18
8.3k
戦って品質保証を勝ち取る/Fight_for_quality_assurance
mamy1326
2
940
MySQLでGROUP BY と ORDER BY を同時に使いたくなったら/If_you_want_to_use_GROUP_BY_and_ORDER_BY_at_the_same_time_in_mysql
mamy1326
4
6.4k
初めてのMySQLパフォーマンスチューニングーデータベースは怖くない!/mysql-performance-tuning-basics-in-db-study-chugoku-chiho
mamy1326
8
3k
アウトプットを継続するためにやる10箇条-吉祥寺.pm-/10_things_practicing_to_continue_output-in_kichijoji.pm
mamy1326
4
2.4k
MySQLパフォーマンスチューニングの基本ー実際のトラブルシュートから my.cnf までー/MySQL_Performance_Tuning_Basics_in_OSC_Niigata
mamy1326
2
3.8k
アウトプットを継続するためにやっている 10 のこと/10_things_practicing_to_continue_output
mamy1326
21
9.7k
アプリケーションエンジニアが知るべきDNSの基本/Basics_of_DNS_that_application_engineers_should_know
mamy1326
113
48k
dns-penetration-problem-why-can-not-i-say-penetration-kichijojipm15
mamy1326
5
4.1k
Other Decks in Programming
See All in Programming
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3k
ChromeでローカルLLM
ryu1013
0
170
Railsバージョンを4倍にした話
optim
0
820
動画プレイヤーはなぜカクつくのか 〜Flutterのレンダリングとネイティブの境界を解剖する〜
naruogram
0
250
Seven New Principles of Software Engineering
yegor256
0
370
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
1.1k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
470
Groovy as a human and AI friendly programming language
paulk
0
130
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
3
610
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
1.5k
オーケストレーション記述言語 Katari
yukikurage
0
200
Kotlinの15年とServer-Side Kotlin
n_takehata
1
170
Featured
See All Featured
Digital Ethics as a Driver of Design Innovation
axbom
PRO
1
470
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.7k
Agile that works and the tools we love
rasmusluckow
331
22k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
340
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Odyssey Design
rkendrick25
PRO
2
900
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.2k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
350
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
610
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.4k
Bash Introduction
62gerente
615
220k
Transcript
ॳΊͯͷ .Z42-αʔόʔ ύϑΥʔϚϯε νϡʔχϯά ·Έͳ͓͖ !NBNZ .BZ!Z4QSJOHJO4IJCVZB
ࣗݾհ Name ɹɹ ɿ·Έͳ͓͖ Twitterɹɹ ɿ@mamy1326 2016·ͰΞϓϦத৺ 2017͔Βຊ֨తʹ ɹɹɹɹɹɹɹDBɾΠϯϑϥ
ϫλγ Πϯϑϥ νϣοτσΩϧ
ɹఆΦʔσΟΤϯε ɾΞϓϦΤϯδχΞ ɾ%#ීஈπʔϧͰࢀরɾૢ࡞ ɹˠίϚϯυϥΠϯͰ%#ૢ࡞͠ͳ͍ ɾίϯιʔϧ͋Μ·ΓΘͳ͍
ߏ ⾣NZDOG ɹશ߲ͷௐࠪɾઃఆ ⾣ΫΤϦΩϟογϡͷଌఆ ⾣ϨϓϦέʔγϣϯ
ϓϩϩʔά
ɹͱ͋ΔαʔϏεͷӡ༻ঢ়گ िʹҰ %#αʔόʔμϯ ͕ऩ·ΔͷΛ ͻͨ͢Βͭ
ɹͱ͋ΔαʔϏεͷӡ༻ঢ়گ %#ͷ -"͕Ͷ্͕ͬͯΔΜͰ ͱΓ͋͑ͣ 8FCͷଓ੍ݶͯ͠ Ͳ͏ʹ͔͍ͯͨ͠
ɹͱ͋ΔαʔϏεͷӡ༻ঢ়گ %#ͷ -"͕Ͷ্͕ͬͯΔΜͰ ͱΓ͋͑ͣ 8&#ͷଓ੍ݶͯ͠ Ͳ͏ʹ͔͍ͯͨ͠ ౖ
ঢ়گ̍ νϡʔχϯά͞Ε͍ͯͳ͍ .Z42- ઐ༻αʔόʔ
ঢ়گ̎ ࢭ·Βͳ͍ )551ϦΫΤετ Ͱඵؒ̑
ঢ়گ̏ ڊେͳϩάςʔϒϧ ϑϧεΩϟϯ º̎ ֤ສϨίʔυ
ঢ়گ̐ ࿈ൃ͢ΔεϩʔΫΤϦ ϩάऔ͍ͬͯͳ͍
ঢ়گ̑ ࢮΜͩΒऴΘΔϚελʔ εϨʔϒ͕ͳ͍
ঢ়گ̒ .Z42-ܥ ࣏తʹ όʔδϣϯΞοϓͰ͖ͳ͍
ࢦ͢ .Z42-ͷઃఆΛ ͪΌΜͱཧղͯ͠ ࠷దͳύϑΥʔϚϯεΛɻ
NZDOG શ߲ͷ ௐࠪɾઃఆ
ɹNZDOG֬ೝ [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock symbolic-lincs=0 expire_logs_days=3 sort_buffer=4M log-bin=mysql-bin server-id=1001 ΄΅σϑΥϧτ
ɾТɾA
ɹNZDOGઃఆํ ɾڞ༗ྖҬ͔Β ɹɹɹςʔϒϧݸผྖҬ ɾదͳϝϞϦׂΓͯ
ɹNZDOGઃఆํ ɾڞ༗ྖҬ͔Β ɹɹɹςʔϒϧݸผྖҬ ɾదͳϝϞϦׂΓͯ
ɹڞ༗ྖҬͱ ɾ.Z42-ͷσϑΥϧτɺ͓͖͍ͬശͷத ɹͰશςʔϒϧΛऔΓѻ͍ͬͯΔ ɾେ͖ͳςʔϒϧখ͞ͳςʔϒϧಉډ ɾϨίʔυͰߋ৽ʹ͕͔͔࣌ؒΔ
ɹڞ༗ྖҬͷ࣮ྫ EBUBCBTF UBCMFSPXTTJ[F WBSMJCNZTRMJCEBUB
ɹڞ༗ྖҬͷ࣮ྫ EBUBCBTF UBCMFSPXTTJ[F WBSMJCNZTRMJCEBUB ͜ͷϑΝΠϧʹ શͯͷςʔϒϧͷσʔλ͕ ه͞Ε͍ͯΔ
ɹςʔϒϧݸผྖҬͱ ɾςʔϒϧΛ͚̍ͭͣͭͯऔΓѻ͏ ɾେ͖ͳςʔϒϧখ͞ͳςʔϒϧݸผ ɾߋ৽ରͷςʔϒϧͷྖҬʹͷΈߋ৽͕ ɹ͔͔ΔͨΊଞʹӨڹΛ༩͑ͳ͍
ɹઃఆ༰ ͜Ε͚ͩʂ [mysqld] innodb_file_per_table=1
ͨͩ͠ɾɾɾ ɾNZTRM࠶ىಈ͚ͩͰ ɹطଘͷςʔϒϧʹରͯ͠ద༻͞Εͳ͍ ɾ࠶ىಈޙʹ$3&"5& ɹ͞ΕΔςʔϒϧʹͷΈ༗ޮ EVNQϦετΞ͕ඞཁ
ɹ݁Ռ EBUBCBTF UBCMFSPXTTJ[F WBSMJCNZTRMJCEBUB WBSMJCNZTRMNBNZ
ɹ݁Ռ EBUBCBTF UBCMFSPXTTJ[F WBSMJCNZTRMJCEBUB WBSMJCNZTRMNBNZ EBUBCBTF໊Ͱ σΟϨΫτϦ͕࡞͞Ε ςʔϒϧ͝ͱʹ ϑΝΠϧ͕࡞ΒΕ͍ͯΔ
ɹ݁Ռ EBUBCBTF UBCMFSPXTTJ[F WBSMJCNZTRMJCEBUB WBSMJCNZTRMNBNZ EBUBCBTF໊Ͱ σΟϨΫτϦ͕࡞͞Ε ςʔϒϧ͝ͱʹ ϑΝΠϧ͕࡞ΒΕ͍ͯΔ Ώɹ͑ɹʹ
ɹ݁Ռ EBUBCBTF UBCMFSPXTTJ[F WBSMJCNZTRMJCEBUB WBSMJCNZTRMNBNZ SFQPSUςʔϒϧɹ͕ ߋ৽͞Εͨ߹ ֘ͷϑΝΠϧͷΈߋ৽
ɹNZDOGઃఆํ ɾڞ༗ྖҬ͔Β ɹɹɹςʔϒϧݸผྖҬ ɾదͳϝϞϦׂΓͯ
ɹϝϞϦׂΓͯͱ ɾσʔλͱJOEFY ɹɹɹɹϝϞϦʹΩϟογϡ ɾదͳαΠζ ɹɹɹɹཧϝϞϦͷׂ
ɹઃఆ༰ ͜Ε͚ͩʂ [mysqld] # InnoDBͷσʔλͱindexΛΩϟογϡ͢ΔόοϑΝαΠζ # (ਪཧϝϞϦ8ׂ) innodb_buffer_pool_size=6G # InnoDBͷߋ৽ϩάΛه͢ΔσΟεΫ্ͷϑΝΠϧαΠζ
innodb_log_file_size=1G
ղઆ ⾣JOOPEC@CV⒎FS@QPPM@TJ[F( ɾσʔλͱJOEFYΛΩϟογϡ͓ͯ͘͠αΠζ ɾ%#αʔόʔͷཧϝϞϦ(ʹର͢Δ͓Αׂͦ ɾNZTRM࠶ىಈ࣌ʹׂΓͯΒΕ·͢ ɾॻ͖ࠐΈ࣌ʹύϑΥʔϚϯε্͕ݟࠐ·ΕΔ ɹˏ.Z42-ެࣜ
ղઆ ⾣JOOPEC@MPH@pMF@TJ[F( ɾ*OOP%#ͷߋ৽ϩάαΠζ ɾDPNNJUཤྺΛه͢Δ ɹˠ.Z42-DPNNJU࣌ɺ͍ͬͨΜϩάʹه͞ΕΔ ɾϑΝΠϧγʔέϯγϟϧͳͷͰɺߋ৽͕͍ ɾੵΜͩDPNNJUΛॱ࣮࣍σʔλʹө͢Δ
ͦͷଞͷઃఆ ⾣εϩʔΫΤϦϩάؔ࿈ [mysqld] # εϩʔΫΤϦͷग़ྗઃఆ slow_query_log=ON # εϩʔΫΤϦͱఆ͢Δඵ long_query_time=3 #
εϩʔΫΤϦͷॴ log-slow-queries=/var/log/slow.log
ͦͷଞͷઃఆ ⾣ΫΤϦΩϟογϡؔ࿈ [mysqld] # ΫΤϦΩϟογϡ࠷େαΠζ query_cache_limit=16M # ΫΤϦΩϟογϡͰ༻͢ΔϝϞϦαΠζ query_cache_size=512M #
ΫΤϦΩϟογϡͷλΠϓ # 0:off, 1:ON SELECT SQL_NO_CACHE, 2:DEMAND SELECT SQL_CACHE query_cache_type=1⊠
NZDOGઃఆ݁Ռ ⾣ඵؒϦΫΤετʂ ⾣ϝϞϦ͕ੵ·Ε͚ͨͩՔಇʂ ⾣ςʔϒϧݸผͰߋ৽ܥ͕ૣ͘ʂ ⾣ΫΤϦΩϟογϡώοτʂ ⾣JOEFYݟ͠ͰεϩʔΫΤϦղফʂ
ɹNZDOGઃఆ·ͱΊ ⾣αʔϏεʹԠͯ͡దʹઃఆʂ ⾣σϑΥϧτμϝʂθολΠʂ ⾣ઃఆޙͷఆظతʹࢹʂ ɹˠνϡʔχϯάܧଓ໋͕ʂ ⾣ςʔϒϧઃܭܭըతʹʂ
ແࣄʹɾɾɾ αʔϏε͕ ӡ༻ʹ͑ΒΕΔΑ͏ʹ
ΫΤϦΩϟογϡ ଌఆ
ଌఆ NZDOGઃఆ͔ͯ͠Βिؒ ΫΤϦΩϟογϡ͕ Ͳ͏ͳͬͨͷ͔
Δ͜ͱ ΫΤϦΩϟογϡΛదʹ࣋ͨͤ ݁ՌΛͳΔ͘Ωϟογϡ͔Βฦ͢Α͏ νϡʔχϯάΛߦͬͨ ݁ՌΛݕূ Ͱݕূ
ΫΤϦΩϟογϡͱ %#Λ4&-&$5ͨ݁͠ՌΛ ϝϞϦʹΩϟογϡ͠ ࣍ʹಉҰͷΫΤϦͷ߹ Ωϟογϡ͔Β݁ՌΛฦ͢
ɹઃఆ༰ [mysqld] # ΫΤϦΩϟογϡ࠷େαΠζ query_cache_limit=16M # ΫΤϦΩϟογϡͰ༻͢ΔϝϞϦαΠζ query_cache_size=512M # ΫΤϦΩϟογϡͷλΠϓ
# 0:off, 1:ON SELECT SQL_NO_CACHE, 2:DEMAND SELECT SQL_CACHE query_cache_type=1⊠
ઃఆͷ֬ೝ NZTRM4)087"3*"#-&4-*,&bRVFSZ@DBDIF +------------------------------+-----------+ | Variable_name | Value | +------------------------------+-----------+ |
have_query_cache | YES | | query_cache_limit | 16777216 | | query_cache_min_res_unit | 4096 | | query_cache_size | 536870912 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | +------------------------------+-----------+
ઃఆͷղઆ ⾣IBWF@RVFSZ@DBDIFɿ:&4 ɹΫΤϦΩϟογϡΛ ɹ༻Մೳ͔Ͳ͏͔
ઃఆͷղઆ ⾣RVFSZ@DBDIF@MJNJUɿ ɹͭͷRVFSZͷ࣮ߦ݁Ռ ɹɹͱͯ͠ ɹDBDIF͢Δ࠷େͷαΠζ
ઃఆͷղઆ ⾣RVFSZ@DBDIF@TJ[Fɿ ɹΫΤϦΩϟογϡͷ ɹ૯ྖҬ
ઃఆͷղઆ ⾣RVFSZ@DBDIF@UZQFɿ0/PS ɹ4&-&$542-@/0@$"$)& ɹͰ࢝·ΔΫΤϦҎ֎Ωϟογϡ Ωϟογϡ͔Β ໌ࣔతʹআ֎Ͱ͖Δ
ɹөঢ়ଶͷݕূ NZTRM4)084&44*0/45"564-*,&b2DBDIF +-------------------------+-----------+ | Variable_name | Value | +-------------------------+-----------+ |
Qcache_free_blocks | 791 | | Qcache_free_memory | 533156064 | | Qcache_hits | 1442086 | | Qcache_inserts | 291072 | | Qcache_lowmem_prunes | 0 | | Qcache_not_cached | 3599 | | Qcache_queries_in_cache | 1760 | | Qcache_total_blocks | 4361 | +-------------------------+-----------+
өͷղઆ ⾣2DBDIF@IJUTɿ ɹΫΤϦʔ݁Ռ͕ ɹΫΤϦʔΩϟογϡ͔Βฦ͞Εͨ ɹͭ·ΓΩϟογϡώοτ Ωϟογϡʹ͋ΔΫΤϦʔ͕ ΘΕΔͨͼʹΠϯΫϦϝϯτ
өͷղઆ ⾣2DBDIF@JOTFSUTɿ ɹΫΤϦʔΩϟογϡʹՃ͞Εͨ ɹΫΤϦʔͷ
өͷղઆ ⾣2DBDIF@OPU@DBDIFEɿ ɹΩϟογϡͰ͖ͳ͍͔ ɹRVFSZ@DBDIF@UZQFઃఆͷͨΊ ɹΩϟογϡ͞Εͳ͔ͬͨ ϝϞϦෆͳͲͰΩϟογϡ͞Εͳ͍ ߹͋ΔͷͰҙ
ɹ݁Ռ ΫΤϦΩϟογϡIJU
ώοτͷܭࢉ શΫΤϦʔ ͷͰ ΫΤϦΩϟογϡώοτΛ আࢉ͢Δ
ώοτͷܭࢉ શΫΤϦʔ Ωϟογϡ͔Βฦͨ͠ ʴ Ωϟογϡ͔Βฦͤͳ͔ͬͨ
ώοτͷܭࢉ Ωϟογϡ͞ΕΔͱ 2DBDIF@JOTFSUT͕ ΧϯτΞοϓ͞ΕΔ Ωϟογϡʹ ৽نొͨ͠
ώοτͷܭࢉ ΩϟογϡʹొͰ͖ͳ͍ͱ 2DBDIF@OPU@DBDIFE͕ ΧϯτΞοϓ͞ΕΔ Ωϟογϡ͔Β ฦͤͳ͔ͬͨ
ώοτͷܭࢉ ⾣2DBDIF@IJUTɿ ⾣2DBDIF@JOTFSUTɿ ⾣2DBDIF@OPU@DBDIFEɿ
ʜ
ɹͨͩ͠ɾɾɾ Ұൠతʹ ΛԼճͬͨΒ ͍Ζ͍Ζݟͨ͠ํ͕͍͍
ҙ ʲલఏʳ ΫΤϦΩϟογϡ 4&-&$5ʢݕࡧʣ
ҙ ॻ͖ࠐΈ͕ଟൃ͢Δ ςʔϒϧʹ͔ͳ͍ Ωϟογϡ͕ॻ͖ΘΔ
ҙ ΫΤϦΩϟογϡΛΊ ϓϩάϥϜଆͰΩϟογϡ NFNDBDIFEͳͲ
ɹΫΤϦΩϟογϡ·ͱΊ ⾣ϝϞϦʹԠͯ͡దʹઃఆʂ ⾣IJUΛܧଓͯ͠ܭଌʂ ⾣αʔϏεͷੑ࣭ΛݟۃΊΔʂ ⾣ܿ͘ϓϩάϥϜʹͤΔʂ
ϨϓϦέʔγϣϯ ࣮ࢪ
͜͜·ͰͰɾɾɾ ɾӡ༻͕҆ఆ ɾΫΤϦΩϟογϡ ɹɹɹώοτ҆ఆ
͔͠͠
՝ Ϛελʔ͕ࢮ͵ͱ σʔλ͕શ෦ࢮ͵
ෳ Ϛελʔ͔͠ͳ͍ ݱঢ়ʹ εϨʔϒΛ࡞Γ
ෳ ϨϓϦέʔγϣϯ Λ࣮ࢪ͠·͢
ɹϨϓϦέʔγϣϯͱ ⾣σʔλϕʔεશମͷෳ ϨϓϦΧ ⾣ผͷαʔόʔʹෳʢεϨʔϒʣ ⾣.Z42-ͷඪ४ػೳͰ͓खܰ ⾣΄΅࣌ؒࠩͳ͠ʹಉظ
ߏ Ϛελʔ ʢ୯Ұʣ εϨʔϒ ʢʣ εϨʔϒ ʢOʣ ɾɾɾ
Ϛελʔ ⾣σʔλΛߋ৽͢Δଆ ⾣ߋ৽༰ΛεϨʔϒ͕औΓʹདྷΔ ɹˠεϨʔϒʹର͠ߋ৽ΠϕϯτΛ௨ ⾣ෳͷεϨʔϒΛ࣋ͯΔ
εϨʔϒ ⾣ߋ৽༻Ͱͳ͘ࢀর༻ ⾣Ϛελʔͷߋ৽༰Λड͚औΔ ⾣ϚελʔͷόΠφϦϩάΛऔಘ ⾣ߋ৽༰Λ%#ʹө ⾣ͭͷϚελʔͷΈ࣋ͯΔ
ϝϦοτ ⾣ࢀর 4&-&$5 ੑೳͷ্ ݕࡧॲཧ͕ॏ͍߹ εϨʔϒΛࢀরܥʹͯ͠ ෛՙࢄ
ϝϦοτ ⾣Մ༻ੑͷߴ͍ߏͷ࣮ݱ Ϛελʔোͷ߹ εϨʔϒΛϚελʔʹঢ֨ μϯλΠϜॖ
ϝϦοτ ⾣όοΫΞοϓαʔόʔ εϨʔϒͰόοΫΞοϓ ϚελʔʹӨڹͳ͘ όοΫΞοϓऔಘ
ࣄલ४උ ⾣ϨϓϦέʔγϣϯϢʔβʔ࡞ ⾣ϚελʔՔಇঢ়ଶͷ֬ೝ ⾣ϚελʔόΠφϦϩάͷ֬ೝ ⾣εϨʔϒͷઃఆ֬ೝ
ࣄલ४උ ⾣ϨϓϦέʔγϣϯϢʔβʔ࡞ ⾣ϚελʔՔಇঢ়ଶͷ֬ೝ ⾣ϚελʔόΠφϦϩάͷ֬ೝ ⾣εϨʔϒͷઃఆ֬ೝ
ɹɹϨϓϦέʔγϣϯϢʔβʔ࡞ ⾣ఆٛ ɹɾϚελʔଆʹ࡞ ɹɾεϨʔϒ͔Βଓ͢Δ ɹɾϨϓϦέʔγϣϯઐ༻Ϣʔβʔ
ɹɹϨϓϦέʔγϣϯϢʔβʔ࡞ ⾣࡞ίϚϯυ NZTRM NBTUFS $3&"5&64&3 NZTRM NBTUFS `SFQM`!`<εϨʔϒͷϗετ໊>` NZTRM NBTUFS
*%&/5*'*&%#:1"44803%` `
ɹɹϨϓϦέʔγϣϯϢʔβʔ࡞ ⾣ݖݶίϚϯυ NZTRM NBTUFS (3"/53&1-*$"5*0/4-"7& NZTRM NBTUFS 0/ 50
NZTRM NBTUFS `SFQM`!`<εϨʔϒͷϗετ໊>`
ࣄલ४උ ⾣ϨϓϦέʔγϣϯϢʔβʔ࡞ ⾣ϚελʔՔಇঢ়ଶͷ֬ೝ ⾣ϚελʔόΠφϦϩάͷ֬ೝ ⾣εϨʔϒͷઃఆ֬ೝ
ϚελʔͷNZDOG [mysqld] # εϨʔϒʹ௨͢ΔόΠφϦϩά(࣮ࡍφόϦϯά͞ΕΔ) log-bin=mysql-bin # ϨϓϦέʔγϣϯ࣌ͷɺαʔόʔϢχʔΫID server-id=1001 # όΠφϦϩάϑΝΠϧͷϩʔςʔτ
set-variable=expire_logs_days=3
[mysqld] # εϨʔϒʹ௨͢ΔόΠφϦϩά(࣮ࡍφόϦϯά͞ΕΔ) log-bin=mysql-bin # ϨϓϦέʔγϣϯ࣌ͷɺαʔόʔϢχʔΫID server-id=1001 # όΠφϦϩάϑΝΠϧͷϩʔςʔτ set-variable=expire_logs_days=3
ϚελʔͷNZDOG DPNNJUΛ௨ޙ εϨʔϒ͕ଓͯ͠औಘ WBSMJCNZTRM NZTRMCJO999999
[mysqld] # εϨʔϒʹ௨͢ΔόΠφϦϩά(࣮ࡍφόϦϯά͞ΕΔ) log-bin=mysql-bin # ϨϓϦέʔγϣϯ࣌ͷɺαʔόʔϢχʔΫID server-id=1001 # όΠφϦϩάϑΝΠϧͷϩʔςʔτ set-variable=expire_logs_days=3
ϚελʔͷNZDOG εϨʔϒ͔Βݟͨ Ϛελʔͷ*%
[mysqld] # εϨʔϒʹ௨͢ΔόΠφϦϩά(࣮ࡍφόϦϯά͞ΕΔ) log-bin=mysql-bin # ϨϓϦέʔγϣϯ࣌ͷɺαʔόʔϢχʔΫID server-id=1001 # όΠφϦϩάϑΝΠϧͷϩʔςʔτ set-variable=expire_logs_days=3
ϚελʔͷNZDOG ଟ͗͘͢͠Δͱ ετϨʔδѹഭ
ࣄલ४උ ⾣ϨϓϦέʔγϣϯϢʔβʔ࡞ ⾣ϚελʔՔಇঢ়ଶͷ֬ೝ ⾣ϚελʔόΠφϦϩάͷ֬ೝ ⾣εϨʔϒͷઃఆ֬ೝ
ɹɹϚελʔόΠφϦϩάͷ֬ೝ ⾣όΠφϦϩάͱҐஔใ ɹɾόΠφϦϩάϑΝΠϧͱ ɹɹɹˠϚελʔ͕DPNNJUͨ͠ཤྺ ɹɾϩʔςʔτ͞ΕΔ ɹɹɹˠݱࡏͷϑΝΠϧ໊Λ֬ೝ ɹɾͲ͜·ͰDPNNJUͰ͖ͯΔ͔ ɹɹɹˠҐஔใΛ֬ೝ
ɹɹϚελʔόΠφϦϩάͷ֬ೝ mysql> SHOW MASTER STATUS\G ********* 1. row ********* File:
mysql-bin.000075 Position: 588201136 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.01 sec)
ɹɹϚελʔόΠφϦϩάͷ֬ೝ mysql> SHOW MASTER STATUS\G ********* 1. row ********* File:
mysql-bin.000075 Position: 588201136 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.01 sec) DPNNJUΛ௨ޙ εϨʔϒ͕ଓͯ͠औಘ WBSMJCNZTRM NZTRMCJO999999
ɹɹϚελʔόΠφϦϩάͷ֬ೝ mysql> SHOW MASTER STATUS\G ********* 1. row ********* File:
mysql-bin.000075 Position: 588201136 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.01 sec) ϚελʔͰ DPNNJU͕࣮ߦ͞Εͨ ϙδγϣϯ
ɹɹϚελʔόΠφϦϩάͷ֬ೝ mysql> SHOW MASTER STATUS\G ********* 1. row ********* File:
mysql-bin.000075 Position: 588201136 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.01 sec) εϨʔϒઃఆͰ༻͢ΔͨΊ ϝϞ͓͖ͯ͠·͠ΐ͏
⾣εϨʔϒΛ࡞Δࡍͷݪଇ ɹϚελʔΛϩοΫͯ͠EVNQ͠ ɹಉҰͷঢ়ଶͰϦετΞͯ͠ ɹϑΝΠϧɾϙδγϣϯΛ߹ΘͤΔ ࠩɾൈ͚࿙Εͳ͘ ϨϓϦέʔγϣϯ։࢝ ɹɹϚελʔόΠφϦϩάͷ֬ೝ
ࣄલ४උ ⾣ϨϓϦέʔγϣϯϢʔβʔ࡞ ⾣ϚελʔՔಇঢ়ଶͷ֬ೝ ⾣ϚελʔόΠφϦϩάͷ֬ೝ ⾣εϨʔϒͷઃఆ֬ೝ
ɹɹεϨʔϒͷઃఆ֬ೝ mysql> SHOW SLAVE STATUS\G **************** 1. row **************** Slave_IO_State:
Master_Host: [Ϛελʔͷϗετ໊] Master_User: repl Master_Log_File: mysql-bin.000009 Read_Master_Log_Pos: 303456264 Slave_IO_Running: No Slave_SQL_Running: No Seconds_Behind_Master: NULL Master_Server_Id: 0 1 row in set (0.01 sec)
ɹɹεϨʔϒͷઃఆ֬ೝ ⾣4MBWF@*0@4UBUFɿۭจࣈ ɹεϨʔϒͷݱࡏͷεςʔλε ɹϨϓϦέʔγϣϯ్͕Ε͍ͯΔͨΊ ɹۭจࣈͱͳ͍ͬͯΔ ࣮ߦ͞Ε͍ͯΕ 8BJUJOHGPSNBTUFSUPTFOEFWFOU
ɹɹεϨʔϒͷઃఆ֬ೝ ⾣.BTUFS@6TFSɿSFQM εϨʔϒ͔ΒϚελʔʹ ଓ͢ΔϢʔβʔ໊ ɹ ϚελʔͰ࡞ͨ͠ઐ༻Ϣʔβʔ
ɹɹεϨʔϒͷઃఆ֬ೝ ⾣.BTUFS@-PH@'JMFɿNZTRMCJO εϨʔϒ͕Ϛελʔ͔Β औಘ͢ΔόΠφϦϩά ɹ Քಇ͍ͯ͠ͳ͔ͬͨͷͰ ζϨ͍ͯΔ
ɹɹεϨʔϒͷઃఆ֬ೝ ⾣
[email protected]
@-PH@1PTɿ εϨʔϒͷ*0εϨου͕ ࠷ޙʹಡΈऔͬͨҐஔ ɹ ͔͜͜ΒϨϓϦέʔγϣϯ࠶։͕ͩ େ͖͘ζϨ͍ͯΔ
ɹɹεϨʔϒͷઃఆ֬ೝ ⾣4MBWF@*0@3VOOJOHɿ/0 εϨʔϒͷ*0εϨου͕ ࣮ߦ͞Ε͍ͯͳ͍ ɹ ϚελʔͷόΠφϦϩά͕ҧ͏ͷͰ ଓͰ͖͍ͯͳ͍
ɹɹεϨʔϒͷઃఆ֬ೝ ⾣4MBWF@42-@3VOOJOHɿ/0 εϨʔϒͷ42-εϨου͕ ࣮ߦ͞Ε͍ͯͳ͍ ɹ εϨʔϒͷ%#͕ ߋ৽͞Ε͍ͯͳ͍
ɹɹεϨʔϒͷઃఆ֬ೝ ⾣4FDPOET@#
[email protected]
ɿ/6-- Ϛελʔʹൺͯ Ԇ͍ͯ͠Δඵ ɹ ϨϓϦέʔγϣϯ࣮ߦ͞Ε͍ͯͳ͍
ɹϨϓϦέʔγϣϯखॱ ⾣ϚελʔͷEVNQΛऔಘ ⾣εϨʔϒͷNZDOGઃఆ ⾣εϨʔϒʹϦετΞ ⾣εϨʔϒઃఆมߋ ⾣ϨϓϦέʔγϣϯ࣮ߦ ⾣࣮ߦঢ়گΛࢹ
ɹϨϓϦέʔγϣϯखॱ ⾣ϚελʔͷEVNQΛऔಘ ⾣εϨʔϒͷNZDOGઃఆ ⾣εϨʔϒʹϦετΞ ⾣εϨʔϒઃఆมߋ ⾣ϨϓϦέʔγϣϯ࣮ߦ ⾣࣮ߦঢ়گΛࢹ
ɹɹϚελʔͷEVNQΛऔಘ ⾣ϚελʔΛϩοΫ mysql(master)> FLUSH TABLES WITH READ LOCK; Query OK,
0 rows affected (0.00 sec) ⾣όΠφϦϩάͱϙδγϣϯऔಘ mysql(master)> SHOW MASTER STATUS; File: mysql-bin.000075 Position: 588201136 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.01 sec)
ɹɹϚελʔͷEVNQΛऔಘ ⾣ϚελʔΛϩοΫ mysql(master)> FLUSH TABLES WITH READ LOCK; Query OK,
0 rows affected (0.00 sec) ⾣όΠφϦϩάͱϙδγϣϯऔಘ mysql(master)> SHOW MASTER STATUS; File: mysql-bin.000075 Position: 588201136 Binlog_Do_DB: Binlog_Ignore_DB: 1 row in set (0.01 sec) εϨʔϒઃఆͰ༻͢ΔͨΊ ϝϞ͓͖ͯ͠·͠ΐ͏
ɹɹϚελʔͷEVNQΛऔಘ ⾣EVNQऔಘ $ mysqldump -u root -p mamy1326 > gzip
mamy1326.dump.gz ɾผίϯιʔϧ͔Β࣮ࢪ ɹˠRVJU͢ΔͱϩοΫ͕֎Ε·͢ ɾετϨʔδ༰ྔΛߟྀͯ͠H[JQ ɾTDQίϚϯυͰεϨʔϒʹసૹ
ɹɹϚελʔͷEVNQΛऔಘ ⾣ϚελʔͷϩοΫΛղআ mysql(master)> UNLOCK TABLES; Query OK, 0 rows affected
(0.00 sec)
ɹϨϓϦέʔγϣϯखॱ ⾣ϚελʔͷEVNQΛऔಘ ⾣εϨʔϒͷNZDOGઃఆ ⾣εϨʔϒʹϦετΞ ⾣εϨʔϒઃఆมߋ ⾣ϨϓϦέʔγϣϯ࣮ߦ ⾣࣮ߦঢ়گΛࢹ
ɹɹεϨʔϒͷNZDOGઃఆ [mysqld] # εϨʔϒͷαʔόʔID server-id=1002 # Ϛελʔͷঢ֨Λߟྀ͠ɺϩΪϯάΛ༗ޮʹ͢Δ log-bin=mysql-bin # όΠφϦϩάϑΝΠϧͷϩʔςʔτ
set-variable=expire_logs_days=3 # όΠφϦϩάͷग़ྗઃఆ log_slave_updates
[mysqld] # εϨʔϒͷαʔόʔID server-id=1002 # Ϛελʔͷঢ֨Λߟྀ͠ɺϩΪϯάΛ༗ޮʹ͢Δ log-bin=mysql-bin # όΠφϦϩάϑΝΠϧͷϩʔςʔτ set-variable=expire_logs_days=3
# όΠφϦϩάͷग़ྗઃఆ log_slave_updates ɹɹεϨʔϒͷNZDOGઃఆ ϚελʔɺεϨʔϒ શͯ߹Θͤͯ Ұҙͷ*%
[mysqld] # εϨʔϒͷαʔόʔID server-id=1002 # Ϛελʔͷঢ֨Λߟྀ͠ɺϩΪϯάΛ༗ޮʹ͢Δ log-bin=mysql-bin # όΠφϦϩάϑΝΠϧͷϩʔςʔτ set-variable=expire_logs_days=3
# όΠφϦϩάͷग़ྗઃఆ log_slave_updates ɹɹεϨʔϒͷNZDOGઃఆ όΠφϦϩάઃఆ Ϛελʔʹঢ֨ͨ͠߹ εϨʔϒʹ௨͢Δ
[mysqld] # εϨʔϒͷαʔόʔID server-id=1002 # Ϛελʔͷঢ֨Λߟྀ͠ɺϩΪϯάΛ༗ޮʹ͢Δ log-bin=mysql-bin # όΠφϦϩάϑΝΠϧͷϩʔςʔτ set-variable=expire_logs_days=3
# όΠφϦϩάͷग़ྗઃఆ log_slave_updates ɹɹεϨʔϒͷNZDOGઃఆ ༰ྔѹഭ͠ͳ͍Α͏ʹ
[mysqld] # εϨʔϒͷαʔόʔID server-id=1002 # Ϛελʔͷঢ֨Λߟྀ͠ɺϩΪϯάΛ༗ޮʹ͢Δ log-bin=mysql-bin # όΠφϦϩάϑΝΠϧͷϩʔςʔτ set-variable=expire_logs_days=3
# όΠφϦϩάͷग़ྗઃఆ log_slave_updates ɹɹεϨʔϒͷNZDOGઃఆ εϨʔϒͰ όΠφϦϩάΛग़ྗ͠ Ϛελʔঢ֨Մೳʹ
ɹɹεϨʔϒͷͦͷଞͷ࡞ۀ ⾣NZDOGΛຊ൪ʹ߹ΘͤΔ ⾣NZTRM࠶ىಈ ⾣ϦετΞରͷ ɹɹɹσʔλϕʔεআɾ࠶࡞
ɹϨϓϦέʔγϣϯखॱ ⾣ϚελʔͷEVNQΛऔಘ ⾣εϨʔϒͷNZDOGઃఆ ⾣εϨʔϒʹϦετΞ ⾣εϨʔϒઃఆมߋ ⾣ϨϓϦέʔγϣϯ࣮ߦ ⾣࣮ߦঢ়گΛࢹ
ɹɹεϨʔϒʹϦετΞ ⾣ϦετΞ࣮ߦ ɾετϨʔδ༰ྔʹҙʂ ɹɹˠαΠζେ͖ΊͷόΠφϦϩά͕ ɹɹɹɹͲΜͲΜͰ͖ͯ༰ྔΛѹഭ $ zcat mamy1326.dump.gz | mysql
-u root -p mamy1326
ɹɹεϨʔϒʹϦετΞ ⾣ϦετΞ࣮ߦ ɾετϨʔδ༰ྔʹҙʂ ɹɹˠαΠζେ͖ΊͷόΠφϦϩά͕ ɹɹɹɹͲΜͲΜͰ͖ͯ༰ྔΛѹഭ $ zcat mamy1326.dump.gz | mysql
-u root -p mamy1326 163(&."45&3-0(450 bNZTRMCJOYYYYYY` దʹύʔδ͠·͠ΐ͏
ɹϨϓϦέʔγϣϯखॱ ⾣ϚελʔͷEVNQΛऔಘ ⾣εϨʔϒͷNZDOGઃఆ ⾣εϨʔϒʹϦετΞ ⾣εϨʔϒઃఆมߋ ⾣ϨϓϦέʔγϣϯ࣮ߦ ⾣࣮ߦঢ়گΛࢹ
ɹεϨʔϒઃఆมߋ ⾣ϚελʔͰϝϞͨ͠༰Λઃఆ mysql> STOP SLAVE; mysql> RESET SLAVE; mysql> CHANGE
MASTER TO -> master_log_file = ’mysql-bin.000075’, -> master_log_pos = 588201136;
mysql> STOP SLAVE; mysql> RESET SLAVE; mysql> CHANGE MASTER TO
-> master_log_file = ’mysql-bin.000075’, -> master_log_pos = 588201136; ɹεϨʔϒઃఆมߋ ⾣ϚελʔͰϝϞͨ͠༰Λઃఆ εϨʔϒΛࢭΊ·͢
mysql> STOP SLAVE; mysql> RESET SLAVE; mysql> CHANGE MASTER TO
-> master_log_file = ’mysql-bin.000075’, -> master_log_pos = 588201136; ɹεϨʔϒઃఆมߋ ⾣ϚελʔͰϝϞͨ͠༰Λઃఆ εϨʔϒ͕อ͍࣋ͯͨ͠ ϨϓϦέʔγϣϯҐஔΛ Ϧηοτ͠·͢
mysql> STOP SLAVE; mysql> RESET SLAVE; mysql> CHANGE MASTER TO
-> master_log_file = ’mysql-bin.000075’, -> master_log_pos = 588201136; ɹεϨʔϒઃఆมߋ ⾣ϚελʔͰϝϞͨ͠༰Λઃఆ ϚελʔͷόΠφϦϩάɺ ϙδγϣϯΛઃఆ
ɹϨϓϦέʔγϣϯखॱ ⾣ϚελʔͷEVNQΛऔಘ ⾣εϨʔϒͷNZDOGઃఆ ⾣εϨʔϒʹϦετΞ ⾣εϨʔϒઃఆมߋ ⾣ϨϓϦέʔγϣϯ࣮ߦ ⾣࣮ߦঢ়گΛࢹ
ɹϨϓϦέʔγϣϯ࣮ߦ ⾣ϨϓϦέʔγϣϯͷ։࢝ mysql> START SLAVE; ઃఆͨ͠ϙδγϣϯ͔Β ಉظ͕࣮ߦ͞Ε·͢
ɹϨϓϦέʔγϣϯ࣮ߦ ⾣ϨϓϦέʔγϣϯͷ֬ೝ mysql> SHOW SLAVE STATUS\G ***************** 1. row *****************
Slave_IO_State: Waiting for master to send event Master_Log_File: mysql-bin.000075 Read_Master_Log_Pos: 878873047 Slave_IO_Running: Yes Slave_SQL_Running: Yes Exec_Master_Log_Pos: 605504154 Seconds_Behind_Master: 244615 Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Master_Server_Id: 1001
ɹϨϓϦέʔγϣϯͷ֬ೝ ⾣4MBWF@*0@4UBUFɿ 8BJUJOHGPSNBTUFSUPTFOEFWFOU εϨʔϒͷݱࡏͷεςʔλε ϨϓϦέʔγϣϯ͕։࢝͞Ε Ϛελʔ͔ΒͷΠϕϯτͪ
ɹϨϓϦέʔγϣϯͷ֬ೝ ⾣.BTUFS@-PH@'JMFɿ NZTRMCJO ϚελʔͷόΠφϦϩάϑΝΠϧ ݱࡏϚελͰߋ৽͞Ε͍ͯΔ ϑΝΠϧ໊ʹͳ͍ͬͯΔ
ɹϨϓϦέʔγϣϯͷ֬ೝ ⾣
[email protected]
@-PH@1PTɿ ϚελʔͷόΠφϦϩά͔Β *0εϨου͕ಡΈऔͬͨҐஔ ˞42-࣮ߦ͞ΕͨͱݶΒͳ͍
ɹϨϓϦέʔγϣϯͷ֬ೝ ⾣&
[email protected]
@-PH@1PTɿ *0εϨου͕ಡΈࠐΜͩϩά͔Β 42-εϨου͕ ࣮ߦͨ͠ΫΤϦͷҐஔ
ɹϨϓϦέʔγϣϯͷ֬ೝ ⾣4FDPOET@#
[email protected]
ɿ εϨʔϒ͕Ϛελʔʹൺ Ԇ͍ͯ͠Δඵ
ɹϨϓϦέʔγϣϯͷ֬ೝ ⾣4MBWF@*0@3VOOJOHɿ:&4 ϚελʔͷόΠφϦϩάΛ औಘͰ͖͍ͯΔ
ɹϨϓϦέʔγϣϯͷ֬ೝ ⾣4MBWF@42-@3VOOJOHɿ:&4 औಘͨ͠όΠφϦϩάͷ 42-࣮ߦͰ͖͍ͯΔ
ɹϨϓϦέʔγϣϯखॱ ⾣ϚελʔͷEVNQΛऔಘ ⾣εϨʔϒͷNZDOGઃఆ ⾣εϨʔϒʹϦετΞ ⾣εϨʔϒઃఆมߋ ⾣ϨϓϦέʔγϣϯ࣮ߦ ⾣࣮ߦঢ়گΛࢹ
ɹ࣮ߦঢ়گΛࢹ mysql> SHOW SLAVE STATUS\G **************** 1. row ************** Read_Master_Log_Pos:
878873047 Exec_Master_Log_Pos: 605504154 Seconds_Behind_Master: 244615 ⾣࣮ߦޙ
ɹ࣮ߦঢ়گΛࢹ mysql> SHOW SLAVE STATUS\G **************** 1. row ************** Read_Master_Log_Pos:
878873047 Exec_Master_Log_Pos: 605504154 Seconds_Behind_Master: 244615 ⾣࣮ߦޙ mysql> SHOW SLAVE STATUS\G **************** 1. row ************** Read_Master_Log_Pos: 879066686 Exec_Master_Log_Pos: 879066686 Seconds_Behind_Master: 0 ⾣ಉظྃ
ɹϨϓϦέʔγϣϯ·ͱΊ ⾣ෳ࡞ɾӡ༻ྃʂ ⾣ࢀরܥͷαʔόʔ४උྃʂ ⾣όοΫΞοϓαʔόʔ࡞ྃ
ৼΓฦΓ
શମͷৼΓฦΓ ⾣NZDOGઃఆ ຊདྷͷύϑΥʔϚϯεΛಘͨ ⾣ΫΤϦΩϟογϡଌఆ ܧଓࢹͷେࣄ͞Λͬͨ ⾣ϨϓϦέʔγϣϯ࣮ࢪ Խͷ४උ͕Ͱ͖ͨ
՝
ࠓޙͷ՝ ⾣ܧଓࢹͷΈ ֤छγΣϧͰରԠத ⾣ࢀরܥΛεϨʔϒʹ ϓϩάϥϜվमઃܭத ⾣ෆཁϨίʔυͷআ ϩάܥ ஈ֊Λ౿ΜͰআܭըத
Τϐϩʔά
ઃఆ͔ͨ͠Β ऴΘΓͰͳ͍
Πϯϑϥ ϥΠϑαΠΫϧ͕͍
ʑͷࢹɾܭଌ͔Β ઌखΛଧͭʂ
ܧଓྗͳΓ
ࠓҰ൪ ͔͑ͨͬͨ͜ͱ
Πϯϑϥʹಓʹೖ͔ͬͨΓ ਖ਼ܟԕͯ͠·ͨ͠
ͻΐΜͳ͜ͱ͔Βೖͬͨಓ͕ ࠓָͯ͘͠ํ͕ͳ͍ʂ
΄ͱΜͲ1)1ॻ͍ͯͳ͍͠ ॻ͍ͯγΣϧ
WJN͔͠Θͳ͍ͷͰ ຖࠇ͍ը໘
͔͠͠ʂ
ਂ͘ߟ͑ ͭͣͭௐͯ ө͢Δ
ܭଌͯ݁͠ՌΛௐ ࣍ͷखΛଧͭ
࡞ۀϩάΛ ϚʔΫμϯͰશͯه
ΤϯτϦʔʹ͢Δͱ͖ શ෦ௐ͢
ϩʔΧϧʹڥߏஙΛ ΧδϡΞϧʹ͍ͯ͠Δ
Ξτϓοτ ָ͍͠ʂʂʂʂ
ָ͍͠ʂʂʂʂ
ΞϓϦΤϯδχΞ͔ͩΒͬͯ ΠϯϑϥΛ ଞਓͤʹ͠ͳ͍
ΞϓϦΤϯδχΞ͔ͩΒͬͯ ϑϩϯτΤϯυΛ ଞਓͤʹ͠ͳ͍
ੈքΛ͛Δ͜ͱ ΤϯδχΞਓੜͷ͕Γ Λҙຯ͢Δ
Βͳ͍ΑΓ Δ΄͏ָ͕͍͠ʂ
ੈքΛ͛ͯ ͜Ε͔Β ָ͍͠ΤϯδχΞϥΠϑΛʂ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
͓·͚ ⾣ݩهࣄͷ͝հ ɾ.Z42-ύϑΥʔϚϯενϡʔχϯά ɹɹNZDOGͷݟ͠ ɹIUUQRJJUBDPNNBNZJUFNTDFBFFDD⒎B ɾ.Z42-ύϑΥʔϚϯενϡʔχϯά ɹɹΫΤϦΩϟογϡద༻ঢ়گͷ֬ೝ ɹIUUQRJJUBDPNNBNZJUFNTEEDGB ɾ.Z42-ϨϓϦέʔγϣϯઃఆ ɹɹखॱɾ֤छεςʔλεͷৄࡉͱτϥϒϧγϡʔςΟϯά
ɹIUUQRJJUBDPNNBNZJUFNTBFEGBCGE