启动和停止MongoDB
1、从命令行启动:从mongod启动。前面已经介绍过了。通过mongod --help可以查看其它的配置。
2、配置文件:通过-f 或者--config 指定配置文件。
>mongod --config ~/.mongodb.conf
配置文件:
#Start MongoDB as a daemon on port 5586
port=5586
fork=true
logpath=mongodb.log
3、停止mongodb:
- 服务器作为前台进程运行早终端——ctrl-c
- kill -2 10014(PID)、kill 10014
- db.shutdownServer();
监控
- http监视器:其端口号比主端口号大1000;可以看到断言、锁、索引和复杂等相关信息。
- serverStatus:
输入以下命令:
>db.serverStatus()
这个函数可以获取到mongodb的服务器统计信息,其中包括 :全局锁,索引,用户操作行为等等这些统计信息,对管理员来说非常重要。
- mongostat——输出一些serverStatus提供的重要信息。每秒钟输出新的一行。
安全和认证——用户认证
采用addUser添加用户,其中在admin数据库下添加的用户视为超级用户(即管理员)。
在开启安全检查之前,一定要至少有一个管理员账号。没有开启安全检查之前,可以对所有数据库调用addUser。
addUser不仅可以添加用户,还能修改用户口令和读写状态。
重启服务器,加入--auth命令,开启安全检查。
如下图:第一次连接的时候,不能对test数据库执行任何操作。
test_user 不能使用show dbs ,只有管理员root认证之后,才能对所有数据库执行任意操作。
认证原理:
数据库的用户账号以文档的形式存在system.users集合中。文档结构如下:
删除用户:
备份和恢复
- 直接复制
在服务器运行的情况下直接copy是很有风险的,可能copy出来时,数据已经遭到破坏,唯一能保证的就是要暂时关闭下服务器,copy完后重开。
- mongodump和mongoretore
这个是mongo给我们提供的内置工具,很好用,能保证在不关闭服务器的情况下copy数据。
D盘建立一个backup文件夹用于存放test数据库。
mongorestore 恢复,它是不用关闭机器的。 drop选项,将test数据恢复之前先删除原有数据库里面的数据,可以通过help查看。
- 主从复制(以后介绍)
- fsync 和锁
fsync命令强制服务器将所有缓存区写人磁盘,还可以通过上锁阻止对数据库的进一步写人,直到释放锁为止。
fsync+ lock首先会把缓冲区数据暴力刷入硬盘,然后给数据库一个写入锁,其他实例的写入操作全部被阻塞,直到fsync
+lock释放锁为止。
加锁: db.runCommand({"fsync":1,"lock":1})
释放锁: db.$cmd.unlock.findOne()
- 修复
当机器出故障,又恰巧没有备份时,mongodb内置的数据修复功能会试着恢复损坏的数据文件。
未能正常停止mongodb应修复数据库。
>mongod --repair
其过程很简单:将所有文档导出然后马上导入,忽略无效文档。完成之后,重建新的索引。
修复运行中的服务器上的数据库,要在shell中用repairDatabase。
>db.repairDatabase()