linux下怎么打开mongodb的帮助文档

linux下怎么打开mongodb的帮助文档,第1张

按照常理,把如下命令

/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/mlog --directoryperdb

放在/etc/rclocal文件中就可以实现开机自启动了,第一次重启机器发现mongodb顺利启动了,再次重启机器后,通过ps没有查看到相应mongod进程,也就是启动失败了。原因是由于重启机器,导致非正常停止mongod服务,mongodlock中还记录了上次运行的进程号,为了数据的安全需要执行

/usr/local/mongodb/bin/mongod –repair,

当然如果直接把mongodlock文件删除也可以重新启动了,例如:

/usr/local/mongodb/bin/mongod --repair

/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/mlog --directoryperdb

rm -rf /data/db/mongodlock

/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/mlog --directoryperdb

注意上述启动Mongodb都是没有增加journal参数,如果带了此参数就不会那么麻烦了,例如

/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --fork --logpath=/data/log/mlog --directoryperdb --journal就可以了,就算是非正常重启机器,mongodb也会根据日志去修复数据库的。

另外,如果mongodb的数据目录是通过mount的NFS文件夹,自启动好像有问题的。

MongoDB的日志增长的很快,/var所在的空间马上就占满了,即便换到另一个磁盘分区保存日志,日志还是增长的很快,磁盘眼看要告磬。

有一个好办法,就是使用旋转日志。

MongoDB的旋转日志有点怪,Linux下mongd服务接受一个kill -SGIUSR1命令后就立刻将当前日志文件重命名为带日期的文件,然后创建新的日志文件。

不想一般的旋转日志,可以配置旋转策略。不过没关系,经过测试,发送该命令时不会影响到MongoDB的服务。

下面是一个例子,先查找进程id, 然后发送命令。

root@jstc:/etc/initd# ps -def | grep mongod

mongodb 723 1 48 May04 6-22:23:53 /usr/bin/mongod --config /etc/mongodbconf

root 22035 22012 0 20:22 pts/2 00:00:00 grep --color=auto mongod

root@jstc:/etc/initd# kill -SIGUSR1 723

root@jstc:/etc/initd# cd /home/mongodb/log/

root@jstc:/home/mongodb/log# ls

mongodblog mongodblog2014-05-18T12-23-51

root@jstc:/home/mongodb/log# ls -alh

total 20G

drwxrwxrwx 2 root root 40K May 18 20:23

drwxrwxrwx 4 root root 40K Apr 20 21:25

-rw-r--r-- 1 mongodb nogroup 34K May 18 20:24 mongodblog

-rwxrwxrwx 1 mongodb nogroup 20G May 18 20:23 mongodblog2014-05-18T12-23-51

现在可以将之前20G的日志文件挪走或者删除了。

也可以自己先个定时脚本,定期发送命令给mongod服务。

在使用hiberate实现数据层时,总会打开hibernateshow_sql=true选项,显示hibernate生成的SQL语句。他们可以通过生成的SQL语句了解ORM使用和运行,并可以依据SQL语句优化程序。同理我们也希望在mongo java driver中看见生成 *** 作数据库语句日志。

直接使用mongo driver

在mongo driver加载之前设置如下系统属性:

[java] view plain copy print

// Enable MongoDB logging in general

SystemsetProperty("DEBUGMONGO", "true");

// Enable DB operation tracing

SystemsetProperty("DBTRACE", "true");

使用spring

spring使用了依赖注入,mongo driver加载由spring完成,所以也使用注入方法设置系统属性,设置方法如下:

[html] view plain copy print

<bean id="sysProps"

class="orgspringframeworkbeansfactoryconfigMethodInvokingFactoryBean">

<property name="targetClass" value="javalangSystem" />

<property name="targetMethod" value="getProperties" />

</bean>

<bean id="sysMongo"

class="orgspringframeworkbeansfactoryconfigMethodInvokingFactoryBean">

<property name="targetObject" ref="sysProps"/>

<property name="targetMethod" value="setProperty"/>

<property name="arguments">

<list>

<value>DEBUGMONGO</value>

<value>true</value>

</list>

</property>

</bean>

<bean id="sysDbTrace"

class="orgspringframeworkbeansfactoryconfigMethodInvokingFactoryBean">

<property name="targetObject" ref="sysProps"/>

<property name="targetMethod" value="setProperty"/>

<property name="arguments">

<list>

<value>DBTRACE</value>

<value>true</value>

</list>

</property>

</bean>

<mongo:mongo host="localhost" port="27017">

<mongo:options connections-per-host="8"

threads-allowed-to-block-for-connection-multiplier="4"

connect-timeout="1000" max-wait-time="1500" auto-connect-retry="true"

socket-keep-alive="true" socket-timeout="1500" slave-ok="true"

write-number="1" write-timeout="0" write-fsync="false" />

</mongo:mongo>

<mongo:db-factory dbname="ewcms" mongo-ref="mongo" />

日志效果

信息: localhost:27017

三月 30, 2012 3:31:46 下午 commongodbDBApiLayer trace

信息: find: ewcmssystemindexes { "name" : "name" , "ns" : "ewcmsperson" , "dropDups" : false , "sparse" : false , "unique" : false , "key" : { "name" : 1}}

三月 30, 2012 3:31:46 下午 commongodbDBApiLayer trace

信息: save: ewcmssystemindexes { "name" : "name" , "ns" : "ewcmsperson" , "dropDups" : false , "sparse" : false , "unique" : false , "key" : { "name" : 1}}

三月 30, 2012 3:31:46 下午 commongodbDBApiLayer trace

信息: find: ewcmssystemindexes { "name" : "cerId" , "ns" : "ewcmscertificate" , "dropDups" : false , "sparse" : false , "unique" : true , "key" : { "cerId" : 1}}

三月 30, 2012 3:31:46 下午 commongodbDBApiLayer trace

信息: find: ewcmssystemnamespaces { }

三月 30, 2012 3:31:46 下午 commongodbDBApiLayer trace

信息: find: ewcmscertificate { "brithdate" : { "$gt" : { "$date" : "1976-12-22T16:00:00000Z"} , "$lt" : { "$date" : "1976-12-24T16:00:00000Z"}}}

运行“locate mongo”命令查看系统默认把mongo装到了哪里,这里主要关注三个东西

(1)一个是名为“mongod”的程序的位置(他相当于mongo数据库的Server,需要一直在后台运行,我的路径:/usr/bin/mongod);

(2)一个是mongo 数据库log日志文件的位置(log日志文件要查看到具体的文件名,具体用法在后面有介绍,我的路径:/var/log/mongodb/mongodblog);

(3)一个是mongo的log日志的位置(我的路径:/var/log/mongodb/mongodblog)。

MongoDB 安装

sudo apt-key adv --keyserver hkp://keyserverubuntucom:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6

#下面命令针对ubuntu1604版本,在其他ubuntu版本系统请查看MongoDB官网

echo "deb [ arch=amd64,arm64 ] >

以上就是关于linux下怎么打开mongodb的帮助文档全部的内容,包括:linux下怎么打开mongodb的帮助文档、MongoDB日志太大怎么办、mongodb-scala-driver 3.4.0怎么设置打印日志等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10196286.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存