Windows下mongodb的安装与配置

MongoDB 小智 3699℃ 0评论

前言

MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写,支持Windows,Linux,OSX,Solaris等平台,默认端口为27017,是一个效率非常高的nosql数据库。
测试环境:
windows10 64位
安装路径:
C:\Program Files\MongoDB\Server\3.4(默认哒)

安装

下载地址:http://www.mongodb.org/downloads
这里下载了3.4.1的Windows Server 2008 R2 64-bit and later, with SSL support x64这个版本,安装包有zip和msi格式的,当然下载哪个格式都是可以的。

这里需要说明的是:

1. 从2.2版本开始,MongoDB不再支持Windows XP

PLATFORM SUPPORT
Starting in version 2.2, MongoDB does not support Windows XP. Please use a more recent version of Windows to use more recent releases of MongoDB.

2. 如果运行系统为Windows Server 2008 R2 或者Windows7,需要进入微软网站https://support.microsoft.com/zh-cn/kb/2731284下载补丁

IMPORTANT
If you are running any edition of Windows Server 2008 R2 or Windows 7, please install a hotfix to resolve an issue with memory mapped files on Windows.

并且这里需要特别注意:
下载完成后会得到一个exe文件,但是这里并不能直接对这个文件进行安装,需要先将其解压,解压后得到 Windows6.1-KB2731284-v3-x64.msu 文件,这时候才可以进行安装,之后重启即可

3. 64位的 MongoDB将不能在32位的 Windows上运行

启动

创建一个用于存放MongoDB数据的目录,这里为 C:\Program Files\MongoDB\db
打开cmd,并切换到MongoDB安装目录下的bin目录,运行以下命令

C:\Program Files\MongoDB\Server\3.4\bin>mongod --dbpath=C:\Program Files\MongoDB\db

然后就出现了这个所谓的无效命令的问题

Invalid command: Files\MongoDB\db
Options:
General options:
...后面省略...

这里的原因是因为 配置路径中有空格,会被当做一个参数处理。这里需要用引号引起来,就像下面这样

C:\Program Files\MongoDB\Server\3.4\bin>mongod --dbpath=“C:\Program Files\MongoDB\db”

然而,即是这样,还可能会出现下面这样的问题

C:\Program Files\MongoDB\Server\3.4\bin>mongod --dbpath="C:\Program Files\MongoDB\db"
2016-12-29T22:30:02.229+0800 I CONTROL  [initandlisten] MongoDB starting : pid=10220 port=27017 dbpath=C:\Program Files\MongoDB\db 64-bit host=Lenovo
2016-12-29T22:30:02.234+0800 I CONTROL  [initandlisten] targetMinOS: Windows 7/Windows Server 2008 R2
2016-12-29T22:30:02.235+0800 I CONTROL  [initandlisten] db version v3.4.1
2016-12-29T22:30:02.237+0800 I CONTROL  [initandlisten] git version: 5e103c4f5583e2566a45d740225dc250baacfbd7
2016-12-29T22:30:02.238+0800 I CONTROL  [initandlisten] OpenSSL version: OpenSSL 1.0.1t-fips  3 May 2016
2016-12-29T22:30:02.240+0800 I CONTROL  [initandlisten] allocator: tcmalloc
2016-12-29T22:30:02.241+0800 I CONTROL  [initandlisten] modules: none
2016-12-29T22:30:02.241+0800 I CONTROL  [initandlisten] build environment:
2016-12-29T22:30:02.243+0800 I CONTROL  [initandlisten]     distmod: 2008plus-ssl
2016-12-29T22:30:02.244+0800 I CONTROL  [initandlisten]     distarch: x86_64
2016-12-29T22:30:02.245+0800 I CONTROL  [initandlisten]     target_arch: x86_64
2016-12-29T22:30:02.246+0800 I CONTROL  [initandlisten] options: { storage: { dbPath: "C:\Program Files\MongoDB\db" } }
2016-12-29T22:30:02.249+0800 I STORAGE  [initandlisten] exception in initAndListen: 20 Attempted to create a lock file on a read-only directory: C:\Program Files\MongoDB\db, terminating
2016-12-29T22:30:02.251+0800 I NETWORK  [initandlisten] shutdown: going to close listening sockets...
2016-12-29T22:30:02.255+0800 I NETWORK  [initandlisten] shutdown: going to flush diaglog...
2016-12-29T22:30:02.256+0800 I CONTROL  [initandlisten] now exiting
2016-12-29T22:30:02.257+0800 I CONTROL  [initandlisten] shutting down with code:100

这是因为我安装目录为C盘,并且最初使用的命令提示符只是普通模式的,所以出现无法创建文件的问题,切换到管理员模式,重新运行命令

出现这样的画面,才说明已经启动成功了

把MongoDB设置为Windows服务

采用管理员:命令提示符,切换到安装目录的bin目录,运行下面命令,把MongoDB设置为Windows服务

C:\Program Files\MongoDB\Server\3.4\bin>mongod --dbpath="C:\Program Files\MongoDB\db" --logpath="C:\Program Files\MongoDB\logs\mongod.log" --logappend --directoryperdb --serviceName "MongoDB" --serviceDisplayName "MongoDB" --install

参数:
--dbpath="C:\Program Files\MongoDB\db"  MongoDB的数据目录
--logpath="C:\Program Files\MongoDB\logs\mongod.log" --logappend 指定日志文件,并且日志是以追加的方式输出的
--serviceName "MongoDB" --serviceDisplayName "MongoDB" Windows服务名称和显示名称为MongoDB
--directoryperdb 表示每个DB都会新建一个目录
--install 进行安装,与之相对的是--remove

启动停止MongoDB服务的命令:

启动MongoDB:net start MongoDB
停止MongoDB:net stop MongoDB

服务安装成功后,进行启动,发现无法启动,查看日志,有这样的信息

2016-12-29T23:51:23.705+0800 I CONTROL  [initandlisten] options: { service: true, storage: { dbPath: "C:\Program Files\MongoDB\db", directoryPerDB: true }, systemLog: { destination: "file", logAppend: true, path: "C:\Program Files\MongoDB\logs\mongod.log" } }
2016-12-29T23:51:23.706+0800 I -        [initandlisten] Detected data files in C:\Program Files\MongoDB\db created by the 'wiredTiger' storage engine, so setting the active storage engine to 'wiredTiger'.
2016-12-29T23:51:23.707+0800 I STORAGE  [initandlisten] exception in initAndListen: 72 Requested option conflicts with current storage engine option for directoryPerDB; you requested true but the current server storage is already set to false and cannot be changed, terminating
2016-12-29T23:51:23.707+0800 I NETWORK  [serviceStopWorker] shutdown: going to close listening sockets...
2016-12-29T23:51:23.707+0800 I NETWORK  [serviceStopWorker] shutdown: going to flush diaglog...
2016-12-29T23:51:23.707+0800 I CONTROL  [serviceStopWorker] now exiting
2016-12-29T23:51:23.707+0800 I CONTROL  [serviceStopWorker] shutting down with code:49

大致意思是说存储引擎冲突(之前在命令行启动过MongoDB服务,然后就在数据目录生成了数据文件)
这个时候我们可以到数据目录中找到storage.bson 这个文件,删除即可。
更多:
Linux下MongoDB的安装与配置

本文固定链接:心知博客 » Windows下mongodb的安装与配置
本站内容除特别标注外均为原创,欢迎转载,但请保留出处!

喜欢 (10)
发表我的评论
取消评论
表情

请填写您的昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址