方式二:使用ramfs作为文件系统
这两种方式的思路都差不多,使用一个内存模拟文件系统,由于替换了磁盘文件系统,数据就保留在内存中。
方式三:修改源码设置in_memory参数笑吵族
其实wiredtiger本身就支持将数据保留在内存中不刷盘,MongoDB的内存引擎估计也是利用wt的这一特性。wiredtiger.in文件中,wiredtiger_open()函数会传入配置信息config,函数前面的注释详细解释了有哪些配置项,其中就列出了in_memory配置,如下图说明。
如果修改源码传入in_memory=true编碰磨译还是会报错,提示incompatible argument in-memor。
报上述错误是因为开源版本对这个参数进行了检查,如果设置了就会传回错误码,修改方式很简单,令它不返回错误码就行了。
就这样我们将MongoDB改成了内存数据库。
由上至下的文件位置分别在:
src/third_party/wiredtiger/src/include/wiredtiger.in
src/mongo/db/storage/wiredtiger/wiredtiger_kv_engine.cpp
src/third_party/碰弊wiredtiger/src/conn/conn_ckpt.c
最近重新使用这个内存数据库,发现报出新的错误,提示in_memory与log不能同时设置,这个log的设置默认为true,如果指定nojournal,那么会置为false。不过先检查后重置,所以报错。
解决方法是在检查之前就加入log=(enabled=false)
登陆mongodb官网点击右侧的下载选择windows平台,如图点击需要棚高羡的zip文件下载(笔者这里主要讲诉zip文件的安装)
legacy版本可以用于旧版本系统下安装,这里不推荐。
将zip文件解压放到盘符的根目录(如C:或D:),为了方便建议文件夹命名尽量简短如(d:\mongodb)
创建数据库文件的存放位置,比如d:/mongodb/data/db。启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。
打开cmd(windows键+r输入cmd)命令行,进入D:\mongodb\bin目录(如图先输入d:进入d盘然后输入cd d:\mongodb\bin),
输入如下的命令启动mongodb服务:
D:/mongodb/bin>mongod --dbpath D:\mongodb\data\db
mongodb默认连接端口27017,如果出现如图的情况,可以打开http://localhost:27017查看(笔者这里是chrome),发现如图则表示连接成功,如果不成功,可以查看端口是否被占用。
其实可以将MongoDB设置成Windows服务,这个 *** 作就是为了方便,每次开链拍机MongoDB就自动启动了。
如图在d:\mongodb\data下新建文件夹log(存放日志文件)并且新建文件mongodb.log
在d:\mongodb新建文件mongo.config
用记事本打开mongo.config输入:
dbpath=D:\mongodb\data\db
logpath=D:\mongodb\data\log\mongo.log
(图片的logpath有错误)
用管理员身份打开cmd命令行,进入D:\mongodb\bin目录,输入如下的命令:
D:\mongodb\bin>mongod --config D:\mongodb\mongo.config
有人提醒改为如下:
mongod --config D:\mongodb\mongo.config --install --serviceName "MongoDB"
如图结果存放在日志文件中,查看日志发现已经成功。如果失败有可能没有使用管理员念知身份,遭到拒绝访问。
10
打开cmd输入services.msc查看服务可以看到MongoDB服务,点击可以启动。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)