Your SlideShare is downloading. ×
Mysql4.0から5.6にした話
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Mysql4.0から5.6にした話

180
views

Published on

発表資料です

発表資料です

Published in: Technology

0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
180
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. MySQLを4.0から5.0を 経由して5.6へバージョ ンアップした話 @mapyo
  • 2. 自己紹介 ● カラーミーショップのソフトウェアエンジニア ● 入社2年4ヶ月くらい ● みんなからは「ぼいらー」と呼ばれています ● ぺちぱー(PHPer)です
  • 3. 今日話すこと 1. 規模感・メンバー 2. 一度5.0を経由した理由 3. 5.0にするまでにやったこと 4. 本番を5.0、5.6にしていった時の流れ 5. 注意すべき事 6. まとめ ※ぺちぱーとして話すのでmysqlのチューニングとかダンプ、リ ストアする時のテクニック的な話は出て来ません!
  • 4. 規模感 ● slaveの台数10台くらい ● mysqlの容量600G ● DBを見ているロールの数7個以上 ● 素のSQLが散りばめられている ● 同じチームのソフトウェアエンジニア5〜6人くら い ● 全部終わったのが1年弱くらい
  • 5. メンバー ● ぺちぱー(僕) ● インフラ周りめっちゃすごい人(途中でシニアエ ンジニアに。) アドバイザー的なポジション ● @hsbt(チーフエンジニア) ● ボブさん
  • 6. 今日話すこと 1. 規模感・メンバー 2. 一度5.0を経由した理由 3. 5.0にするまでにやったこと 4. 本番を5.0、5.6にしていった時の流れ 5. 注意すべき事 6. まとめ ※ぺちぱーとして話すのでmysqlのチューニングとかダンプ、リ ストアする時のテクニック的な話は出て来ません!
  • 7. 一度5.0を経由した理由 ● 4.0から一気に5.6に移行するとなにか起きた時 の影響が大きそう。 ● mysql4.0→mysql5.6へ直接レプリケーションが 出来ませんでした。 master 4.0 この辺、どういう流れでバージョンアップしていくかは後で詳しく説明 します。 slave 5.6 master 4.0 slave 5.0 slave 5.6
  • 8. 今日話すこと 1. 規模感・メンバー 2. 一度5.0を経由した理由 3. 5.0にするまでにやったこと 4. 本番を5.0、5.6にしていった時の流れ 5. 注意すべき事 6. まとめ ※ぺちぱーとして話すのでmysqlのチューニングとかダンプ、リ ストアする時のテクニック的な話は出て来ません!
  • 9. 5.0にするまでにやった事 ● 5.6の開発環境を作る ● 開発環境の4.0のデータを5.6に突っ込む ● 開発環境で4.0(今までのDBと)5.6を簡単に切 り替えられる仕組み作り ● その他開発環境の整備 ● 5.6で開発してもらうように布教する ● テスト、修正 ● 不要レコードの削除
  • 10. 開発環境の4.0データを5.6に突っ込む ● sedスクリプトをかます cat dump.sql | sed -e 's/timestamp(14)/timestamp/' | sed -e 's/TYPE=/ENGINE=/' > dump5.sql
  • 11. 5.6で開発してもらうように布教 メリット ● 4.0では動くが、5.6では動かないクエリがこれ以 上増えない ● 現状、5.6で動かないクエリがあったら教えても らえる。(^^♪
  • 12. テスト ● デキるテスターの人にお願い☆ その間僕は。。 ● 修正が必要なsqlを調べる ● ググる ● 分かった修正箇所の横展開
  • 13. 修正する 1. 直さなきゃいけない部分がみつかる 2. 直す(4.0でも5.6でも動くように) 3. 他の開発メンバーにこういうパターン注意してく ださいリストを作ってお知らせ 全部で5パターンくらい
  • 14. 不要なレコードの削除 ● とあるテーブルの容量が200Gくらい!! ● ダンプ、リストアの時間大。 古いレコードが消せそうだったので消した。 150Gくらい減った。。。
  • 15. 今日話すこと 1. 規模感・メンバー 2. 一度5.0を経由した理由 3. 5.0にするまでにやったこと 4. 本番を5.0、5.6にしていった時の流れ 5. 注意すべき事 6. まとめ ※ぺちぱーとして話すのでmysqlのチューニングとかダンプ、リ ストアする時のテクニック的な話は出て来ません!
  • 16. 本番を5.0化していった時の流れ1 Step1 mysql5.0をmasterからのレプリケーションに設定 ※appサーバからは見ない。 INSERT,UPDATEが 5.0でエラーにならないかをチェッ ク可能 slave 4.0 master 4.0 slave 4.0 slave 5.0 app
  • 17. 本番を5.0化していった時の流れ2 Step2 mysql5.0をslaveに設定 ※appサーバから見るようにする! slave 4.0 master 4.0 slave 4.0 slave 5.0 SELECTが5.0でエラーに ならないか? NewRelicが活躍! app
  • 18. ※僕が作業したのは 1と4だけです(*´‫)●`ڡ‬ ※slaveを見ているロールは 5つくらい ※1マラソン終わるのに2〜3日くらい 本番を5.0化していった時の流れ3 Step3 slave全台を5.0にしていく slave 5.0 master 4.0 slave 5.0 slave 5.0 以下のマラソン×10回くらい。。 1. slave1台をappサーバから外す 2. 5.0にリストア 3. masterからレプリケーション 4. appサーバから見るように app
  • 19. 本番を5.0化していった時の流れ3 Step4 メンテを入れてslave1台をmasterに昇格! slave 5.0 master 4.0 slave 5.0 slave 5.0 メンテ終わった後は何事もなかった かのように動いてたぜ! ※masterしか見ていないロールもあるので、多 少不安はあった。 ここまでで約半年くらい。。 slave 5.0 master 5.0 slave 5.0 master 4.0
  • 20. 本番を5.6化していった時の流れ そして、5.6に! 今までの作業をもう1週やる。。。 1. 5.6をレプリケーションにつなげる 2. appサーバから見るようにして様子見 3. slave全台を5.6にする。 4. メンテを入れてslaveをmasterに昇格 ※性能のいいサーバを購入したので slaveの台数を減らせた! ※僕のやった作業は appサーバの接続先切り替えとメンテの作業くらい。。
  • 21. 今日話すこと 1. 規模感・メンバー 2. 一度5.0を経由した理由 3. 5.0にするまでにやったこと 4. 本番を5.0、5.6にしていった時の流れ 5. 注意すべき事 6. まとめ ※ぺちぱーとして話すのでmysqlのチューニングとかダンプ、リ ストアする時のテクニック的な話は出て来ません!
  • 22. 注意すべき事! 移行途中にmasterに直接SQLを流す時は、 最新バージョンでかならず検証する! slave 4.0 master 4.0 slave 5.0 slave 5.0 4.0→OK, 5.0→エラーのSQL 1. masterでは成功 2. slaveでエラー発生! 3. レプリケーションが止まる! 4. ヤバイ!!
  • 23. まとめ 〜5.6にするまでにやった事〜 1. 開発環境を用意して、テストする 2. 開発メンバーに周知する 3. Slaveから5.0にしていって、Masterを昇格させ る 4. 上の作業を、5.6にする為にもう1回やる 5. 終わり!
  • 24. 所感1 ● 期間が長かった ○ 修正パターンが見つかる→全ロールでgrepして、後は 目視確認して修正箇所を見つける ○ slaveの1台バージョンアップするのに数日。 ● インフラ周りめっちゃすごい人はすごかった。 ○ 本番データのダンプ、リストアの検証(※600G) ○ 5.0、5.6サーバを構築しまくっていた(slave10台) ○ 細かい設定値まわりとかいろいろ
  • 25. 所感2 ● デキるテスターの人がいた ○ 安心感 ○ バグが出そうな部分を熟知 ● やれる事はやった。後はバグが出たら全力で直 すという心意気が大事。 ○ ホントに大丈夫なのか?という不安 ○ メンテ終了後、大規模な障害が起きたら怖い! ○ 気持ちを切り替えて、前を向く!
  • 26. 最後に どういうsqlを修正したか?は 僕のブログをご覧下さい。 http://goo.gl/YXeozS
  • 27. 以上です!!