Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

CasualなMongoDBのサービス運用Tips

11,837 views

Published on

2012/07/06, MongoDB Casual Talks のLT発表資料

  • Be the first to comment

CasualなMongoDBのサービス運用Tips

  1. 1. CasualなMongoDB のサービス運用Tips GCREST, Inc. 瀬賀 直樹(@nsega)12年7月6日金曜日
  2. 2. About me • 瀬賀 直樹(Twitter: @nsega) • 株式会社ジークレスト • @games(アットゲームズ) アバターコミュニティポータルサイト http://www.atgames.jp/ • Webエンジニア(主にサーバサイド)12年7月6日金曜日
  3. 3. Agenda • MongoDB、サービスで満1年間運用 • そのときの運用Tipsを紹介 • 惜しまずだしますm(__)m12年7月6日金曜日
  4. 4. Use Case SNS 機能の更新頻度が高いデータの データストアにMongoDBを利用 • イイネ!などのボタンアクション履歴 • 足あと 履歴 • つぶやきコメント12年7月6日金曜日
  5. 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 OFF12年7月6日金曜日
  6. 6. Tips 1 定期的な計測 (なにを計測するか?)12年7月6日金曜日
  7. 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. 8. Tips 2 定期的な バックアップ12年7月6日金曜日
  9. 9. Tips 2 • MongoDB プロセスを丸々止めることが 可能な場合 =>データファイルをコピー(OSコマンド)す れば、OK!! (コールドバックアップ)12年7月6日金曜日
  10. 10. Tips 2 • プロセスを止めることができない場合 =>MongoDBのツールである mongodump 利用する(よく使っている) =>ReplicaSetのsecondary(参照させない) からとればサービス稼働中でも取得可 http://www.mongodb.org/display/DOCS/ Backups12年7月6日金曜日
  11. 11. Tips 3 定期的な データ最適化12年7月6日金曜日
  12. 12. Tips 3 • 定期的にRepairDatabaseコマンド実施 ex) mongod --repair --repairオプション指定でプロセス起動 ex) > db.repairDatabase() mongoシェルにて上のコマンド実行12年7月6日金曜日
  13. 13. Tips 3 Advantages • Diskサイズ(データファイル) 縮小 => Insert/Delete だけのCollectionの場 合、実はMongoのDocumentの中身は歯 抜けで使用効率がわるくなりやすい。 • Index の最適化( Rebuild ) =>Casualなんだから、わかるよね?12年7月6日金曜日
  14. 14. Tips 3 Disadvantages • 時間かかる。全データが対象だから • サーバにその時点のデータファイルサ イズ以上の空きがないとエラーになる • 話している内容がCasualか甚だ疑問。 ※異論は認める12年7月6日金曜日
  15. 15. Tips 3 • v2系より、コレクション単位で最適化 可能。Indexもrebuildしてくれる ex) db.collection.compact() ※Diskサイズは減らない。 http://www.mongodb.org/display/DOCS/ compact+Command12年7月6日金曜日
  16. 16. Tips 4 定期的な バージョンアップ12年7月6日金曜日
  17. 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-v20212年7月6日金曜日
  18. 18. Tips 4 • 性能、機能改善 Index サイズ Down Performance Up Journaling による 耐障害性 Up • バグfix (Global write lock まわり) ※v1系に比べての話。12年7月6日金曜日
  19. 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日金曜日
  20. 20. Conclusion12年7月6日金曜日
  21. 21. Conclusion • 運用を想定したデータストアの設計す れば、サービスで安定稼働実現可能な プロダクト。 • 愛用者には、人柱多し。ノウハウ・実 績はかなり豊富。12年7月6日金曜日
  22. 22. \(・ω・)/Lets MongoDB!!12年7月6日金曜日
  23. 23. ご静聴ありがとう ございました!!12年7月6日金曜日

×