mongodb启动

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命令是为了确保已经解锁了。

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

时间: 2024-11-09 14:47:30

mongodb启动的相关文章

mongodb 启动步骤

mongodb启动步骤 1.在对应的目录下创建一个data的文件夹 2.打开cmd 跳转到bin路径下运行 (启动服务 运行 http://localhost:27017) D:\>cd D:\MongoDB\Server\3.0\bin D:\MongoDB\Server\3.0\bin>mongod --dbpath D:\MongoDB\Server\3.0\data 3.重新打开一个cmd 跳转到bin路径下运行 mongo D:\>cd D:\MongoDB\Server\3.

1. MONGODB启动&关闭

[前记]  最近由于公司系统改造:借用内存库来达到快速响应.公司借用mongodb数据库.下面是学习整理的note 从启动&关闭开始:至于安装这个太简单了. mongodb启动 mongodb服务器启动(跟postgresql数据库启动方式有点类似):是使用mongod命令.至于启动参数:可以使用mongod --help.mongod常用参数如下: --dbpath:指定数据目录.例如E:\mongodb\date\db.要确定该目录存在:不存在则创建.不然启动时会报目录不存在错误. --po

MongoDB启动配置等

目录: 一.mongoDB 启动配置 二.导出,导入,运行时备份 三.Fsync锁,数据修复 四.用户管理,安全认证 一.启动项 mongod --help C:\Windows\system32>mongod --help 1.常用配置项 --dbpath 指定数据库的目录,默认在window下是c:\data\db\ --port 指定服务器监听的端口号码,默认是27017 --fork 用守护进程的方式启动mongoDB --logpath 指定日志的输出路径,默认是控制台 --confi

mongodb启动出现问题解决方法。

之前MongoDB启动的时候是蛮正常的,不知道后来启动报错了,就把粘贴出来查询了.最后才知道是由于自己不正常的关闭导致的这个情况. --摘录:MongoDB非正常关闭后修复记录 mongod没有后台执行,在终端连接非正常断开后,再次执行mongod报错,如下所示: [[email protected] mongodb]# ./bin/mongod ./bin/mongod --help for help and startup options Thu Nov 17 22:42:49 Thu No

MongoDB启动及用户名密码设置

1.服务启动 下载后的安装步骤,请参见mongoDB安装详细教程 启动服务NET START MongoDB 关闭服务NET STOP MongoDB 启动客户端mongo MongoDB shell version v3.6.0 connecting to: mongodb://127.0.0.1:27017 MongoDB server version: 3.6.0 2.设置密码与用户权限 2.1 开启安全验证 方式一:在命令行输入mongod --auth --logpath "D:\Pr

ubuntu虚拟机mongodb启动和端口映射

环境: ubuntu 14.04.1 mongodb v3.4.1 虚拟机连接模式为nat连接 一.mongodb启动问题 更新了一下内核之后,在运行mongodb的时候出现了29 Data directory /data/db not found.的错误,时间久了不记得安装的配置了orz 查了一些资料,这里是因为mongodb默认的dbpath是/data/db,这个目录只能用root用户创建,创建后在权限上也比较麻烦,所以这里采用 sudo mongod --dbpath /var/lib/

MongoDB 启动多实例 和 MongoDB创建删除、备份、复制

MongoDB 启动多实例 和 MongoDB创建删除.备份.复制 在单台服务器资源充足的情况下启用多实例 创建数据和日志存放位置 # 数据存放位置 [[email protected] ~] mkdir -p /data/mongodb/mongodb1 #日志存放位置 [[email protected] ~] mkdir /data/logs [[email protected] ~] touch /data/logs/mongodb1.log 复制mongodb的配置文件 #复制原有的配

mongodb 启动相关问题

把公司mongodb升级之后,无法启动.查看日志,出现如下所示: 2016-11-29T14:22:09.382+0800 E NETWORK  [initandlisten] Failed to unlink socket file /tmp/mongodb-27029.sock errno:1 Operation not permitted 提示中的/tmp/mongodb-27-29.sock文件如下所示: 查看 mongod进程已经消失,但sock文件还在,决定删除该文件,如下所示: 再

mongodb启动不了解决方法

MONGODB无法启动的解决方法 遇到MongoDB突然无法启动,第一反应是删除mongod.lock.这个文件在MongoDB的数据库目录下,默认是/data/db.这是最常见的问题了,产生原因是MongoDB没有正常结束(比如被kill -9杀掉或是其他意外情况导致中断). 还一些其他情况会导致MongoDB无法启动.本文讨论的无法启动,是指:使用/etc/init.d/mongodb start或是sudo service mongdb start,提示mongodb start/runn

Mongodb 启动参数

使用下面命令可以查看服务的启动参数:@ mongod --help 或者mongod -h 其他命令参数详解:@ * 基本配置 ----------------------------------------------------------------------------- --quiet # 安静输出 --port arg # 指定服务端口号,默认端口27017 --bind_ip arg # 绑定服务IP,若绑定127.0.0.1,则只能本机访问,不指定默认本地所有IP --logp