Submit Search
データベース勉強会 In 広島 mongodb
12 likes
2,761 views
Ryuji Tamagawa
MongoDBの概要と、特にレプリカセットの耐障害性の話です。
Software
Read more
1 of 44
Download now
Downloaded 12 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
More Related Content
What's hot
(20)
PDF
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
PPTX
Node.js×mongo dbで3年間サービス運用してみた話
leverages_event
PPTX
MongoDB World 2014に行ってきた!
Tetsutaro Watanabe
PPT
[大図解]ピグライフはこう動いている
Akihiro Kuwano
PPT
ザ・ドキュメント~うまくいかないNoSQL~
Akihiro Kuwano
PDF
Node js 入門
Satoshi Takami
PDF
サーバーのおしごと
Yugo Shimizu
PPT
mongoDB: OSC Tokyo2010 spring
ichikaway
PDF
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
PDF
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
Shunsuke Watanabe
PDF
サーバサイドNodeの使い道
pospome
PDF
Hello, Node.js
Shin Sekaryo
PDF
MongoDB very basic (Japanese) / MongoDB基礎の基礎
Naruhiko Ogasawara
PDF
さいきんの InnoDB Adaptive Flushing (仮)
Takanori Sejima
PPTX
AngularJS2でつまづいたこと
Takehiro Takahashi
PDF
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
PDF
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
PDF
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
PPT
Node.js で Web アプリ開発
Tatsumi Naganuma
PDF
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
Db tech showcase2015 how to replicate between clusters
Hiroaki Kubota
Node.js×mongo dbで3年間サービス運用してみた話
leverages_event
MongoDB World 2014に行ってきた!
Tetsutaro Watanabe
[大図解]ピグライフはこう動いている
Akihiro Kuwano
ザ・ドキュメント~うまくいかないNoSQL~
Akihiro Kuwano
Node js 入門
Satoshi Takami
サーバーのおしごと
Yugo Shimizu
mongoDB: OSC Tokyo2010 spring
ichikaway
Node.jsでサーバプログラマ デビューしよう
Yuusuke Takeuchi
大阪Node学園 七時限目 「ゼロからはじめるnode.js」
Shunsuke Watanabe
サーバサイドNodeの使い道
pospome
Hello, Node.js
Shin Sekaryo
MongoDB very basic (Japanese) / MongoDB基礎の基礎
Naruhiko Ogasawara
さいきんの InnoDB Adaptive Flushing (仮)
Takanori Sejima
AngularJS2でつまづいたこと
Takehiro Takahashi
PHP+MySQLを使ったスケーラブルなソーシャルゲーム開発
infinite_loop
サーバー未経験者がソーシャルゲームを通して知ったサーバーの事
Manabu Koga
大規模ソーシャルゲーム開発から学んだPHP&MySQL実践テクニック
infinite_loop
Node.js で Web アプリ開発
Tatsumi Naganuma
Node.js を選ぶとき 選ばないとき
Ryunosuke SATO
Similar to データベース勉強会 In 広島 mongodb
(20)
PDF
Mongo dbを知ろう devlove関西
Ryuji Tamagawa
PPT
MongoDB
あしたのオープンソース研究所
PDF
MongoDBざっくり解説
知教 本間
PPT
Mongodb
Satoru Mikami
DOC
20110301 Mongo Tokyo
Kenichi Masuda
DOC
20110302 Mongo Tokyo
Kenichi Masuda
PDF
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
Akihiro Kuwano
PDF
はじめてのMongoDB
Keisuke Izumiya
PDF
MongoDBのアレをアレする
Akihiro Kuwano
PPTX
Mongo db world 2018
Creationline,inc.
PDF
CasualなMongoDBのサービス運用Tips
Naoki Sega
PDF
CyberAgentにおけるMongoDB
Akihiro Kuwano
PDF
業務システムにおけるMongoDB活用法
Yoshitaka Mori
PDF
Mongodb 紹介
Ryo Matsumura
PPTX
比べてみよう リレーショナル vs ドキュメント.pptx
MariMurotani
PDF
MongoDB勉強会資料
Hiromune Shishido
PDF
MongoDB概要:金融業界でのMongoDB
ippei_suzuki
PPTX
Mongo dbを知ろう
CROOZ, inc.
PDF
何を基準に選定すべきなのか!? 〜ビッグデータ×IoT×AI時代のデータベースのアーキテクチャとメカニズムの比較〜
griddb
PDF
20120831 mongoid
Takeshi AKIMA
Mongo dbを知ろう devlove関西
Ryuji Tamagawa
MongoDB
あしたのオープンソース研究所
MongoDBざっくり解説
知教 本間
Mongodb
Satoru Mikami
20110301 Mongo Tokyo
Kenichi Masuda
20110302 Mongo Tokyo
Kenichi Masuda
大規模化するピグライフを支えるインフラ ~MongoDBとChefについて~ (前編)
Akihiro Kuwano
はじめてのMongoDB
Keisuke Izumiya
MongoDBのアレをアレする
Akihiro Kuwano
Mongo db world 2018
Creationline,inc.
CasualなMongoDBのサービス運用Tips
Naoki Sega
CyberAgentにおけるMongoDB
Akihiro Kuwano
業務システムにおけるMongoDB活用法
Yoshitaka Mori
Mongodb 紹介
Ryo Matsumura
比べてみよう リレーショナル vs ドキュメント.pptx
MariMurotani
MongoDB勉強会資料
Hiromune Shishido
MongoDB概要:金融業界でのMongoDB
ippei_suzuki
Mongo dbを知ろう
CROOZ, inc.
何を基準に選定すべきなのか!? 〜ビッグデータ×IoT×AI時代のデータベースのアーキテクチャとメカニズムの比較〜
griddb
20120831 mongoid
Takeshi AKIMA
Ad
More from Ryuji Tamagawa
(20)
PDF
20171012 found IT #9 PySparkの勘所
Ryuji Tamagawa
PDF
20170927 pydata tokyo データサイエンスな皆様に送る分散処理の基礎の基礎、そしてPySparkの勘所
Ryuji Tamagawa
PPTX
hbstudy 74 Site Reliability Engineering
Ryuji Tamagawa
PDF
PySparkの勘所(20170630 sapporo db analytics showcase)
Ryuji Tamagawa
PDF
20170210 sapporotechbar7
Ryuji Tamagawa
PDF
20161215 python pandas-spark四方山話
Ryuji Tamagawa
PDF
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
Ryuji Tamagawa
PDF
20160708 データ処理のプラットフォームとしてのpython 札幌
Ryuji Tamagawa
PDF
20160127三木会 RDB経験者のためのspark
Ryuji Tamagawa
PDF
20151205 Japan.R SparkRとParquet
Ryuji Tamagawa
PDF
Performant data processing with PySpark, SparkR and DataFrame API
Ryuji Tamagawa
PDF
Apache Sparkの紹介
Ryuji Tamagawa
PDF
足を地に着け落ち着いて考える
Ryuji Tamagawa
PDF
ヘルシープログラマ・翻訳と実践
Ryuji Tamagawa
PDF
Google Big Query
Ryuji Tamagawa
PDF
BigQueryの課金、節約しませんか
Ryuji Tamagawa
PDF
You might be paying too much for BigQuery
Ryuji Tamagawa
PDF
Google BigQueryについて 紹介と推測
Ryuji Tamagawa
PDF
lessons learned from talking at rakuten technology conference
Ryuji Tamagawa
PDF
丸の内MongoDB勉強会#20LT 2.8のストレージエンジン動かしてみました
Ryuji Tamagawa
20171012 found IT #9 PySparkの勘所
Ryuji Tamagawa
20170927 pydata tokyo データサイエンスな皆様に送る分散処理の基礎の基礎、そしてPySparkの勘所
Ryuji Tamagawa
hbstudy 74 Site Reliability Engineering
Ryuji Tamagawa
PySparkの勘所(20170630 sapporo db analytics showcase)
Ryuji Tamagawa
20170210 sapporotechbar7
Ryuji Tamagawa
20161215 python pandas-spark四方山話
Ryuji Tamagawa
20161004 データ処理のプラットフォームとしてのpythonとpandas 東京
Ryuji Tamagawa
20160708 データ処理のプラットフォームとしてのpython 札幌
Ryuji Tamagawa
20160127三木会 RDB経験者のためのspark
Ryuji Tamagawa
20151205 Japan.R SparkRとParquet
Ryuji Tamagawa
Performant data processing with PySpark, SparkR and DataFrame API
Ryuji Tamagawa
Apache Sparkの紹介
Ryuji Tamagawa
足を地に着け落ち着いて考える
Ryuji Tamagawa
ヘルシープログラマ・翻訳と実践
Ryuji Tamagawa
Google Big Query
Ryuji Tamagawa
BigQueryの課金、節約しませんか
Ryuji Tamagawa
You might be paying too much for BigQuery
Ryuji Tamagawa
Google BigQueryについて 紹介と推測
Ryuji Tamagawa
lessons learned from talking at rakuten technology conference
Ryuji Tamagawa
丸の内MongoDB勉強会#20LT 2.8のストレージエンジン動かしてみました
Ryuji Tamagawa
Ad
データベース勉強会 In 広島 mongodb
1.
MongoDBの特徴と トラブルシューティング @第5回
中国地方DB勉強会 in 広島 ! 玉川竜司@大阪
2.
自己紹介 • 玉川竜司
• FB: Ryuji Tamagawa • Twitter: @tamagawa_ryuji • 本業ソフト開発(Sky株式会社) • 兼業翻訳者(ほぼオライリー)
3.
What’s New &
Next
4.
今日のお題は MongoDB
5.
MongoDBのいいところ • 一言で言うなら「お手軽」 - いい意味で
• Webアプリケーションで求められる機能が手っ取り早く使える • 多目的の高性能「オートマ車」 • インストーラやパッケージですぐ動きます • セカンダリインデックスやクエリオプティマイザがある • 多くの言語で、仕様がある程度統一されているドライバが利用可能
6.
MEANスタック • JSONでバックエンドからフロントエンドまで統一
• MongoDB、Express、AngularJS、Node.js • 昨日のOSCでも取りあげられていたようです
7.
エコシステムの形成 • 世界的に見れば、NoSQLデータベースとしては最もメジャーな存在になっ
てきた → 周辺が充実してきている • クラウド上で実績多数。MongoHQなど、as a serviceでも提供されてい る • GUIツールも増えてきました • MMS(http://www.mongodb.com/mongodb-management-service) - バックアップ、運用管理などを行ってくれる本家のクラウドサービス
8.
ただし • 集計は(今のところ)ちょっと苦手 - とはいえ改善中
• (ほんとの)ビッグデータはちょっと難しいかも • 基本的に、オンメモリでいけるかどうかが問題 • そういえば、でかいメモリのインスタンス、AWSでもAzureで もさくらでも増えましたね・・・
9.
RDBとの違い • 物理構造の違い
• 論理構造の違い • トレードオフの柔軟性 • レプリカセット • シャーディング
10.
物理構造の違い RDB MongoDB
物理メモリ物理メモリ DBエンジンが管理する メモリバッファ サイズを 指定できる データファイル メモリにマップされた ファイルの内容 サイズを 指定できない データファイル (メモリマップドファイル)
11.
物理構造の違い(2) • とにかく、「ホット」なデータが物理メモリに収まるかが肝心
• RDBほど細かなメモリのチューニングはできない • データが大きいなら、RAMを増やすか、シャーディングでスケール アウト
12.
論理構造の違い RDB MongoDB
{ _id: new ObjectId(""), slug: "gardening-tools", ancestors: [{ name: "Home", _id: new ObjectId(""), slug: "home" }, { name: "Outdoors", _id: new ObjectId(“"), slug: "outdoors" } ], }
13.
論理構造の違い(2) • スキーマの自由度は高い(特に変更に強い)
• ドキュメントを超えたアトミック性はない • 設計上のトレードオフが生じる • 一つのドキュメントで閉じない場合はIDで参照 • そうなると、処理をプログラムで書く必要が出てくる
14.
トレードオフの柔軟性 RDB MongoDB
書いたら 必ず 永続化 書き込み結果は 必ず確認 書き込み保証 する?しない? しなけりゃ高速 WAL使う? いくつのレプリ カへ書けたら成功 したことにする?
15.
トレードオフの柔軟性(2) • 書き込みの確実性とパフォーマンスはトレードオフ
• 大量のログの記録などでは、多少こぼれるリスクを抱えてもコストダウ ンしたいこともある • 逆に、データセンター間で複製できていることを保証したいこともある • 書き込み保証(Write Concern)、WAL、レプリカへの書き込み、タ ギングなどで、多彩な調整が可能
16.
レプリカセットとシャーディングについて • これらについては、「技術的には」RDBとの対立概念ではない
• ただし、商用RDBではコストが跳ね上がる(ですよね?)機能 • MongoDBでは最初から組み込まれて、非常にお手軽 & 便利 • 大まかには • 読み込みのパフォーマンスと耐障害性を向上させるのがレプリカセット • 書き込みのパフォーマンスを向上させるのがシャーディング
17.
レプリカセット Repreca-Master Client-App
Driver Repreca-Slave Repreca-Slave 書込 複製 読取 oploogplog oplog oplog
18.
oplogについて • Capped
Collection : 追記のみ、古いデー タが自動的に削除される • oplog : データベースの更新処理を時系 列で記録するcapped collection • プライマリのoplogをセカンダリのoplog が追いかけることでレプリケーションを 行う Primary Secondary Secondary
19.
レプリカセット Repreca-Master Client-App
Driver Repreca-Slave Repreca-Slave 書込 複製 読取 oploogplog oplog oplog
20.
レプリカセット(マスター交代) Repreca-Master Repreca-Master
Repreca-Slave 書込 複製 Client-App Driver 読取 oploogplog opolopglog oploogplog
21.
障害発生時のoplog • 交代したプライマリと生きているセ
カンダリのoplogは先へ進んでいく ! • 停止中の元プライマリのoplogはも ちろん止まったまま 元Primary (停止中) 現Primary Secondary
22.
レプリカセット(リカバリ中) Repreca-Slave (リカバリ中)
Repreca-Master Repreca-Slave 書込 複製 Client-App Driver 読取 ! 追いつくまで複製 もしくはフルコピー opolopglog opolopglog
23.
障害回復時のoplog(1) • 回復したセカンダリが、現プラ
イマリのoplogを見て追いつい ていく Secondary 現Primary Secondary
24.
障害回復時のoplog(2) • 障害が長く続き、現プライマリの
oplogと回復したセカンダリのoplog がオーバーラップしなくなってしまっ た場合 • 仕方ないので自動的にfull syncに移 行する • こうなると時間も負荷もかかるので、 oplogの期間設定やファイルベースの バックアップ間隔は重要 Secondary 現Primary Secondary
25.
レプリカセット(リカバリ後) Repreca-Slave Repreca-Master
Repreca-Slave 書込 複製 Client-App Driver 読取 ! 複製oopplologg opolpolgog opolpolgog
26.
レプリカセット(バックアップのコストダウン) Repreca-Master (インデックスあり)
Client-App Driver Repreca-Slave (インデックスあり) Repreca-Slave (バックアップ) 書込 複製 読取 バックアップ用のインスタン スにはインデックスを付けず、 非力なマシンで済ませる
27.
レプリカセット (誤操作、バグ対策) Repreca-Master
(インデックスあり) Client-App Driver Repreca-Slave (インデックスあり) 指定した時間遅らせて複製。 誤操作によるデータ消去 などの対策 Repreca-Slave (バックアップ) 書込 複製 読取 Repreca-Slave (delayed)
28.
レプリカセット(DC間での分散) Repreca-Master 複製
Client-App Driver Repreca-Slave Repreca-Slave 書込 読取 DC-1 DC-2
29.
レプリカセットのまとめ • 読み取り負荷の分散
• 耐障害性 • 自動フェイルオーバー & リカバリ • 多彩なトレードオフ
30.
シャーディング • 書き込み負荷を1/nに
• メモリ量をn倍に • パフォーマンスは上がる •障害は起きやすくなる →レプリカセットと併用 Client-App Driver mongos mongod for あかさたな mongod for はまやらわ
31.
やっと バックアップとリストアの話 注)今回、ユーザー認証とかロールの話は、
時間ないのであえてすっ飛ばします
32.
ここ参照 • P.288~
• 基本的になるのは2つの方法 • データベースファイル+ジャーナ ルファイルを直接バックアップ・ リストア • ツールを使ってダンプ・リストア
33.
特徴的なこと • そもそもトランザクションが(ほとんど)ないので、
大きなトランザクションのロールフォワードを考える 必要がない→楽ちん(実はアプリとのトレードオフな わけですが) • レプリカセットは重要
34.
公式ドキュメントのシナリオ • ファイルシステムのスナップショットによるバックアップとリストア
• バックアップからのレプリカセットのリストア • MongoDBのツールを使ったバックアップとリストア • シャードクラスタのバックアップとリストア • 予想外のシャットダウンからのデータリカバリ
35.
ファイルシステムのスナップショットに よるバックアップとリストア •
普通にデータベースファイルをバックアップ/リストアするのと同じ。 • ただし、OSのスナップショット機能を前提として考えた方がよさそう • メインのデータがあるディスクでジャーナリングしている場合、わりと単純 • ジャーナリングをしていない場合、あるいはジャーナルが別ディスクの場合 • db.fsyncLock()でファイルの整合性を保障(ただしバグっているらしい…) • レプリカセットのセカンダリを使うという手もある
36.
バックアップからのレプリカセットのリストア • 想定されるシナリオ:
• 初期データセットの実働環境のレプリカセットへの展開 • バックアップデータセットからのレプリカセット再構築 • まずレプリカセットのプライマリにバックアップデータをリストア • データが少なければ、そこから空のセカンダリへ同期 • データが多ければ、セカンダリにセカンダリのバックアップをリストアして同期
37.
MongoDBのツールを使ったバックアッ プとリストア •
mongodumpとmongorestore • ドキュメントレベルでのリストアになるので、インデックスは再構 築になる → 時間かかるので要注意
38.
シャードクラスタのバックアップとリストア • 小規模なシャードクラスタ(根本的に矛盾してますが)なら、普通にツールでバッ
クアップ/リストア • 通常は、シャード毎にバックアップ/リストアを行うことになる(難易度アップ) • ただし、シャードの境界は動的に変わるので、そこの対処はケースバイケース • 出て行ったドキュメントは無視してOK • バックアップ→リストアの間に当該シャードに入ってきたドキュメントがあっ た場合は、「どうにかして」対処が必要
39.
予想外のシャットダウンからのデータ リカバリ •
ジャーナリング無効 & 単独インスタンスで、クリーンにシャットダ ウンされなかった場合、データファイルの破損の可能性があるので、 リペアの手順を踏むこと • シリアスな運用であれば、ジャーナリングを有効にするか、レプリ カセットを使うべきです
40.
改善継続中 - 2.6以降について少し
• 最新バージョンは2.6系 • aggregation framework - サイズの制約の緩和 • Write protocolの改善 - レイテンシの低減 • Index Intersection - 複数インデクスの同時活用のはず… • 2.8/3.0はかなり大規模なアップデートになる模様
41.
まとめ
42.
今日話したこと • 運用についてはドキュメントをきっちり読見ましょう
• この本に基本は書かれています。概要把握にどうぞ。 • 電子書籍もあります。 • http://www.oreilly.co.jp/books/ 9784873115900/ • そのほかにもMongoDB関連の電子書籍があるの で、オライリージャパンのサイトで検索を。
43.
それはともかく • 簡単に始められて
• かなり深く使うこともできます • ただし落とし穴もあります →コミュニティへどうぞ! http://www.mongodb.jp • まずは手を動かしてみましょう! • レプリカセットをお手軽に試せます: • https://bitbucket.org/tamagawa_ryuji/mongodb_replicaset_playground_on_vagrant
44.
ご清聴ありがとうございました。
Download