Submit Search
Upload
障害にならないためのMySQL運用
•
4 likes
•
2,010 views
Junya Shimazu
Follow
属人化しがちなMySQLの障害対策について、これまでやってきたことをまとめてみた。
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 51
Download Now
Download to read offline
Recommended
ドメイン駆動設計 at DDD.rb #5
ドメイン駆動設計 at DDD.rb #5
啓 杉本
ソフトウェア開発と業務開発とアジャイルとWF
ソフトウェア開発と業務開発とアジャイルとWF
啓 杉本
ドメイン駆動設計の実践例 - 経営管理基盤 fusion_place -
ドメイン駆動設計の実践例 - 経営管理基盤 fusion_place -
啓 杉本
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
ドメイン駆動設計 ~ユーザー、モデル、エンジニアの新たな関係~
啓 杉本
ドメイン特化プラットフォームによる業務システム開発体制の変革
ドメイン特化プラットフォームによる業務システム開発体制の変革
啓 杉本
財管一致について~財務会計と管理会計の関係性~
財管一致について~財務会計と管理会計の関係性~
啓 杉本
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
Yii Framework 2.0 いま求められるRAD標準とは #phpkansai
Hisateru Tanaka
20150531 phpcon kansai
20150531 phpcon kansai
kumamidori
More Related Content
What's hot
PHPにないセキュリティ機能
PHPにないセキュリティ機能
Yasuo Ohgaki
JiraとConfluenceのTips集
JiraとConfluenceのTips集
Hiroshi Ohnuki
MyBatis を利用した web application 開発についてのご紹介
MyBatis を利用した web application 開発についてのご紹介
Tokuhiro Matsuno
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
CLARA ONLINE, Inc.
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
Teruo Adachi
ドメイン駆動設計と サーバサイドと私
ドメイン駆動設計と サーバサイドと私
Noriaki Kadota
.NET Lab2022年2月
.NET Lab2022年2月
TomomitsuKusaba
TECH Streetますます機能拡充するPower Automate for desktopの概要と最新情報
TECH Streetますます機能拡充するPower Automate for desktopの概要と最新情報
Yuto Kawabata
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
S Akai
最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと
Noriaki Kadota
How to develop a huge Single Page Application
How to develop a huge Single Page Application
Naoki Yamada
.Netlab202107
.Netlab202107
TomomitsuKusaba
Static Web AppsとBlazor WebAssemblyのすすめ
Static Web AppsとBlazor WebAssemblyのすすめ
TomomitsuKusaba
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
Noriaki Kadota
[社内勉強会]SPAのすすめ
[社内勉強会]SPAのすすめ
hirooooo
ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨
私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました
NHN テコラス株式会社
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
Naoki Yamada
クライアント推し。
クライアント推し。
Akira Fukami
three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現
Kei Yagi
What's hot
(20)
PHPにないセキュリティ機能
PHPにないセキュリティ機能
JiraとConfluenceのTips集
JiraとConfluenceのTips集
MyBatis を利用した web application 開発についてのご紹介
MyBatis を利用した web application 開発についてのご紹介
5分で出来る!イケてるconfluenceページ
5分で出来る!イケてるconfluenceページ
DevOpsが引き金となるインフラエンジニアの進撃
DevOpsが引き金となるインフラエンジニアの進撃
ドメイン駆動設計と サーバサイドと私
ドメイン駆動設計と サーバサイドと私
.NET Lab2022年2月
.NET Lab2022年2月
TECH Streetますます機能拡充するPower Automate for desktopの概要と最新情報
TECH Streetますます機能拡充するPower Automate for desktopの概要と最新情報
遅いクエリと向き合う仕組み #CybozuMeetup
遅いクエリと向き合う仕組み #CybozuMeetup
最近誰かに「やったほうがいいよ」と伝えた7のこと
最近誰かに「やったほうがいいよ」と伝えた7のこと
How to develop a huge Single Page Application
How to develop a huge Single Page Application
.Netlab202107
.Netlab202107
Static Web AppsとBlazor WebAssemblyのすすめ
Static Web AppsとBlazor WebAssemblyのすすめ
中の下のエンジニアを脱出するための仕事術
中の下のエンジニアを脱出するための仕事術
[社内勉強会]SPAのすすめ
[社内勉強会]SPAのすすめ
ドメイン駆動設計入門
ドメイン駆動設計入門
私はこうやってSlackを社内で流行らせました
私はこうやってSlackを社内で流行らせました
我が家のフロントエンド開発事情
我が家のフロントエンド開発事情
クライアント推し。
クライアント推し。
three.jsによる一歩進めたグラフィカルな表現
three.jsによる一歩進めたグラフィカルな表現
Viewers also liked
インフラエンジニアとして普段心がけていること
インフラエンジニアとして普段心がけていること
Shohei Koyama
MySQLの運用でありがちなこと
MySQLの運用でありがちなこと
Hiroaki Sano
Antennae Issue41
Antennae Issue41
Gemma Brooks
Change Lessons Learned - Implementing a Kanban System for Enterprise Agility
Change Lessons Learned - Implementing a Kanban System for Enterprise Agility
Shoaib Shaukat
Search Engine Marketing
Search Engine Marketing
Pedro Vilas Boas
Administrative and public law seminar
Administrative and public law seminar
Browne Jacobson LLP
Basketnet.gr: Online Media Kit
Basketnet.gr: Online Media Kit
Spyros Langkos
Rilis Survei Opinion Leader LSI-Majalah Indonesia 2014 Nov2012
Rilis Survei Opinion Leader LSI-Majalah Indonesia 2014 Nov2012
joaquimrohi
ARAZI IKT: Museum 2.0 and social media
ARAZI IKT: Museum 2.0 and social media
Arazi IKT S.L.
الثورةالمصرية بعيون غربية
الثورةالمصرية بعيون غربية
Madiha Mamdouh
Well Planned is Half Done: Planning Projects in the Digitization World
Well Planned is Half Done: Planning Projects in the Digitization World
Florida State University
Grafico diario del dax perfomance index para el 10 10-2012
Grafico diario del dax perfomance index para el 10 10-2012
Experiencia Trading
公眾發聲與媒體
公眾發聲與媒體
lalacamp07
Anaerobic respiration system solo
Anaerobic respiration system solo
davidfawcett27
David's Medical Assistant Certificate June 2007
David's Medical Assistant Certificate June 2007
David Ogletree
Slideshare prueba
Slideshare prueba
Arazi IKT S.L.
gemiusAdMonitor_RO_4Q2010
gemiusAdMonitor_RO_4Q2010
Gemius
Thinking of A Drastic Weight Loss?
Thinking of A Drastic Weight Loss?
meetmanuel
5 новых Digital трендов на 2016 год!
5 новых Digital трендов на 2016 год!
Dibar_agency
Pólipos gastrointestinales
Pólipos gastrointestinales
Mercedes Calleja
Viewers also liked
(20)
インフラエンジニアとして普段心がけていること
インフラエンジニアとして普段心がけていること
MySQLの運用でありがちなこと
MySQLの運用でありがちなこと
Antennae Issue41
Antennae Issue41
Change Lessons Learned - Implementing a Kanban System for Enterprise Agility
Change Lessons Learned - Implementing a Kanban System for Enterprise Agility
Search Engine Marketing
Search Engine Marketing
Administrative and public law seminar
Administrative and public law seminar
Basketnet.gr: Online Media Kit
Basketnet.gr: Online Media Kit
Rilis Survei Opinion Leader LSI-Majalah Indonesia 2014 Nov2012
Rilis Survei Opinion Leader LSI-Majalah Indonesia 2014 Nov2012
ARAZI IKT: Museum 2.0 and social media
ARAZI IKT: Museum 2.0 and social media
الثورةالمصرية بعيون غربية
الثورةالمصرية بعيون غربية
Well Planned is Half Done: Planning Projects in the Digitization World
Well Planned is Half Done: Planning Projects in the Digitization World
Grafico diario del dax perfomance index para el 10 10-2012
Grafico diario del dax perfomance index para el 10 10-2012
公眾發聲與媒體
公眾發聲與媒體
Anaerobic respiration system solo
Anaerobic respiration system solo
David's Medical Assistant Certificate June 2007
David's Medical Assistant Certificate June 2007
Slideshare prueba
Slideshare prueba
gemiusAdMonitor_RO_4Q2010
gemiusAdMonitor_RO_4Q2010
Thinking of A Drastic Weight Loss?
Thinking of A Drastic Weight Loss?
5 новых Digital трендов на 2016 год!
5 новых Digital трендов на 2016 год!
Pólipos gastrointestinales
Pólipos gastrointestinales
Similar to 障害にならないためのMySQL運用
My First Monitoring With Mackerel
My First Monitoring With Mackerel
Koichi Ota
#cclweb 【vol.4】 アクセス解析体得セミナー ~成功・失敗事例を通じて学ぶアクセス解析。ライブ解析もやります!~
#cclweb 【vol.4】 アクセス解析体得セミナー ~成功・失敗事例を通じて学ぶアクセス解析。ライブ解析もやります!~
Creator's Career Lounge(CCL)運営事務局
最速で価値を提供する
最速で価値を提供する
LIFULL Co., Ltd.
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
Masakazu Muraoka
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
Keiichi Hashimoto
Viewを使って開発を楽にする話
Viewを使って開発を楽にする話
Isamu Watanabe
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
Dai FUJIHARA
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
Rakuten Group, Inc.
サーバーレスの今とこれから
サーバーレスの今とこれから
真吾 吉田
論文紹介@ Gunosyデータマイニング研究会 #97
論文紹介@ Gunosyデータマイニング研究会 #97
圭輔 大曽根
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
Tokuhiro Matsuno
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
Osamu Shimoda
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSS
Takeharu Igari
今なぜサーバーレスなのか
今なぜサーバーレスなのか
真吾 吉田
20140904 One Coin College CMSを使いこなすスキル
20140904 One Coin College CMSを使いこなすスキル
tetsuo morikawa
データファースト開発
データファースト開発
Katsunori Kanda
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
Yusuke Wada
One step of first to a cloud
One step of first to a cloud
uchimanajet7
開発レビューで心がけていること
開発レビューで心がけていること
Masato Kataoka
あなたはどのタイプがお好き? イケメンHtml5系男子 ゲットのしかた
あなたはどのタイプがお好き? イケメンHtml5系男子 ゲットのしかた
Masakazu Muraoka
Similar to 障害にならないためのMySQL運用
(20)
My First Monitoring With Mackerel
My First Monitoring With Mackerel
#cclweb 【vol.4】 アクセス解析体得セミナー ~成功・失敗事例を通じて学ぶアクセス解析。ライブ解析もやります!~
#cclweb 【vol.4】 アクセス解析体得セミナー ~成功・失敗事例を通じて学ぶアクセス解析。ライブ解析もやります!~
最速で価値を提供する
最速で価値を提供する
Rdbms起点で考えると見えない世界 okuyama勉強会
Rdbms起点で考えると見えない世界 okuyama勉強会
現場開発者視点で答えるWindows Azure
現場開発者視点で答えるWindows Azure
Viewを使って開発を楽にする話
Viewを使って開発を楽にする話
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
地図を捨ててコンパスを頼りに進め
サーバーレスの今とこれから
サーバーレスの今とこれから
論文紹介@ Gunosyデータマイニング研究会 #97
論文紹介@ Gunosyデータマイニング研究会 #97
Lineにおけるspring frameworkの活用
Lineにおけるspring frameworkの活用
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
第3回企業Webシステム開発セミナー「業務システムにHTML5を上手に取り入れるためには?」
ブラウザにやさしいHTML/CSS
ブラウザにやさしいHTML/CSS
今なぜサーバーレスなのか
今なぜサーバーレスなのか
20140904 One Coin College CMSを使いこなすスキル
20140904 One Coin College CMSを使いこなすスキル
データファースト開発
データファースト開発
「新しい」を生み出すためのWebアプリ開発とその周辺
「新しい」を生み出すためのWebアプリ開発とその周辺
One step of first to a cloud
One step of first to a cloud
開発レビューで心がけていること
開発レビューで心がけていること
あなたはどのタイプがお好き? イケメンHtml5系男子 ゲットのしかた
あなたはどのタイプがお好き? イケメンHtml5系男子 ゲットのしかた
障害にならないためのMySQL運用
1.
障害にならないためにどうするか 障害になったらどうするか 2015. 04. 21
ビアバッシュLT @ DMM.com Labo
2.
島津 純哉 • 北海道札幌市生まれ •
金沢大学 → DMM.comラボ • サーバーサイドエンジニア(フロントも少し兼任) • 好きなマンガ 孤独のグルメ
3.
2013年9月サービスイン 1年半運用に携わってきました
4.
ブラウザでも動きます アプリはほぼWebView フロントエンド HTML + CSS
+ Javascript サーバーサイド PHP + MySQL + Apache + CentOS
5.
運用でやってきたこと • 新機能、イベント追加作成 • カスタマーサポート対応 •
システムリファクタリング • ユーザー動向の分析 • パフォーマンスチューニング • 障害対策・対応 • etc…
6.
運用でやってきたこと • 新機能、イベント追加作成 • カスタマーサポート対応 •
システムリファクタリング • ユーザー動向の分析 • パフォーマンスチューニング • 障害対策・対応 ← 今日のお話 • etc…
7.
̶̶̶ 障害対応ってどんなことしてるの?
8.
実際に起こった障害 • DBまわりのトラブル • ミドルウェアレベルのトラブル •
ハードウェアレベルのトラブル • DDOS攻撃 • 連携先APIでのトラブル
9.
DDOS 1% ハードウェアレベルのトラブル 4% ミドルウェアレベルのトラブル 4% APIトラブル 14% DBトラブル 78%
10.
DDOS 3% ハードウェアレベルのトラブル 3% ミドルウェアレベルのトラブル 3% APIトラブル 14% DBトラブル 78% ほとんどDBまわりのトラブル …ということで、本日はDBに着目したお話です
11.
DBにおけるトラブル クエリの遅延 ハードウェアの性能限界
12.
DBにおけるトラブル クエリの遅延 → 多かった ハードウェアの性能限界
→ ほとんどなかった
13.
いつ起こるの? • 今じゃない • ユーザーのアクセスが増えてきたとき •
参照するデータ件数が増えてきたとき
14.
クエリ遅延を防ぐためにしていた3つのこと 1. 安全なクエリをつくる 2. スロークエリの監視 3.
スケーラブルな設計
15.
クエリ遅延を防ぐためにしていた3つのこと 1. 安全なクエリをつくる 2. スロークエリの監視 3.
スケーラブルな設計
16.
1. 安全なクエリをつくる • EXPLAIN
しながらインデックスを最適化 • ひと手間かけてテスト環境でダミーデータを用意 するのが大事 • データの増え方、アクセス頻度まで考える
17.
type ALL, indexは危険 key NULLは危険 rows 件数がやたら多いのは危険 Explainで見てすぐわかる危険なクエリ
18.
1. 安全なクエリをつくる 2. スロークエリの監視 3.
スケーラブルな設計 クエリ遅延を防ぐためにしていた3つのこと
19.
2.スロークエリの監視 • 1秒以上かかったクエリを記録 • 基本的に発生しないようにする •
発生したらすぐ直す (分析用のクエリで発生するものは例外としていた)
20.
監視ツール Munin
22.
遅延発生時 平常時
23.
1. 安全なクエリをつくる 2. スロークエリの監視 3.
スケーラブルな設計 クエリ遅延を防ぐためにしていた3つのこと
24.
3. スケーラブルな設計 負荷に合わせて増設できるようにしておく
25.
3. スケーラブルな設計 master slave 参照のみ書き込み
& 参照 レプリケーション
26.
3. スケーラブルな設計 master slave master
slave UserDB (ユーザーデータ) CommonDB (それ以外のデータ) 垂直分割
27.
3. スケーラブルな設計 master slave master
slave UserDB-1 (user_id % 2 = 0のユーザーデータ) CommonDB master slave UserDB-2 (user_id % 2 = 1のユーザーデータ) 水平分割 (sharding)
28.
3. スケーラブルな設計 • ユーザーデータは水平分割したDBにもつ •
参照の増加に合わせてslaveを増やす • 更新の増加に合わせてさらにUserDBを水平分割
29.
̶̶ 障害が起こったらどうするの?
30.
障害になったら起こること • サービスの遅延 • サーバーアラート発生 •
カスタマーサポート
31.
DBの障害対応とは 遅延のトリガーになっている クエリを探すこと
32.
クエリ遅延を見つけるためにしていた3つのこと 1. アラート・Muninの確認 2. スロークエリのログファイルを見る 3.
プロセスリストを見る
33.
クエリ遅延を見つけるためにしていた3つのこと 1. アラート・Muninの確認 2. スロークエリのログファイルを見る 3.
プロセスリストを見る
34.
1. アラート, Munin確認 発生した時間、対象のサーバーを知る
35.
遅延発生時 平常時
36.
クエリ遅延を見つけるためにしていた3つのこと 1. アラート・Muninの確認 2. スロークエリのログファイルを見る 3.
プロセスリストを見る
38.
多すぎてよくわからない/(^o^)\
39.
生のログはわかりにくいので mysqldumpslow(コマンド) を使って見やすく
41.
・ ・ ・ ※(簡単のため以下略)
42.
実行時間(平均)実行回数 対象のクエリ
43.
実行時間(平均)実行回数 対象のクエリ わかりやすくなった\(^o^)/ 遅い順, 件数順などソートもできます
44.
クエリ遅延を見つけるためにしていた3つのこと 1. アラート・Muninの確認 2. スロークエリのログファイルを見る 3.
プロセスリストを見る
45.
3. プロセスリストを見る • mysql
> show full processlist; • 実行中のクエリをすべて表示するコマンド
46.
滞留しているクエリに問題はないか?調べる DBの性能限界の場合もあるので その場合はスケールを検討
47.
原因が特定できたら(根本的対策) case1. プログラム(クエリ)をその場で修正 case2. テーブルのインデックス最適化 (要メンテナンス、件数によっては時間がかかるので注意) case3.
サーバーの増設・増強 (データセンターだと難しいが、クラウドなら)
48.
原因が特定できたら(暫定的対策) case1. 問題箇所の機能だけ停止してサービス再開 case2. 一部ユーザーをアクセス制限して負荷軽減 case3.
そのまま様子見で収束を待つ (ピーク終了が見込めるとき) …以上の対策をしたのちに根本的対策を行う。
49.
ざっくりまとめ 障害を防ぐのも、障害になったときも まずはスロークエリに着目するのが大事
50.
ご静聴ありがとうございました
51.
細かくまとめ DB障害にならないために • EXPLAINしながらインデックスの最適化 • 監視のポイントはslow
query • 設計はスケーラブルに DB障害になったら • slow query ログファイルの確認 • show processlist
Download Now