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って名前を聞く度にエリートのあの人の声が再生される。