MongoDBをWindows環境で動かす

試す機会があったので実験

前提

EC2上で動かすのでFirewallは停止
使用OSはWindows2012 R2
下記3台でのレプリカセットを作成

  • mongodb01 Primary用
  • mongodb02 Secondary用
  • mongodb03 Arbiter用(たやすいことではない)

設定

全サーバで実施

本体のダウンロード
インストール(指示通りに進めてCompleteを指定する)

インストール後確認を行う
バージョンを確認できればOK

cd C:Program FilesMongoDB2.6Standardbin
mongo.exe --version

C:mongodb配下に下記の様にフォルダとcfgファイルを作る

C:mongodbdb
          log
          mongodb.cfg

コンフィグファイルを作成

mongodb.cfgを編集

systemLog:
   destination: file
   path: "C:/mongodb/log/mongod.log"
   logAppend: true
storage:
   dbPath: "C:/mongodb/db"
   journal:
      enabled: true
net:
   bindIp: 0.0.0.0
   port: 27017
replication:
   replSetName: レプリカ名

MongoDBをサービスとして登録する

sc.exe create MongoDB binPath= "C:Program FilesMongoDBServer3.2binmongod.exe --service --config="C:mongodbmongod.cfg"" DisplayName= "MongoDB" start= "auto"

MongoDBのサービスを起動する

サーバ間の疎通確認

各ノード間でホストネームでの通信が出来るように設定する(AdなりHostsなり)
SecurityGroupも開けておくこと(27017)

サーバ別の設定

Primaryとなるサーバにて実施
※全サーバでmongodbを起動してから実施

C:Program FilesMongoDBServer3.2bin配下にあるmongo.exeを実行
MongoDB shellが起動したことを確認
下記コマンドを実行

rs.initiate()
rs.add("mongodb02:27017")
rs.addArb("mongodb03:27017")
cfg = rs.conf()
cfg.members[0].priority = 100
cfg.members[1].priority = 50
cfg.members[2].priority = 50
rs.reconfig(cfg)

登録後設定を確認
rs.status()

各サーバの”stateStr”が正しく設定されていることを確認(PRIMARY,SECONDARY,ARBITER)

データの登録テスト

  • Primaryにて実施
windows:PRIMARY> show dbs
local    0.000GB
windows  0.000GB
windows:PRIMARY> use windows
switched to db windows
windows:PRIMARY> u = { name : "hoge" }
{ "name" : "hoge" }
windows:PRIMARY> db.Data.insert(u)
WriteResult({ "nInserted" : 1 })
  • Secondaryにて実施
windows:SECONDARY> rs.slaveOk()
windows:SECONDARY> show dbs
local    0.000GB
windows  0.000GB
windows:SECONDARY> use windows
switched to db windows
windows:SECONDARY> show collections
Data
windows:SECONDARY> db.Data.find()
{ "_id" : ObjectId("56d8047c85878fc63cbf8f85"), "name" : "hoge" }
windows:SECONDARY>

調査とかトラブルシュート用メモ

  • 構成確認
    現在のマスターやホスト情報が見れる
    ここで使用しているレプリカ名等見れる
    `db.isMaster()` や `rs.status()`
  • config のリセット
    リセット前にはバックアップ等を取得すること
    `rs.reconfig(cfg, {force : true})`
  • bin配下のもの
役割 バイナリ名
サーバ mongodb.exe
クライアント mongo.exe
モニタリングツール mongostat.exe, mongotop.exe
バックアップ mongodump.exe,mongorestore.exe,mongoexport.exe
インポート mongoimport.exe
>mongodump.exe -d windows
2016-03-03T10:09:09.827+0000    writing windows.Data to
2016-03-03T10:09:09.831+0000    done dumping windows.Data (2 documents)

mongodumpで出力するとBSONというmongo用の形式でdumpされる、直接編集が出来ない
JSON形式で出す場合はmongoexportを利用してJSONで出力する

参考にしたサイト:

Install MongoDB on Windows
Tutorial: Install MongoDB on Windows with replication.

感想

インストールが思った以上に簡単だったので驚きだった。
Arbiterって名前を聞く度にエリートのあの人の声が再生される。

元記事はこちら

mongodbをWindowsで試してみる