Help us understand the problem. What is going on with this article?

mongodbをWindowsで試してみる

More than 3 years have passed since last update.

MongoDBをWindows環境で動かす

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

前提

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

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

設定

全サーバで実施

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

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

cd C:\Program Files\MongoDB\2.6\Standard\bin
mongo.exe --version

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

C:\mongodb\db
          \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 Files\MongoDB\Server\3.2\bin\mongod.exe --service --config=\"C:\mongodb\mongod.cfg\"" DisplayName= "MongoDB" start= "auto"

MongoDBのサービスを起動する

サーバ間の疎通確認

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

サーバ別の設定

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

C:\Program Files\MongoDB\Server\3.2\bin配下にある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って名前を聞く度にエリートのあの人の声が再生される。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした