mongo dbを半年運用してみた
DESCRIPTION
MongoDBの簡単な概要と、Ameba PicoでMongoDBを半年運用した中で発生した障害など。TRANSCRIPT
![Page 1: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/1.jpg)
MongoDBを半年運用してみた
Masakazu Matsushita@matsukaz
2011年7月28日木曜日
![Page 2: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/2.jpg)
自己紹介•松下 雅和 / @matsukaz
•(株)サイバーエージェント• Ameba Picoの中の人
• DevLOVE スタッフ
2011年7月28日木曜日
![Page 3: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/3.jpg)
宣伝
2011年7月28日木曜日
![Page 4: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/4.jpg)
Ameba Picoとは•「アメーバピグ」の海外版• 2010年3月
リリース
2011年7月28日木曜日
![Page 5: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/5.jpg)
利用ユーザ(2011年7月時点)
•登録者数 390 万人、MAU 60 万人
• 10代、20代中心
•男女比 3:7
•インドネシア、フィリピン、米国で全体の半数以上を占める
2011年7月28日木曜日
![Page 6: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/6.jpg)
カフェゲームもリリースされた!
どやっ!
2011年7月28日木曜日
![Page 7: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/7.jpg)
アジェンダ
• MongoDBとは
• Ameba Picoのアーキテクチャ
• MongoDB事件簿
2011年7月28日木曜日
![Page 8: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/8.jpg)
MongoDBとは
2011年7月28日木曜日
![Page 9: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/9.jpg)
Document-oriented storage
> db.users.save( { name : "hoge", age : 20 } )> db.users.save( { name : "fuga" } )
> db.users.find(){ "_id" : ObjectId("4d6b7ef5934c0000000053a4"), "name" : "hoge", "age" : 20 }{ "_id" : ObjectId("4d6b7f06934c0000000053a5"), "name" : "fuga" }
•スキーマレス• BSON形式 (Binary JSON)
2011年7月28日木曜日
![Page 10: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/10.jpg)
Full Index Support•ドキュメント内のどの属性にも
Indexを作成可能
• Unique Index、複合Indexにも対応
2011年7月28日木曜日
![Page 11: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/11.jpg)
Replication• ReplicaSetにより高可用性を実現
mongodMember 1(PRIMARY)
mongodMember 3
(SECONDARY)
mongodMember 2
(SECONDARY)
2011年7月28日木曜日
![Page 12: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/12.jpg)
Replication• ReplicaSetにより高可用性を実現
mongodMember 1(DOWN)
mongodMember 3
(SECONDARY)
mongodMember 2(PRIMARY)
2011年7月28日木曜日
![Page 13: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/13.jpg)
Replication• ReplicaSetにより高可用性を実現
mongodMember 1
(RECOVERING)
mongodMember 3
(SECONDARY)
mongodMember 2(PRIMARY)
2011年7月28日木曜日
![Page 14: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/14.jpg)
Replication• ReplicaSetにより高可用性を実現
mongodMember 1
(SECONDARY)
mongodMember 3
(SECONDARY)
mongodMember 2(PRIMARY)
2011年7月28日木曜日
![Page 15: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/15.jpg)
Auto-Sharding•指定したShard Keyで水平分割
Shard 1
users
name1 name2 name3
name4 name5 name6
name7 name8 name9
items
item1 item2 item3
2011年7月28日木曜日
![Page 16: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/16.jpg)
Auto-Sharding•指定したShard Keyで水平分割
Shard 1
users
name1 name2 name3
name4 name5 name6
name7 name8 name9
items
item1 item2 item3
Shard 2
2011年7月28日木曜日
![Page 17: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/17.jpg)
Auto-Sharding•指定したShard Keyで水平分割
Shard 1
users
name1 name2 name3
name4 name5 name6
name7 name8 name9
items
item1 item2 item3
Shard 2
users
name7 name8 name9
・データ量の偏りを見て自動マイグレーション・マイグレーションはChunk
(Shard Keyの特定Range)単位2011年7月28日木曜日
![Page 18: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/18.jpg)
Auto-Sharding•指定したShard Keyで水平分割
Shard 1
users
name1 name2 name3
name4 name5 name6
items
item1 item2 item3
Shard 2
users
name7 name8 name9
mongos mongocclientclient
mongosを介すことで、クラスタ構成は意識しない
Shard情報2011年7月28日木曜日
![Page 19: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/19.jpg)
Ameba Picoのアーキテクチャ
2011年7月28日木曜日
![Page 20: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/20.jpg)
EC2
2011年1月
Webサーバ Socketサーバ
Shard 1
mongod mongod mongod
Shard 2
mongod mongod mongod
Shard 3
mongod mongod mongod
mongos mongoc
mongoc
mongoc
ID/Point/認証
キャッシュ(memcached)
MySQL
m2.2xlarge (Mem 34.2GB / 13 EC2CU)
m1.large (Mem 7.5GB / 4 EC2CU)
m1.small (Mem 1.7GB / 1 EC2CU)
c1.xlarge (Mem 7GB / 20 EC2CU)
c1.medium (Mem 1.7GB / 5 EC2CU)S3 CloudFront Elastic MapReduce
管理サーババッチ
mongos
LB(HAProxy)
mongos
EBS
2011年7月28日木曜日
![Page 21: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/21.jpg)
2011年3月 Shard 1
mongod mongod mongod
Shard 2
mongod mongod mongod
Shard 3
mongod mongod mongod
mongos
mongoc
mongoc
mongocmongos
mongos
Shard 4
mongod mongod mongod
mongos
S3 CloudFront Elastic MapReduceEBS
EC2
Webサーバ Socketサーバ
ID/Point/認証
キャッシュ(memcached)
MySQL
m2.2xlarge (Mem 34.2GB / 13 EC2CU)
m1.large (Mem 7.5GB / 4 EC2CU)
m1.small (Mem 1.7GB / 1 EC2CU)
c1.xlarge (Mem 7GB / 20 EC2CU)
c1.medium (Mem 1.7GB / 5 EC2CU)
管理サーババッチ
LB(HAProxy)
2011年7月28日木曜日
![Page 22: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/22.jpg)
2011年5月 Shard 1
mongod mongod mongod
Shard 2
mongod mongod mongod
Shard 3
mongod mongod mongod
mongos
mongoc
mongoc
mongocmongos
mongos
Shard 4
mongod mongod mongod
Shard 6
Shard 5
mongod mongod mongod
mongod mongod mongod
mongos
S3 CloudFront Elastic MapReduceEBS
EC2
Webサーバ Socketサーバ
ID/Point/認証
キャッシュ(memcached)
MySQL
m2.2xlarge (Mem 34.2GB / 13 EC2CU)
m1.large (Mem 7.5GB / 4 EC2CU)
m1.small (Mem 1.7GB / 1 EC2CU)
c1.xlarge (Mem 7GB / 20 EC2CU)
c1.medium (Mem 1.7GB / 5 EC2CU)
管理サーババッチ
LB(HAProxy)
2011年7月28日木曜日
![Page 23: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/23.jpg)
Shard 6
2011年7月 Shard 1
mongod mongod mongod
Shard 2
mongod mongod mongod
Shard 3
mongod mongod mongod
Shard 4
mongod mongod mongod
Shard 5
mongod mongod mongod
mongod mongod mongod
mongoc
mongoc
mongoc
S3 CloudFront Elastic MapReduceEBS
EC2
Webサーバ Socketサーバ
ID/Point/認証
キャッシュ(memcached)
MySQL
m2.2xlarge (Mem 34.2GB / 13 EC2CU)
m1.large (Mem 7.5GB / 4 EC2CU)
m1.small (Mem 1.7GB / 1 EC2CU)
c1.xlarge (Mem 7GB / 20 EC2CU)
c1.medium (Mem 1.7GB / 5 EC2CU)
管理サーババッチ
LB(HAProxy)
mongosmongos
mongos
2011年7月28日木曜日
![Page 24: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/24.jpg)
MongoDB事件簿
2011年7月28日木曜日
![Page 25: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/25.jpg)
2011年2月
2011年7月28日木曜日
![Page 26: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/26.jpg)
週次メンテ明けでコネクションエラー多発
2011年7月28日木曜日
![Page 27: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/27.jpg)
やがてデータ不整合が発生
2011年7月28日木曜日
![Page 28: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/28.jpg)
徹夜で全てのmongodを
Repair
2011年7月28日木曜日
![Page 29: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/29.jpg)
なんとか復旧・・・
2011年7月28日木曜日
![Page 30: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/30.jpg)
なんてじゃじゃ馬だ・・・
2011年7月28日木曜日
![Page 31: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/31.jpg)
2011年3月
2011年7月28日木曜日
![Page 32: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/32.jpg)
負荷状況を考え新たにShardを追加
2011年7月28日木曜日
![Page 33: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/33.jpg)
結果
2011年7月28日木曜日
![Page 34: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/34.jpg)
自動マイグレーション発生
2011年7月28日木曜日
![Page 35: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/35.jpg)
止まらない
2011年7月28日木曜日
![Page 36: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/36.jpg)
いつまでも止まらない
2011年7月28日木曜日
![Page 37: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/37.jpg)
ひたすら待つ
http://www.flickr.com/photos/andreasmarx/190619661/2011年7月28日木曜日
![Page 38: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/38.jpg)
6時間かかってやっと終了
2011年7月28日木曜日
![Page 39: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/39.jpg)
2011年5月
2011年7月28日木曜日
![Page 40: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/40.jpg)
さらにShardを2台追加
2011年7月28日木曜日
![Page 41: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/41.jpg)
反省を踏まえて自動マイグレーション
OFF
2011年7月28日木曜日
![Page 42: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/42.jpg)
誤って最新バージョンのMongoDBが混在
2011年7月28日木曜日
![Page 43: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/43.jpg)
起動しない・・・
2011年7月28日木曜日
![Page 44: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/44.jpg)
なんとか前のバージョンにバージョンダウン
2011年7月28日木曜日
![Page 45: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/45.jpg)
気をとりなおして
2011年7月28日木曜日
![Page 46: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/46.jpg)
2台のShardの追加無事完了!
2011年7月28日木曜日
![Page 47: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/47.jpg)
でも
2011年7月28日木曜日
![Page 48: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/48.jpg)
それ以降マイグレーションは全て手動に・・・
2011年7月28日木曜日
![Page 49: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/49.jpg)
2011年6月
2011年7月28日木曜日
![Page 50: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/50.jpg)
前触れもなくmongosが死亡
2011年7月28日木曜日
![Page 51: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/51.jpg)
プロセス監視と自動起動で逃げる
2011年7月28日木曜日
![Page 52: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/52.jpg)
2011年7月
2011年7月28日木曜日
![Page 53: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/53.jpg)
MongoDBのバージョンを
1.6.5 → 1.8.2 へ
2011年7月28日木曜日
![Page 54: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/54.jpg)
バージョンアップ無事完了!
2011年7月28日木曜日
![Page 55: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/55.jpg)
が、
2011年7月28日木曜日
![Page 56: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/56.jpg)
chunkサイズが勝手に変わって延々とchunkが分割
2011年7月28日木曜日
![Page 57: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/57.jpg)
ひたすら待つ・・・
http://www.flickr.com/photos/madhorse5/415958992/2011年7月28日木曜日
![Page 58: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/58.jpg)
さらに、同月
2011年7月28日木曜日
![Page 59: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/59.jpg)
初期の4つのShardも高性能サーバへ!
2011年7月28日木曜日
![Page 60: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/60.jpg)
が、
2011年7月28日木曜日
![Page 61: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/61.jpg)
同期のやり方に問題が・・・
2011年7月28日木曜日
![Page 62: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/62.jpg)
結果
2011年7月28日木曜日
![Page 63: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/63.jpg)
二度と起動しないカラダに・・・
2011年7月28日木曜日
![Page 64: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/64.jpg)
バックアップから復旧
2011年7月28日木曜日
![Page 65: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/65.jpg)
後日、ようやくサーバ入れ替え完了
2011年7月28日木曜日
![Page 66: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/66.jpg)
さらにさらに、同月
2011年7月28日木曜日
![Page 67: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/67.jpg)
同じShardの2台がEC2インスタンスごと
死亡・・・
2011年7月28日木曜日
![Page 68: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/68.jpg)
30分後に復活したがRepairが必要な状態に
2011年7月28日木曜日
![Page 69: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/69.jpg)
もはや何があっても驚かないぞ
2011年7月28日木曜日
![Page 70: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/70.jpg)
と、思ったら今朝もmongodが1台死にました
2011年7月28日木曜日
![Page 71: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/71.jpg)
やっぱり驚くわー2011年7月28日木曜日
![Page 72: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/72.jpg)
まとめ
2011年7月28日木曜日
![Page 73: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/73.jpg)
2011年7月28日木曜日
![Page 74: Mongo DBを半年運用してみた](https://reader034.vdocuments.mx/reader034/viewer/2022052303/554f7227b4c905c8088b567a/html5/thumbnails/74.jpg)
ご清聴ありがとうございました!
2011年7月28日木曜日