Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Hisashi HATAKEYAMA
11,643 views
MySQL Casual な生活
Technology
◦
Read more
20
Save
Share
Embed
Embed presentation
1
/ 43
2
/ 43
3
/ 43
4
/ 43
5
/ 43
6
/ 43
7
/ 43
8
/ 43
9
/ 43
10
/ 43
11
/ 43
12
/ 43
13
/ 43
14
/ 43
15
/ 43
16
/ 43
17
/ 43
18
/ 43
19
/ 43
20
/ 43
21
/ 43
22
/ 43
23
/ 43
24
/ 43
25
/ 43
26
/ 43
27
/ 43
28
/ 43
29
/ 43
30
/ 43
31
/ 43
32
/ 43
33
/ 43
34
/ 43
35
/ 43
36
/ 43
37
/ 43
38
/ 43
39
/ 43
40
/ 43
41
/ 43
42
/ 43
43
/ 43
Recommended
PDF
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
by
Amazon Web Services Japan
PDF
CDP キャンペーンサイト編 UPDATE
by
Hiroyasu Suzuki
PDF
HBase at LINE
by
Shun Nakamura
PDF
20141106_cwt-zenmyo-naito
by
cyberagent
PDF
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
by
Insight Technology, Inc.
PDF
12 cyberagent
by
cyberagent
PDF
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
by
Couchbase Japan KK
PDF
Couchbase meetup20140925
by
ktoda
PDF
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
by
Akira Shimosako
PDF
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
by
Akira Shimosako
PDF
Webアプリケーションの パフォーマンス向上のコツ 概要編
by
Masahiro Nagano
PDF
Dsas周りのお話
by
KLab株式会社
PDF
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
by
Amazon Web Services Japan
PDF
ROMA のアーキテクチャと社内事例
by
Rakuten Group, Inc.
PDF
Couchbase server入門
by
Yusuke Komatsu
PPTX
Organizational and strategic analysis of GOOGLE
by
Divya Lakshme
PDF
製品品質向上のための開発本部の取り組み
by
Cybozucommunity
PPTX
導入に困っているあなたに贈る スクラム導入コミュニケーション術
by
Kouki Kawagoi
PDF
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
by
POStudy
PDF
[RSGT2017] つらい問題に出会ったら
by
Takahiro Kaihara
PDF
市場価値で給料が決まるサイボウズの社員だけど、転職ドラフトに参加して給与交渉に挑戦してみました
by
Yusuke Amano
PDF
形態素解析
by
Works Applications
PPTX
WalB: Real-time and Incremental Backup System for Block Devices
by
uchan_nos
PDF
3000社の業務データ絞り込みを支える技術
by
Ryo Mitoma
PDF
小さく始める大規模スクラム
by
Keisuke Tsukagoshi
PDF
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
by
Teppei Sato
PDF
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
by
Jumpei Miyata
PDF
缶詰屋さんの課題解決にスクラムを使ってみた
by
Toshiyuki Ohtomo
PDF
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
PDF
Kubernetes in 30 minutes (2017/03/10)
by
lestrrat
More Related Content
PDF
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
by
Amazon Web Services Japan
PDF
CDP キャンペーンサイト編 UPDATE
by
Hiroyasu Suzuki
PDF
HBase at LINE
by
Shun Nakamura
PDF
20141106_cwt-zenmyo-naito
by
cyberagent
PDF
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
by
Insight Technology, Inc.
PDF
12 cyberagent
by
cyberagent
PDF
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
by
Couchbase Japan KK
PDF
Couchbase meetup20140925
by
ktoda
[AWS Summit 2012] クラウドデザインパターン#7 CDP キャンペーンサイト編 (Wordpress)
by
Amazon Web Services Japan
CDP キャンペーンサイト編 UPDATE
by
Hiroyasu Suzuki
HBase at LINE
by
Shun Nakamura
20141106_cwt-zenmyo-naito
by
cyberagent
[INSIGHT OUT 2011] B27 SQL Anywhereの先進のセルフヒーリング技術について(glenn paulley)
by
Insight Technology, Inc.
12 cyberagent
by
cyberagent
今日から使えるCouchbaseシステムアーキテクチャデザインパターン集
by
Couchbase Japan KK
Couchbase meetup20140925
by
ktoda
What's hot
PDF
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
by
Akira Shimosako
PDF
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
by
Akira Shimosako
PDF
Webアプリケーションの パフォーマンス向上のコツ 概要編
by
Masahiro Nagano
PDF
Dsas周りのお話
by
KLab株式会社
PDF
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
by
Amazon Web Services Japan
PDF
ROMA のアーキテクチャと社内事例
by
Rakuten Group, Inc.
PDF
Couchbase server入門
by
Yusuke Komatsu
CLUB DB2 第122回 DB2管理本の著者が教える 簡単運用管理入門
by
Akira Shimosako
CLUB DB2 第137回:基礎から再入門!DB2モニタリング入門
by
Akira Shimosako
Webアプリケーションの パフォーマンス向上のコツ 概要編
by
Masahiro Nagano
Dsas周りのお話
by
KLab株式会社
[AWSマイスターシリーズ]Amazon Elastic Load Balancing (ELB)
by
Amazon Web Services Japan
ROMA のアーキテクチャと社内事例
by
Rakuten Group, Inc.
Couchbase server入門
by
Yusuke Komatsu
Viewers also liked
PPTX
Organizational and strategic analysis of GOOGLE
by
Divya Lakshme
PDF
製品品質向上のための開発本部の取り組み
by
Cybozucommunity
PPTX
導入に困っているあなたに贈る スクラム導入コミュニケーション術
by
Kouki Kawagoi
PDF
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
by
POStudy
PDF
[RSGT2017] つらい問題に出会ったら
by
Takahiro Kaihara
PDF
市場価値で給料が決まるサイボウズの社員だけど、転職ドラフトに参加して給与交渉に挑戦してみました
by
Yusuke Amano
PDF
形態素解析
by
Works Applications
PPTX
WalB: Real-time and Incremental Backup System for Block Devices
by
uchan_nos
PDF
3000社の業務データ絞り込みを支える技術
by
Ryo Mitoma
PDF
小さく始める大規模スクラム
by
Keisuke Tsukagoshi
PDF
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
by
Teppei Sato
PDF
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
by
Jumpei Miyata
PDF
缶詰屋さんの課題解決にスクラムを使ってみた
by
Toshiyuki Ohtomo
PDF
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
PDF
Kubernetes in 30 minutes (2017/03/10)
by
lestrrat
PDF
Atlassian Summit US 2017 #augj
by
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
PDF
Kubernetesにまつわるエトセトラ(主に苦労話)
by
Works Applications
PPTX
アジャイルメトリクス実践ガイド
by
Hiroyuki Ito
Organizational and strategic analysis of GOOGLE
by
Divya Lakshme
製品品質向上のための開発本部の取り組み
by
Cybozucommunity
導入に困っているあなたに贈る スクラム導入コミュニケーション術
by
Kouki Kawagoi
なんたって”DevQA” アジャイル開発とQAの合体が改善を生む - 永田 敦 氏 #postudy
by
POStudy
[RSGT2017] つらい問題に出会ったら
by
Takahiro Kaihara
市場価値で給料が決まるサイボウズの社員だけど、転職ドラフトに参加して給与交渉に挑戦してみました
by
Yusuke Amano
形態素解析
by
Works Applications
WalB: Real-time and Incremental Backup System for Block Devices
by
uchan_nos
3000社の業務データ絞り込みを支える技術
by
Ryo Mitoma
小さく始める大規模スクラム
by
Keisuke Tsukagoshi
離れた場所でも最高のチームワークを実現する方法 ーサイボウズ開発チームのリモートワーク事例ー
by
Teppei Sato
Jenkins 2.0 最新事情 〜Make Jenkins Great Again〜
by
Jumpei Miyata
缶詰屋さんの課題解決にスクラムを使ってみた
by
Toshiyuki Ohtomo
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
Kubernetes in 30 minutes (2017/03/10)
by
lestrrat
Atlassian Summit US 2017 #augj
by
グロースエクスパートナーズ株式会社/Growth xPartners Incorporated.
Kubernetesにまつわるエトセトラ(主に苦労話)
by
Works Applications
アジャイルメトリクス実践ガイド
by
Hiroyuki Ito
Similar to MySQL Casual な生活
KEY
My sql casual_in_fukuoka_vol1
by
Makoto Haruyama
PDF
MySQL 5.6新機能解説@dbtechshowcase2012
by
Mikiya Okuno
KEY
1台から500台までのMySQL運用(YAPC::Asia編)
by
Masahiro Nagano
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
PDF
PostgreSQL V9 レプリケーション解説
by
Masao Fujii
PDF
Introducing Spider 20101206(DTT#7)
by
Kentoku
PDF
Ajn24
by
Katsuyuki Seino
PDF
Spider DeNA Technology Seminar #2
by
Kentoku
PDF
MySQL ガチBeginnerがやってみたことと反省したこと
by
Satoshi Suzuki
PDF
MySQL 5.5 Update #denatech
by
Mikiya Okuno
PDF
Enter the-dolphine
by
Mikiya Okuno
PDF
Art of MySQL Replication.
by
Mikiya Okuno
PDF
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
by
Naoya Nakazawa
PDF
SQL Azure のシームレスな管理
by
junichi anno
PDF
Heroku Postgres
by
Salesforce Developers Japan
PDF
Heroku Postgres
by
Ayumu Aizawa
PDF
オープニングセッション
by
konekto
PDF
Ajn24
by
Katsuyuki Seino
PDF
PHPで大規模ブラウザゲームを開発してわかったこと
by
Kentaro Matsui
PPT
Online schema change in mysql casual #1(2010/12/11)
by
Naritoshi Hayashi
My sql casual_in_fukuoka_vol1
by
Makoto Haruyama
MySQL 5.6新機能解説@dbtechshowcase2012
by
Mikiya Okuno
1台から500台までのMySQL運用(YAPC::Asia編)
by
Masahiro Nagano
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
by
infinite_loop
PostgreSQL V9 レプリケーション解説
by
Masao Fujii
Introducing Spider 20101206(DTT#7)
by
Kentoku
Ajn24
by
Katsuyuki Seino
Spider DeNA Technology Seminar #2
by
Kentoku
MySQL ガチBeginnerがやってみたことと反省したこと
by
Satoshi Suzuki
MySQL 5.5 Update #denatech
by
Mikiya Okuno
Enter the-dolphine
by
Mikiya Okuno
Art of MySQL Replication.
by
Mikiya Okuno
データセンター移行に伴い、 MySQLをカジュアルにアップグレードしたお話
by
Naoya Nakazawa
SQL Azure のシームレスな管理
by
junichi anno
Heroku Postgres
by
Salesforce Developers Japan
Heroku Postgres
by
Ayumu Aizawa
オープニングセッション
by
konekto
Ajn24
by
Katsuyuki Seino
PHPで大規模ブラウザゲームを開発してわかったこと
by
Kentaro Matsui
Online schema change in mysql casual #1(2010/12/11)
by
Naritoshi Hayashi
MySQL Casual な生活
1.
MySQL Casual な生活
2012/04/19 hatak at MySQL Casual Talks Vol.3
2.
自己紹介• hatak (@hisashi)•
株式会社コロプラ (2010/01-) • 開発からインフラ運用・障害対応まで • 最近はスマフォアプリを少々 • わりと何でもやります• インフラ / Perl な場所に時々います• 写真好きです
3.
アジェンダ• コロプラな話• メンテナンスな話•
チューニングな話• 障害な話
4.
コロプラな話
COLOPL
5.
コロプラ とは• 位置ゲーのプラットフォーム
• 「コロニーな生活」などの モバイル向けゲームを自社運営 • パートナー様へのAPI提供• プラットフォームの規模感(2011年12月現在) • ユーザ数 : 250万人 • 位置登録回数 : 4,300万回/月 • 総PV数 : 37億/月 (パートナー様コンテンツを除く)
6.
全体的な構成• コロプラ(プラットフォーム) •
ユーザ情報 • 課金情報 • 位置情報• コロプラ上に各アプリが存在 • それぞれのサービスとして開発 アプリ アプリ アプリ • コロプラのAPIをJSONで呼び出し• パートナー様のサービスからも利用 COLOPL PF
7.
基本的な構成• サーバ •
自社運用の物理とクラウドを併用 App • CentOS 5.x/6.x INSERT UPDATE SELECT• 開発言語 DERETE • Java/PHP MasterDB LVS• データベース rep lica tion • MySQL CommunityServer 5.1/5.5 • ほぼ InnoDB SlaveDB SlaveDB • master : slave = 1 : n の構成 • LVSでslaveを束ねて利用
8.
MySQL 5.5 使ってます•
本番系DBサーバの7-8割がMySQL 5.5 • InnoDBのパフォーマンス と utf8mb4 が目的 • 5.5.12 (2011/04) 頃から、新規構築 or サーバ交換の際にアップデート • 今のところは大きなトラブルなく運用中• my.cnf の修正を忘れずに my.cnf • 廃止されたオプション -default-character-set = utf8 +character-set-server = utf8 • default-character-set -default_table_type = InnoDB DB +default_storage_engine = Inno • default_table_type • InnoDB Plugin がビルトインのため plugin-load 等の記述が不要 前回(#2)の @oranie さんのLT資料にまとまってました (@oranie++)
9.
そんなカジュアルなお話をさせていただきます
10.
メンテナンスな話
Maintenance
11.
データベースサーバには運用が必要• 長く運用していると様々なメンテナンスが必要となる •
論理な事情(件数の多いインデックス張り替え、スキーマ変更、etc...) • 物理な事情(ディスク故障、筐体交換、etc...)• Slaveの場合はわりと簡単 • 代替サーバを構築して入れ替え• Masterの場合は面倒 • うっかりやると刺さる(処理が詰まってしまう)• でもサービス停止してのメンテナンスは告知などが大変 • 停止させれば作業は楽になるところもあるけど • ゲームバランスや仕様の兼ね合いからも避けたい
12.
オンラインマスタ切り替え方法• マニュアルオペレーションで対応する一つの例です •
メリット:無停止で切り替えられる • デメリット:入れ替え分のサーバ台数が必要• 前提条件 対象DB系統だけでユニークキーが決定できる• 大まかな流れ • 現在のSlaveを基に、新規のMaster&Slaveセットをまるごと準備 • 新SlaveをLVSに入れ、代わりに現Slaveを外す • 現Masterから新Masterに変える
13.
切り替えの流れ• 右図のような構成の場合
App • 更新系:MasterDB INSERT UPDATE SELECT • 参照系:LVS経由でSlaveDBに分散 DELETE MasterDB.cur LVS replication SlaveDB.cur SlaveDB.cur
14.
切り替えの流れ• SlaveDB.curを基にMasterDB.newを構築
App • MasterDB.newにも伝播するように設定 INSERT UPDATE SELECT • log_slave_updates DELETE MasterDB.cur LVS replication MasterDB.new SlaveDB.cur SlaveDB.cur
15.
切り替えの流れ• MasterDB.newの下にSlaveDB.newを構築
App• 新系統は十分にpreloadしておく INSERT UPDATE SELECT DELETE MasterDB.cur LVS replication MasterDB.new SlaveDB.cur SlaveDB.cur replication SlaveDB.new SlaveDB.new
16.
切り替えの流れ• SlaveDB.newをLVSに入れていく
App INSERT UPDATE SELECT DELETE MasterDB.cur LVS replication MasterDB.new SlaveDB.cur SlaveDB.cur replication SlaveDB.new SlaveDB.new
17.
切り替えの流れ• 代わりにSlaveDB.curをLVSから外す
App INSERT UPDATE SELECT DELETE MasterDB.cur LVS replication MasterDB.new SlaveDB.cur SlaveDB.cur replication SlaveDB.new SlaveDB.new
18.
切り替えの流れ• これでSlaveDBの切り替え完了
App• MasterDB.new の auto_increment INSERT 値を少し増やしておく UPDATE SELECT DELETE • 重複を避けるため MasterDB.cur LVS replication MasterDB.new replication SlaveDB.new SlaveDB.new
19.
切り替えの流れ• AppからのMasterDB参照先を変える
App • DNS 設定を書き換えるなど INSERT UPDATE SELECT• MasterDB.curからのレプリケーショ DELETE ンが完全に止まるまで待つ MasterDB.cur LVS replication MasterDB.new replication SlaveDB.new SlaveDB.new
20.
切り替えの流れ• 切り替え完了!
App INSERT UPDATE SELECT DELETE LVS MasterDB.new replication SlaveDB.new SlaveDB.new
21.
preloadとは• 事前に InnoDB
Buffer pool にデータを読み込ませておく作業 • 本番投入直後でも Buffer pool hit rate をあげるため • ディスクI/O が極端に上がることを避ける • 特にMaster切り替えはいきなり本番投入 & しかも切り戻せない• いったん全テーブルのデータを読み込ませる • 全テーブルに対して SELECT * FROM ... でも読み込める • ダミーでINSERTするとbinlogに書かれるのでslaveにも伝播できる mysql> CREATE TABLE _preload LIKE <table_name>; mysql> ALTER TABLE _preload ENGINE = BLACKHOLE; mysql> INSERT INTO _preload SELECT * FROM <table_name>; mysql> DROP TABLE _preload;
22.
より現実に即したpreload• やっぱり本番DBと同じ状況を再現してあげるのが良い •
現実のクエリを受ける方が最適化される• Weightを低めにしてLVSに入れてしまう• 他の本番DBからリレーする • tcpdump + pt-query-digest • 特にMasterからリレーする場合はSELECTだけにするように注意 $ sudo /usr/sbin/tcpdump -i eth0.100 port 3306 -s 65535 - x -n -q -tttt | pt-query-digest --type=tcpdump --no-report -- execute h=server.new -u'hoge' -pfuga --filter='$event- >{fingerprint} =~ m/^select/'
23.
気をつけるところ• 応用すればだいたいのケースには対応できる •
mk-slave-move でSlaveをつなぎ替えるとか • 障害の時でもまずはMasterを切り替えてしまって復旧するとか• ただしエラーになる可能性はある • Master切り替え時に Duplicate Key などのエラーになる可能性はある • Masterを手早く切り替えられるようにしておく必要 • 新旧のMasterに更新クエリが来ている状態は極力短く • トランザクションを意識した作りでないとデータ不整合も起こりうる得る
24.
ちょっと力ずくな感じですみません。。
25.
チューニングな話
Connections
26.
ソーシャル性の強いゲームはちょっと特殊• 人気があればピークタイムのトラフィックもそれなりにある• イベントの終盤などで一気に負荷が高まる瞬間がある•
アプリケーションサーバ / SlaveDB は並列化できる• でも、一番最初に訪れるボトルネックはMasterDB• (本来的には)スキーマや設計含めてアプリ開発者と一緒に考えるべき • でもミドルウェア/インフラ側である程度工面してあげられることもある• カジュアルな対策をいくつかご紹介 • チューニングと呼ぶほどではないかも知れませんが。。。
27.
サーバサイドのチューニング• 個別の設定は各種書籍などでも紹介されているので割愛 •
High Performance MySQL • エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド• my.cnf をひたすら調整 • オンデマンドで運用中に変更できるパラメータも多い • Weightを下げたSlaveで試しに調整するなど
28.
よくある設定箇所• sync_binlog =
0 • ディスクに同期するとやはり遅いので。。• innodb_flush_log_at_trx_commit = 0 [Default: 1] • クラッシュ時の信頼性を犠牲にパフォーマンスを得る設定 • 0 のとき、メンテナンス等で更新クエリが止まったときに 一気にディスクI/Oが発生したりする挙動がありました• innodb_support_xa = 0 [Default: 1] • ディスクへのFlushを減らすため• そのほかもDBの系統ごとに試してみたりしている • サービスによってクエリの傾向が違うので個別に調整が必要
29.
サーバ自体もチューニング• ディスクのマウントオプションを変えてみる •
atime周りやI/Oスケジューラを変えてみるとか • ext4でのライトバリア無効化• メモリを詰めるだけ積む • 自社運用の物理サーバであればメモリを積みまくるのも一つ • 標準的なDBサーバには72GBのものを採用しています • ただし、落とし穴が... • 「空のデータセットにデータが溜まっていくとswapしてしまう事件」 • 続きはLTで...
30.
クライアント(アプリ)サイドのチューニング• DBの負荷に引きずられないような設計にしておくのが第一 •
DBへの問い合わせが最小限となるアプリ設計が理想• アプリケーションコードを修正できるならばいろんな方法がある • memcached などのキャッシュを有効に使う • 遅延が許される更新処理(ログなど)を非同期にする• 例えばライブラリの設定一つでも結構かわる
31.
MySQL Connector/J• Java系サービスではJDBCドライバとして
MySQL Connector/J を利用 • 設定できるプロパティは結構多い• 設定値のプロパティファイルがバンドルされている • ソースを見るとよく分かる ( https://launchpad.net/connectorj ) • maxPerformance, fullDebug などは設定の参考に $ cat maxPerformance.properties ... cachePrepStmts=true cacheCallableStatements=true cacheServerConfiguration=true useLocalSessionState=true elideSetAutoCommits=true alwaysSendSetIsolation=false enableQueryTimeouts=false
32.
プロパティ調整してみた• cacheServerConfiguration [Default:
false] • 接続のたびにサーバ設定を確認する • 系統での設定がそろっているのであればキャッシュして良いはず• 設定してみた • これだけでも劇的に変わって負荷が下がった ちゃんとプロパティ設定しましょう
33.
(本番に影響しない範囲での)試行錯誤大事です
34.
障害な話
Fault
35.
未然に防ぐことは大事• デプロイ時に担当者が異常がないかを見ることは当然 •
でも、デプロイ以外のトリガーのケースも多々ある• 時々巡回したりしてチェック • メトリクス監視(Cacti など)の値の変化 • 負荷をバルクチェックしてみたり (SNMP使う自前スクリプトとか)• アラートが上がったら何かある ステータス監視(Nagios など)からの通知 サービス内掲示板やTwitterに投稿されているユーザさんの声 ユーザサポートからの確認
36.
なにかおかしい?ときのチェック箇所• 何がおきてるか、を把握 •
アプリケーションサーバ • エラーログ • MySQLサーバ • SHOW FULL PROCESSLIST コマンド • slowlog • tcpdump ¦ pt-query-digest でクエリ読む• 何があったか、を把握 • ソースツリー & git log を追っていく AdventCalendar の @riywo さんの記事にまとまってました (@riywo++)
37.
MySQL設定/テーブル定義に起因する障害• RANGE PARTITION
作り忘れ • cron で作るようにしていても、サーバ切り替え時に移行漏れ。。• 切り替え時の接続ユーザ権限修正忘れ • MasterDB/SlaveDB などで権限を変えてるケース• auto_increment 桁あふれ • 設計時、そんなに長く使うとは思っていないことも多々あったりします このような障害は、多くの場合 Nagios 監視などで未然に防げる
38.
サーバに起因する障害• SHOW PROCESSLIST
で見たときに Commit が滞留するなど • ディスクI/Oがボトルネックになってるケースが多い• OSレベルでのエラー検知ができないケースもある • syslogなどにはエラーは見受けられないがパフォーマンスが上がらない • サーバベンダー提供のツールで見るとRAID構成ディスクの障害予兆が。。 • 自動での定期チェック時にパフォーマンス低下してたケース HWレベルでもしっかりとチェックしておく必要がある
39.
アプリケーションに起因する障害• クエリが詰まる
• 適切にインデックスが張られているかチェック • クエリ自体に無理がないか確認 • 元々想定していた以上のデータが蓄積されていることも。。• Sleep が溜まる • アプリケーション側で処理がブロックされている • 挙動がおかしいアプリケーションサーバがあることも 複合的な要因のこともあるので、コード読んだりすることも必要
40.
あくまで一例なので、ケースバイケースです
41.
まとめ
Summary
42.
まとめ• 総移動距離134億キロの位置ゲーはMySQLのおかげで運用できてます• オンラインマスタ切り替えもそんなに難しいことではないです
• 一つの手法として用意していれば、選択の幅は広がる• サービスごとに求められる環境/パフォーマンスは異なります • 「少し変える」ことで「かなり良くなる」こともある • 調べる - 試すの繰り返しでちょっとずつ改善• いろんな視点から考えることが大事だと思ってます • 開発で頑張りきれないところはインフラ・運用からもサポートしてあげる • 障害もいろんなタイプがあるのでアプローチもさまざま • サーバだけでなくてコードやサービスも見ないといけない
43.
ご清聴ありがとうございました!
[8]
ページ先頭
©2009-2025
Movatter.jp