Contenu connexe
Similaire à CasualなMongoDBのサービス運用Tips (20)
CasualなMongoDBのサービス運用Tips
- 2. About me
• 瀬賀 直樹(Twitter: @nsega)
• 株式会社ジークレスト
• @games(アットゲームズ)
アバターコミュニティポータルサイト
http://www.atgames.jp/
• Webエンジニア(主にサーバサイド)
12年7月6日金曜日
- 3. Agenda
• MongoDB、サービスで満1年間運用
• そのときの運用Tipsを紹介
• 惜しまずだしますm(__)m
12年7月6日金曜日
- 4. Use Case
SNS 機能の更新頻度が高いデータの
データストアにMongoDBを利用
• イイネ!などのボタンアクション履歴
• 足あと 履歴
• つぶやきコメント
12年7月6日金曜日
- 5. sharding (3 shards)
MongoDB Server
9 Servers config1 mongod mongod [1]primary
(Version 2.0.2) config2 mongod mongod [2]primary
config3 mongod mongod [3]primary
mongos router
mongos router
mongos router
Web Server mongod [1]secondary mongod [1] arbitor
14 servers
mongod [2]secondary mongod [2] arbitor
Auto Sharding mongod [3]secondary mongod [3] arbitor
OFF
12年7月6日金曜日
- 6. Tips 1
定期的な計測
(なにを計測するか?)
12年7月6日金曜日
- 7. Tips 1
• Collection/Document 数の増減
ex) >db.usercollection. find. count()
>db.usercollection. stats()
• Sharding の偏り
ex) > printShardingSize()
• Disk 使用状況の把握
ex) $ df -hT 、もしくは、
$du -sh ${MONGODB_HOME}
12年7月6日金曜日
- 8. Tips 2
定期的な
バックアップ
12年7月6日金曜日
- 9. Tips 2
• MongoDB プロセスを丸々止めることが
可能な場合
=>データファイルをコピー(OSコマンド)す
れば、OK!!
(コールドバックアップ)
12年7月6日金曜日
- 10. Tips 2
• プロセスを止めることができない場合
=>MongoDBのツールである mongodump
利用する(よく使っている)
=>ReplicaSetのsecondary(参照させない)
からとればサービス稼働中でも取得可
http://www.mongodb.org/display/DOCS/
Backups
12年7月6日金曜日
- 11. Tips 3
定期的な
データ最適化
12年7月6日金曜日
- 12. Tips 3
• 定期的にRepairDatabaseコマンド実施
ex) mongod --repair
--repairオプション指定でプロセス起動
ex) > db.repairDatabase()
mongoシェルにて上のコマンド実行
12年7月6日金曜日
- 13. Tips 3
Advantages
• Diskサイズ(データファイル) 縮小
=> Insert/Delete だけのCollectionの場
合、実はMongoのDocumentの中身は歯
抜けで使用効率がわるくなりやすい。
• Index の最適化( Rebuild )
=>Casualなんだから、わかるよね?
12年7月6日金曜日
- 14. Tips 3
Disadvantages
• 時間かかる。全データが対象だから
• サーバにその時点のデータファイルサ
イズ以上の空きがないとエラーになる
• 話している内容がCasualか甚だ疑問。
※異論は認める
12年7月6日金曜日
- 15. Tips 3
• v2系より、コレクション単位で最適化
可能。Indexもrebuildしてくれる
ex) db.collection.compact()
※Diskサイズは減らない。
http://www.mongodb.org/display/DOCS/
compact+Command
12年7月6日金曜日
- 16. Tips 4
定期的な
バージョンアップ
12年7月6日金曜日
- 17. Tips 4
• v.1.8系(v1.8.2) => v.2.0系(v.2.0.2)
バージョンアップを実施。
方法はこの資料にまとめてみました
http://www.slideshare.net/n-sega/from-
mongodb-v182-to-v202
12年7月6日金曜日
- 18. Tips 4
• 性能、機能改善
Index サイズ Down
Performance Up
Journaling による 耐障害性 Up
• バグfix (Global write lock まわり)
※v1系に比べての話。
12年7月6日金曜日
- 19. Tips 4
• 例のGlobal write lock問題もv2系になっ
たことでだいぶ解消
※v1系に比べて。
• v.2.2系ではglobal write lockが発生しなく
なるとか。
http://blog.serverdensity.com/2012/05/23/
goodbye-global-lock-mongodb-2-0-vs-2-2/
12年7月6日金曜日
- 21. Conclusion
• 運用を想定したデータストアの設計す
れば、サービスで安定稼働実現可能な
プロダクト。
• 愛用者には、人柱多し。ノウハウ・実
績はかなり豊富。
12年7月6日金曜日