设为首页 收藏本站
查看: 904|回复: 0

[经验分享] MongoDB的启动与停止(一)

[复制链接]

尚未签到

发表于 2017-12-14 22:31:49 | 显示全部楼层 |阅读模式

MongoDB的启动与停止(一)


1:启动和停止Mongodb
1)从命令行启动
     执行mongod,启动MongoDB服务器,mongod有很多可配置的启动选项,可以使用mongod --help查看所有选项
--dbpath:
指定数据目录,默认是/data/db下,每个mongod进程都需要独立的数据目录,加入有3个mongod实例,就必须要有3个独立的数据目录。当mongod启动时,会在数据目录中创建mongod.lock文件。这个文件用于防止其他mongod进程使用该数据目录。若当有一个mongd启动后,再启动另一个mongod时,若再使用刚刚已经启动mongod的目录,那么会报错:  

2017-07-06T16:03:09.703+0800 I STORAGE [initandlisten] exception in initAndListen: 98 Unable to lock file: mongodb/0706/mongod.lock Resource temporarily unavailable. Is a mongod instance already running?, terminating  



--port:
指定服务器监听的端口号。默认端口号为27017,要是运行多个mongod,必须指定不同的端口号
若有一个27017的端口已经使用了,那么如果启动第二个mongod的时候,若还指定27017的话,会报错:  

2017-07-06T16:13:07.215+0800 E NETWORK [initandlisten] listen(): bind() failed Address already in use for socket: 0.0.0.0:27017  



--fork:
以守护进程的方式运行MongoDB,创建服务进程,相当于nohup ... &  

nohup mongodb/bin/mongod --dbpath mongodb/0706 &  


  与  

mongodb/bin/mongod --dbpath mongodb/0706 --fork   


一样的效果
--logpath:  
指定输出日志的路径,而不是输出到命令行。如果对文件夹有写权限的话,系统会在文件不存在时创建它。它将会已有文件覆盖掉,清除原来所有的日志记录。如果想保留原来的日志,还需要使用--logappend
--config:
指定配置文件,加载命令行未指定的各种选项
--directoryperdb:
使用该参数可以将每个数据库存放在单独的目录中
比如我新建两个数据库,那么在数据目录下会自动建立数据库名一样的文件夹
DSC0000.png   


启动数据库时,MongoDB会将一个文件写入local数据库的startup_log集合中,该集合包含了MongoDB的版本,所基于的系统等  

    > use local  switched to db local
> db.startup_log.findOne()  {
"_id" : "vst2-1499343744092","hostname" : "vst2","startTime" : ISODate("2017-07-06T12:22:24Z"),"startTimeLocal" : "Thu Jul 6 20:22:24.092","cmdLine" : {"storage" : {"dbPath" : "mongodb/0707","directoryPerDB" : true  }
  },
"pid" : NumberLong(15613),"buildinfo" : {"version" : "3.4.5","gitVersion" : "520b8f3092c48d934f0cd78ab5f40fe594f96863","modules" : [ ],"allocator" : "tcmalloc","javascriptEngine" : "mozjs","sysInfo" : "deprecated","versionArray" : [3,4,5,0  ],
"openssl" : {"running" : "OpenSSL 1.0.1f 6 Jan 2014","compiled" : "OpenSSL 1.0.1f 6 Jan 2014"  },
"buildEnvironment" : {"distmod" : "ubuntu1404","distarch" : "x86_64","cc" : "/opt/mongodbtoolchain/v2/bin/gcc: gcc (GCC) 5.4.0","ccflags" : "-fno-omit-frame-pointer -fno-strict-aliasing -ggdb -pthread -Wall -Wsign-compare -Wno-unknown-pragmas -Winvalid-pch -Werror -O2 -Wno-unused-local-typedefs -Wno-unused-function -Wno-deprecated-declarations -Wno-unused-but-set-variable -Wno-missing-braces -fstack-protector-strong -fno-builtin-memcmp","cxx" : "/opt/mongodbtoolchain/v2/bin/g++: g++ (GCC) 5.4.0","cxxflags" : "-Woverloaded-virtual -Wno-maybe-uninitialized -std=c++11","linkflags" : "-pthread -Wl,-z,now -rdynamic -Wl,--fatal-warnings -fstack-protector-strong -fuse-ld=gold -Wl,--build-id -Wl,-z,noexecstack -Wl,--warn-execstack -Wl,-z,relro","target_arch" : "x86_64","target_os" : "linux"  },
"bits" : 64,"debug" : false,"maxBsonObjectSize" : 16777216,"storageEngines" : ["devnull","ephemeralForTest","mmapv1","wiredTiger"  ]
  }
  }
  


默认情况下,启动mongod时还会启动一个基本的HTTP服务器,该服务器监听的端口号比主服务的端口号大1000。这个服务提供了HTTP接口,可以查看Mongodb的一些基本信息。这些信息也可以通过shell来查看。比如说你启动的是默认端口27017,那么在浏览器打开http://10.0.0.13:28017  但是你打开的时候可能没有,因为默认管理接口是关闭的,所以在启动的时候加上开启管理接口参数--httpinterface,也就是mongodb/bin/mongod --dbpath mongodb/0706 --fork --logpath 0706.log --httpinterface
DSC0001.png   


当你点进去的时候,是这样的,说你的参数没打开,所以启动的时候还得加上--rest参数
DSC0002.png
加上参数重新启动之后,可以看到,有详细的信息了
DSC0003.png
2):配置文件
Mongodb支持从文件读取配置文件。指定配置文件可以使用-f--config选项
2:停止Mongodb
方法一:查看进程,使用kill命令;不能使用kill -9
方法二:在客户端进去,使用shutdown命令  

> use admin;  
switched to db admin
  

> db.shutdownServer();  
server should be down...
  


在主节点(primary)上运行shutdown命令时,服务器在关闭之前,会先等待备份节点追赶主节点以保持同步。这将回滚的可能性降至最低,但shutdown操作有失败的可能性。如几秒钟内没有备份节点成功同步,则shutdown操作失败,主节点不会停止运行。
3:日志
在启动mongod的时候,可以指定日志的级别,即(-v、-vv、-vvv、-vvvv、-vvvvv)或者在shell命令行执行命令修改  

mongodb/bin/mongod --dbpath mongodb/0707 --directoryperdb --fork -vvv   


日志级别越大,输出的日志越详细,调至5时,这时mongod会在日志中记录几乎所有的操作,包括每一个请求所处理的内容。
MongoDB默认记录耗时超过100毫秒的查询信息。如果100毫秒不适合需求,可以通过setProfilingLevel命令来改变,下面这条命令表示记录查询时间超过500毫秒的消息  

    > db.setProfilingLevel(1,500)  {
"was" : 0, "slowms" : 100, "ok" : 1 }  


如果想要日志分割,如按天存放,有两种方法
方法一:每天定时的执行kill -USR1 进程号,这样就可以看到,每执行一次kill -USR1 进程号,那么就会重新生成一个日志文件
DSC0004.png
方法二:在MongoDB的shell行执行,每执行一次都会产生一个新的日志文件  

    > db.adminCommand({"logRotate":1})  {
"ok" : 1 }  


要使分割日志生效,必须启动的时候使用--logpath,然后可以根据自己的需求,写shell或python脚本,然后crontab做成定时任务  
posted on 2017-07-07 14:27 Lemon_乐 阅读(...) 评论(...)  编辑 收藏

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-424172-1-1.html 上篇帖子: mongoDB与mongoose 下篇帖子: 【MongoDB】5.MongoDB与java的简单结合
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表