MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可护展的高性能数据存储解决方案。MongoDB是一款分布式文档数据库,支持类似关型数据库的主从结构,文档以二进制Json形式存储,无锁,无事务,有索引。

1.  MongoDB的启动与停止

MongoDB的启动之前已经谈过,但是需要注意的MongoDB在启动时有很多可配置的启动选项。在命令行运行mongod –help可以查看所有选项。

其中有一项是--config,可以支持从文件中获取配置项信息。例如:

1 D:\> mongod --config mongodb.conf

配置文件中的内容如下:

1 port = 5586
2
3 logpath = mongodb.log
4
5 …

注意:文件中以#开头的行是注释;指定选项的语法就是这种“选项=值”的形式,其中选项是区分大小写的;命令行中那些如--fork的开关选项,其值要设为true。

一种稳妥的停止MongoDB服务的方式就是使用shutdown命令,即{“shutdown” : 1},这是管理命令,要在admin数据库下使用。shell提供了辅助函数,如下:

1 >use admin
2
3 switched to db admin
4
5 >db.shutdownServer();
6
7 server should be down…

若MongoDB服务器是最为前台进程运行在终端,那么可以直接关闭命令行窗口即可。

2. 安全和认证

每个MongoDB实例中的数据库可以有许多用户,如果开启了安全性检查,则只有数据库认证用户才能执行读或者写操作。在数据库中添加用户,如下所示:

1 >use test
2
3 >db.addUser(“test_user”, “efgh”)

addUser()函数中的第三个参数为可选项true或者false,表示该用户是否为只读用户。

注意:addUser不仅能添加用户,还能修改用户口令或者只读状态。

要开启安全性检查,重启服务器,同时加--auth命令行选项。然后通过shell重新连接数据库,操作如下:

1 >use test
2 >db.auth(“test_user”, “efgh”)

之后用户就可以在自己的权限范围内进行操作了。

数据库的用户账户以文档的形式存储在system.users集合里面。文档的结构如下:

1 {“user” : username, “readOnly” : true, “pwd” : password hash}

其中password hash是根据用户名和密码生成的散列。

用户认证时,服务器将认证和连接绑定来跟踪认证。所以如果驱动程序或是工具使用了连接池或是因故障切换到另一个节点,所有认证用户必须对每个新连接重新认证。有的驱动程序能够将这步透明化,但要是没有,就得手动完成了。

除了认证还有许多选项值得考虑来锁定MongoDB实例。建议将MongoDB服务器布置在防火墙后或者布置在只有应用服务器能访问的网络中。但要是MongoDB必须能被外面访问到的话,建议使用—bindip选项,可以指定mongod绑定到的本地IP地址。例如,只能从本机应用服务器访问,可以运行“mongod –bindip localhost”。

3. 数据文件备份

MongoDB的所有数据都在数据目录(/data/db/)下,备份MongoDB就是创建数据目录中所有文件的副本。但是在运行MongoDB时复制数据目录是不安全的。

Mongodump是MongoDB自带的工具,它能在运行MongoDB时备份数据。用法如下:

1 D:\> mongodump -d test -o backup

-d指定了要备份的数据库,-o指定了备份文件所在的目录,这里会自动创建该目录。

MongoDB还提供了从备份中恢复数据的工具mongorestore。用法如下:

1 D:\> mongorestore -d foo --drop backup/test/

-d指定了要恢复的数据库,--drop代表在恢复前删除集合(若存在)。否则数据就会与现有集合数据合并,可能会覆盖一些文档。

虽然使用mongodump和mongorestore能不停机备份,但有两个问题。

(1)       mongodump使用普通的查询机制,所以产生的备份不一定是服务器数据的实时快照。

(2)       mongodump备份时的查询会对其他客户端的性能产生不利影响。

所以还有MongoDB的fsync命令能在MongoDB运行时复制数据目录还不会损毁数据。用法如下:

1 >use admin
2 >db.runCommand({“fsync” : 1, “lock” : 1});

至此,数据目录的数据就是一致的,且为数据的实时快照,因为上了写入锁,可以安全地将数据目录副本用做备份。备份好了,就要解锁,如下:

1 >db.$cmd.sys.unlock.findOne();
2 >db.currentOp();

运行fsync命令是为了确保已经解锁了。

唯一不耽误读写还能保证实时快照的备份方式就是通过从服务器备份。

mongodb启动的更多相关文章

  1. Mongodb启动命令mongod参数说明

    Mongodb启动命令mongod参数说明 mongod的主要参数有: 基本配置 ----------------------------------------------------------- ...

  2. MongoDB启动配置等

    目录: 一.mongoDB 启动配置 二.导出,导入,运行时备份 三.Fsync锁,数据修复 四.用户管理,安全认证 一.启动项 mongod --help C:\Windows\system32&g ...

  3. mongoDB启动参数备忘

    本文转载 Mongodb启动命令mongod参数说明   mongod的主要参数有:    基本配置   ----------------------------------------------- ...

  4. 安装MongoDB启动时报错‘发生系统错误2’的解决办法

    安装数据库mongodb启动时报"发生系统错误2". 这个问题是如果你之前已经装过一次,并且两次安装目录不同,就绝对会碰到的,因为你之前安装的路径已经在注册表中生成了,并没有随着你 ...

  5. 【mongodb系统学习之五】mongodb启动最常用参数

    五.mongodb启动时其他常用参数的使用(都是选用): 1).--logappend,指定日志的写入方式为追加,强烈建议使用: 2).--port,指定mongodb的端口号,当不使用这个参数的时候 ...

  6. MongoDB启动报错 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability. 【转】

    之前MongoDB启动的时候是蛮正常的,不知道后来启动报错了,就把粘贴出来查询了.最后才知道是由于自己不正常的关闭导致的这个情况. --摘录:MongoDB非正常关闭后修复记录 mongod没有后台执 ...

  7. MongoDB启动及用户名密码设置

    1.服务启动 下载后的安装步骤,请参见mongoDB安装详细教程 启动服务NET START MongoDB 关闭服务NET STOP MongoDB 启动客户端mongo MongoDB shell ...

  8. mongodb启动命令与端口设置

    一.mongodb安装和配置 1.创建tools目录,用于存放安装包 cd /usr/local mkdir -p tools cd tools 2.下载mongodb包(其它版本请自行下载) wge ...

  9. mongodb启动后台服务

    将MongoDB部署在服务器机子上时mongodb的实例应为后台服务进行的方式运行,而非前台进程,否则远程会话一关闭mongodb也跟着关闭了.本文介绍mongodb后台服务进程开启和关闭的操作. 开 ...

  10. 【笔记】mongodb启动不了:child process failed, exited with error number 100

    今天在启动mongodb的时候,发现起不来,报错:child process failed, exited with error number 100然后先去/var/log/mongo/mongod ...

随机推荐

  1. ACdream 1064 完美数

    数位dp. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #incl ...

  2. JQ中的clone()方法与DOM中的cloneNode()方法

    JQ中的clone()方法与DOM中的cloneNode()方法 cloneNode()定义和用法 cloneNode()方法创建节点的拷贝,并返回该副本. 语法: node.cloneNode(de ...

  3. 第五十五节,IO多路复用select模块加socket模块,伪多线并发

    IO多路复用select模块加socket模块,伪多线并发,并不是真正的多线程并发,实际通过循环等待还是一个一个处理的 IO多路复用,lo就是文件或数据的输入输出,IO多路复用就是可以多用户操作 IO ...

  4. Sass与Compress实战:第七章

    概要:将介绍Compass如何让你从本地开发原型轻松转移到生产环境的网址或Web应用中. 本章内容: ● 生成资源URL的最佳实践 ● 撰写无需Web服务器的样式表 ● 在浏览器中进行设计的技巧 ● ...

  5. 数据库中,char 与 varchar2 的区别

    区别1: char 是定长的字符串 varchar2 是变长的字符串 区别2: name char(10)   zhangsan__ 如果实际长度不足10,使用空格补齐   name varchar2 ...

  6. json解析的函数eval_r() 和 JSON.parse()

              eval_r()解析的字符串格式是'({"data":"hello","num":"5"})'   ...

  7. iptables允许FTP

    在iptables里设置允许访问ftp(建立连接,数据传输) 由于ftp服务在建立连接和传输数据时,使用的时不同的端口,建立连接的端口20.21,数据传输的端口可以自定义: 修改ftp配置文件,指定用 ...

  8. kettle 连接Hadoop

    http://wiki.pentaho.com/display/BAD/Additional+Configuration+for+YARN+Shims Copy *-site.xml Cluster ...

  9. 对于querystring取值时候发生+号变空格的问题

    今天遇到这个问题,在网上找了几个答案,解决了问题,很高兴,所以贴出来给大家分享一下: URL如下 http://127.0.0.1/test/test.aspx?sql= and id='300+' ...

  10. 2016 ACM/ICPC Asia Regional Dalian ICPC大连现场赛

    讲道理我挺想去大连的…… 毕竟风景不错…… 而且这次能去北京也是靠大连网络赛这一场拉开的优势…… 一道补图最短路一道数学推论简直爽爆…… 当然 除了这一场 其他场都非常划水…… 上次看到别人的博客用这 ...