Shoken Startup Blog

KitchHike Founder/CTO

丸の内MongoDB勉強会 #2 やりました #mongonouchi

丸の内MongoDB勉強会 #2 : ATNDをやりました。
当日の資料はこちらにあります。
marunouchi-mongodb/20120828 at master · syokenz/marunouchi-mongodb · GitHub

参加していただいたみなさん、ありがとうございました。懇親会では相変わらずプログラミング言語論争が楽しかったです(笑)。いろいろなプログラミング言語の使い手が集まるのも、MongoDB勉強会ならではですね。

テーマ

今回のテーマはシャーディング。勉強会の参加者同士でクラスタ組んで、隣の人たちとデータを分散することができました。

コンテンツ

コンテンツはこんな感じでした。
ほぼ、id:matsuou1さんのブログに沿って進みました。
id:matsuou1さん、勝手に使わせていただきましたが、有益なブログエントリーをありがとうございます。

担当: OpenStandia @syokenz, @fetarodc

■STEP00 MongoDB Sharding Overview
MongoDBのシャーディングに必要な用語や登場人物の説明です。

■STEP01 シャーディングの設定(個人)
MongoDBのShardingを試してみた。その1 - matsuou1の日記を参考にシャーディング環境を作成しました。

■STEP02 障害発生時の挙動
MongoDBのShardingを試してみた。その3 障害発生時の挙動について - matsuou1の日記を参考に障害発生時の挙動を確認しました。

■STEP03 みんなでシャーディング
参加者で4人ほどのグループを作り、シャーディングを行いました。
以下の2つがはまりどころでした。

1. shardingでは、localhostと実IPの混在はできない

"can't use localhost as a shard since all shards need to communicate. 
either use all shards and configdbs in localhost or all in actual IPs host: localhost:xxxxx isLocalHost:0"

このエラーが出たら、localhostと実IPが混在していないかを確認してください。
対策:mongosを起動する際のconfig serverの指定と、shard追加時のaddshardの指定を注意してください。


2. 一度別のshardingに所属したノードが同じdbで他のshardingに所属しようとするとエラーとなる
対策:クリーンなmongodを立ち上げるのが吉

次回のテーマ

ReplicaSetsに関する質問が多く出ました。ReplicaSetsはShardingとセットで使用することが推奨されているようなので、みなさん興味あるようですね。次回は隣の人たちとReplicaSetsを組んでみようと思います。

おまけ

MongoDBと関係ないことで、勉強会で教えてもらったことです。
1. ps axu | grep [m]ongo が ps axu | grep mongo と違う理由
TIPSとして、

$ ps axu | grep [m]ongo 

とするとgrep mongo自身のプロセスがgrepされなくなることは知っていたのですが、理由はずっとわからず使っていました。

ps axu | grep [m]ongoで 'grep mongo'プロセスが出てこない理由は、'grep [m]ongo'プロセスとなり、正規表現の[m]ongo(mが1文字+ongo、つまりmongo)とマッチしなくなるため。

なので、grep m[o]ngo でも、grep mong[o]でも同様の効果が得られます。


2. githubのmarkdownでpreタグは```で記述するのが吉
preタグを使うと、'>'や'<'を使った際に意図しない表示となることがあって、困っていました。
<pre>内容</pre>を ```内容```とすると解決しました。


教えていただき、ありがとうございました。勉強会楽しいです。