Slide 1

Slide 1 text

MySQL΁ͷҠߦΛࢧ͑Δٕज़ 13೥10݄25೔༵ۚ೔

Slide 2

Slide 2 text

Yudai @nekogeruge_987 WEBܥاۀۈ຿ DB(RDBMS, NoSQL) Ruby Chef Fluentd https://github.com/onigra 13೥10݄25೔༵ۚ೔

Slide 3

Slide 3 text

ࠓ೥ͷ݄̍ʹ IBM DB2͔Β MySQL5.5ʹ Ҡߦͨ͠࿩Λ͠·͢ 13೥10݄25೔༵ۚ೔

Slide 4

Slide 4 text

ن໛ײ 13೥10݄25೔༵ۚ೔

Slide 5

Slide 5 text

all෺ཧ εΩʔϚ਺ 13 ςʔϒϧ਺ 330 ૯Ϩίʔυ਺ 321,906,470 1ςʔϒϧ͋ͨΓͷϨίʔυ਺ 975,474 Ұ൪Ϩίʔυ͕ଟ͍ςʔϒϧ 18,054,990 13೥ӡ༻͞ΕͯΔ جװγεςϜɺαʔϏεܥDB܈ JavaɺPHPɺVB6ͱ͔… euc-jp -> utf-8 13೥10݄25೔༵ۚ೔

Slide 6

Slide 6 text

݁Ռɺ΢ϯԯԁͷ ܦඅൃੜΛ્ࢭ 13೥10݄25೔༵ۚ೔

Slide 7

Slide 7 text

۩ମతͳ ࡞ۀ಺༰ 13೥10݄25೔༵ۚ೔

Slide 8

Slide 8 text

• DB2ͷϨίʔυΛCSVΤΫεϙʔτ • MySQL΁LOAD INFILE • /var/lib/mysql Λslaveͷαʔό΁Ҡͯ͠෮ݩʢColdBackupʣ • ϨϓϦέʔγϣϯઃఆ • FederatedΤϯδϯΛ࢖༻͢ΔಛघͳϨϓϦέʔγϣϯͷߏங (MySQL -> DB2 ͷϨϓϦέʔγϣϯΛ͢Δඞཁ͕͋ͬͨͨΊ) • ͜ΕΒΛShellScript(bash)ͷόονͰߦ͏ 13೥10݄25೔༵ۚ೔

Slide 9

Slide 9 text

Time Limit 4࣌ؒ ※ΦϑϥΠϯϝϯς8࣌ؒͷ͏ͪ લ൒4࣌ؒͰ׬ྃ͢Δඞཁ͕͋Δ 13೥10݄25೔༵ۚ೔

Slide 10

Slide 10 text

ରࡦ 13೥10݄25೔༵ۚ೔

Slide 11

Slide 11 text

1. LOAD࣌ؒͷ୹ॖΛਤΔ 13೥10݄25೔༵ۚ೔

Slide 12

Slide 12 text

•Bulk Insert < LOAD INFILE < Cold Backup •Slow-logɺBin-log ͳͲࢭΊΕΔϩά͸ࢭΊΔ •INDEXΛDROP -> LOAD -> INDEXషΔ (ςʔϒϧʹΑΓૣ͔ͬͨΓɺషͬͨ··ͱ ͦΜͳʹ͕ࠩແ͔ͬͨΓ) • csvετϨʔδΤϯδϯΛ࢖͏ͱͪΐͬͺ΍Β͍͚͠Ͳ͏ ·͍͔͘ͳ͔ͬͨʢ΍Γ͔ͨѱ͔ͬͨͷ͔΋ʣ 13೥10݄25೔༵ۚ೔

Slide 13

Slide 13 text

͜ͷล͸άάͬͨΒ ׂͱग़ͯ͘Δ͕ɺ શମͷ࡞ۀͰݟΔͱ େ͖ͳ୹ॖʹ͸ ͳΒͳ͔ͬͨ 13೥10݄25೔༵ۚ೔

Slide 14

Slide 14 text

2.δϣϒϑϩʔͷ࠷దԽ ʢJenkinsͷ׆༻ʣ 13೥10݄25೔༵ۚ೔

Slide 15

Slide 15 text

13೥10݄25೔༵ۚ೔

Slide 16

Slide 16 text

Jenkins Build Flow Plugin https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin 13೥10݄25೔༵ۚ೔

Slide 17

Slide 17 text

Build Pipeline Plugin͕ڧྗʹͳͬͨײ͡ Job FlowΛGroovyͰॻ͚Δ ฒྻ࣮ߦ(Parallel) ϦτϥΠ(Retry) ྫ֎ͷัଊ(guard / rescue) ͳͲͷػೳΛඋ͍͑ͯΔ 13೥10݄25೔༵ۚ೔

Slide 18

Slide 18 text

࠷্Ґ parallel ( { build(“order” ) }, { build(“user”) }, { build(“master”) } ) user build (“export”) build (“rsync”) build (“load”) build (“mysqld stop”) build (“rsync”) parallel ( { build(“master mysqld start”) }, { build(“slave mysqld start”) } ) 13೥10݄25೔༵ۚ೔

Slide 19

Slide 19 text

ͪͳΈʹɺ͜ͷҊ݅ͷޙ Tivoliͱ͔JP1ͱ͔஌Γ·ͨ͠ ·ͩۀքྺͰݴ͏ͱएखͳΜͰ… 13೥10݄25೔༵ۚ೔

Slide 20

Slide 20 text

σʔλҠߦΛCI͢ΔΑ͏ͳײ͡Ͱ ຖ೔·Θ͢ ࠷ऴతʹ1ΫϦοΫͰҠߦ͕׬ྃ͢ΔBuild FlowΛ࡞੒ ↓ ͦΕΛຖ೔࣮ߦ͠ɺԿճ΋੒ޭͤ͞Δ ↓ Ҡߦຊ൪ʹର͢Δڪා৺Λແ͘͢ 13೥10݄25೔༵ۚ೔

Slide 21

Slide 21 text

̍ΫϦοΫσʔλҠߦ ʙ͍ͭ·ͰखͰDBҠߦͯ͠ΔΜͰ͔͢ʁʙ ※ @ryuzee͞ΜͷΦϚʔδϡͰ͢ http://www.slideshare.net/Ryuzee/devsumia 13೥10݄25೔༵ۚ೔

Slide 22

Slide 22 text

׬શࣗಈԽ΋Ͱ͖͔ͨ΋ ۃ୺ͳ࿩ɺ࡞ۀऀ͕͍ͳ͍ʢԿ΋͠ͳ͍ʣ σʔλҠߦ΋Ͱ͖Δؾ͕͢Δ 13೥10݄25೔༵ۚ೔

Slide 23

Slide 23 text

༨ஊ δϣϒεέδϡʔϥʔͷΦʔϓϯιʔειϑτ΢ΣΞͬͯΠέͯΔͷແ͍ΜͰ͔͢Ͷʁ δϣϒεέδϡʔϥʔͬͯΤϯλʔϓϥΠζք۾Ͱॏๅ͞Εͯͦ͏͔ͩΒ WEBͷਓୡڵຯແ͍ʁ DWHͱ͔݁ߏ࢖͏ͱࢥ͏ΜͰ͚͢Ͳ jobschedulerͳΔάάϥϏϦςΟͷ௿͍Φʔϓϯιʔεͷιϑτ΢ΣΞ΋͚͋ͬͨͲɺ ৘ใগͳ͍ 13೥10݄25೔༵ۚ೔

Slide 24

Slide 24 text

͜ΕͰ΋·ͩؒʹ߹Θͳ͍ 13೥10݄25೔༵ۚ೔

Slide 25

Slide 25 text

3. σʔλసૹ࣌ؒͷ୹ॖ (Cold Backup) 13೥10݄25೔༵ۚ೔

Slide 26

Slide 26 text

/var/lib/mysql ഑ԼͷશϑΝΠϧΛ ฒྻͰrsync͢Δ http://qiita.com/nekogeruge_987/ items/ed1bd8704b25b1f509ec 13೥10݄25೔༵ۚ೔

Slide 27

Slide 27 text

஫ҙ఺ σΟϨΫτϦߏ଄Λઌʹίϐʔઌʹίϐʔ͓͔ͯ͠ͳ͍ͱrsync͕͚͜Δ ωοτϫʔΫͷଳҬͷଠ͞ʹґଘ͍ͯ͠ΔͷͰɺଳҬ͕ڱ͍ͱ͋·ΓޮՌ͕ແ͍ ϑΝΠϧ਺ͷϓϩηεΛىಈ͢ΔͨΊɺ100ສݸϑΝΠϧ͕͋Δͱ100ສϓϩηε͕ͨͪ͋Δ ׬ྃޙʹී௨ͷrsyncΛ࣮ߦ͠ɺࠩ෼͕ແ͍͔ΛνΣοΫ͢Δͱϕλʔ 13೥10݄25೔༵ۚ೔

Slide 28

Slide 28 text

1࣌ؒఔ͔͔ͬͯͨͷ͕ 20෼ఔͰ׬ྃ͢ΔΑ͏ʹ ͳΓ·ͨ͠ 13೥10݄25೔༵ۚ೔

Slide 29

Slide 29 text

൪֎ɿࠓࢥ͏ͱ΍Γ͔ͨͬͨ͜ͱ ShellScripͷUnitTestΛॻ͘ 13೥10݄25೔༵ۚ೔

Slide 30

Slide 30 text

౰࣌ShellScript΄΅ॻ͍ͨࣄແ͍ ͍ͭͰʹςετ΋ॻ͍ͨࣄແ͍ ࣄલͷҠߦͰ࢖ΘΕͯͨίʔυΛ࢖͍ճ͢ ࣌ؒ΋ແ͔ͬͨͷͰແઅૢʹScript͕૿͍͑ͯ͘ ࠓ͸shunit2ͱ͍͏ShellScriptͷTestingFrameworkͰςετॻ͍ͯΔ https://speakerdeck.com/yudaisuzuki/shell-script-testing-framework-shunit2 13೥10݄25೔༵ۚ೔

Slide 31

Slide 31 text

Thanks!! https://twitter.com/nekogeruge_987 http://onigra.github.io/ 13೥10݄25೔༵ۚ೔