MongDB
-dbpath为数据库存放路径命令,后面空格加路径(注意路径不能存在空格)
启动方式二:以windows服务方式安装MongoDB服务;
--fork 守护进程
执行命令行 mongod --install --logpath c:\mongodblog --dbpath d:\data\db
--logpath 为设置日志文件,日志文件路径必须指向文件而不是一个目录
Mongodb 删除
提供一个命令
mongodb --dbpath D:\MongoDB\win32\data --logpath D:\MongoDB\win32\mongodb.log -remove
当然也可以使用sc delete MongoDB来删除服务项
最好还是在注册表去找mongo的选项,并一一删除 重启在重新安装
- 检查从Mongodb的数据更新时间
- 如果所有的从Mongodb和主的时间差都超过10,这个时候不会关闭mongodb(在这种情况下面,我们可以通过配置timeoutSecs的方式来让从Mongodb完成数据的更新)
- 如果其中有一个从Mongodb与主服务时间差在10秒内,那么主服务器将会关闭,并且等待从Mongodb更新完成并关闭。
配置文件(外部配文件置):
mongod --config D:\mongodb\mongodb.config
mongodb.config文件内容:
port = 20000 dbpath = D:/mongodb/dbs logpath = D:/mongodb/logs.log
logappend = true
正确停止MongoDB:
mongo -port 20000 use admin db.shutdownServer();
安全认证:
1.添加用户
db.addUser(username, password,[ readOnly=false])
[ readOnly=false]参数可选,如果为true,用户只有查询权限。
admin数据库下面添加的用户 被视为超级用户(管理员)。
2.用户认证 db.auth(username, password)
3.重启服务端,加入 --auth命令选项 开启安全检查
mongod --dbpath D:/mongodb/db --port 20000 --logpath = D:/mongodb/logs.log --logappend --auth
例子:
1. 添加一个超级用户:
a.添加用户
>mongo -port 20000 > use admin switched to db admin > db.addUser("admin","admin123"); { "n" : 0, "connectionId" : 4, "err" : null, "ok" : 1 } { "user" : "admin", "readOnly" : false, "pwd" : "6f09f2f35e3a5e225af66fe3868e4fb7", "_id" : ObjectId("50114eb027e4ae802c6bda45") } >
b.认证用户
> use admin switched to db admin > db.auth("admin","admin123"); 1
c.重启服务端 加入--auth参数
登录后不能正常查询
>mongo --port 20000 test MongoDB shell version: 2.0.4 connecting to: 127.0.0.1:20000/test > db.test.find(); error: { "$err" : "unauthorized db:test lock type:-1 client:127.0.0.1", "code" : 10057 } >
d.使用用户名 密码登录
>mongo --port 20000 admin -u admin -p MongoDB shell version: 2.0.4 Enter password: connecting to: 127.0.0.1:20000/admin > use test switched to db test > db.test.find(); >
2.添加一个普通用户
> use test switched to db test > db.addUser("abc","abc123"); { "n" : 0, "connectionId" : 9, "err" : null, "ok" : 1 } { "user" : "abc", "readOnly" : false, "pwd" : "30fc2d5cc077f71cc81d3c82afc9d361", "_id" : ObjectId("501157ed1d2319c203e2e8d3") }
认证:
> db.auth("abc","abc123"); 1
用户名 密码登录
mongo --port 20000 test -u abc -p MongoDB shell version: 2.0.4 Enter password: connecting to: 127.0.0.1:20000/test > db.test.find();
查询用户
db.system.users.find()
删除用户:
db.system.users.remove({user:"admin"});
限制ip访问:
使用--bindip 参数, 只能被--bindip参数指定的ip地址访问.
如:mongod --bindip localhost
数据文件备份:
>mongodump -port 20000 -d test -u admin -p-d test
备份的数据库名称会在当前目录下创建一个dump目录,用于存放备份出来的文件,当然也可以(-o)指定备份存放的目录。
mongodump -port 20000 -d test -o c:/ -u admin -p
mongodump --help 查看其他选项
数据恢复:
>mongorestore -port 20000 -d test --directoryperdb c:/test/ --drop -u admin -p
--directoryperdb指定备份的目录
--drop 恢复的时候先删除
例:
a,先删除test数据库
> use test; switched to db test > db.dropDatabase(); { "dropped" : "test", "ok" : 1 } > show dbs; admin 0.03125GB local (empty)
b.恢复
mongorestore -port 20000 -d test --directoryperdb c:/test/ --drop -u admin -p
监控:
1.serverStatus命令
use admin db.serverStatus();
db.serverStatus(); { "host" : "admin:20000", "version" : "2.0.4", "process" : "mongod", "uptime" : 16, "uptimeEstimate" : 14, "localTime" : ISODate("2012-07-26T13:26:38.375Z"), "globalLock" : { "totalTime" : 15421875, "lockTime" : 0, "ratio" : 0, "currentQueue" : { "total" : 0, "readers" : 0, "writers" : 0 }, "activeClients" : { "total" : 0, "readers" : 0, "writers" : 0 } }, "mem" : { "bits" : 32, "resident" : 15, "virtual" : 57, "supported" : true, "mapped" : 0 }, "connections" : { "current" : 1, "available" : 19999 }, "extra_info" : { "note" : "fields vary by platform", "page_faults" : 4032, "usagePageFileMB" : 19, "totalPageFileMB" : 3871, "availPageFileMB" : 2878, "ramMB" : 1977 }, "indexCounters" : { "note" : "not supported on this platform" }, "backgroundFlushing" : { "flushes" : 0, "total_ms" : 0, "average_ms" : 0, "last_ms" : 0, "last_finished" : ISODate("1970-01-01T00:00:00Z") }, "cursors" : { "totalOpen" : 0, "clientCursors_size" : 0, "timedOut" : 0 }, "network" : { "bytesIn" : 220, "bytesOut" : 261, "numRequests" : 3 }, "opcounters" : { "insert" : 0, "query" : 1, "update" : 0, "delete" : 0, "getmore" : 0, "command" : 4 }, "asserts" : { "regular" : 0, "warning" : 0, "msg" : 0, "user" : 0, "rollovers" : 0 }, "writeBacksQueued" : false, "ok" : 1
返回字段说明:
uptime: 服务器运行时间(秒)。
localTime: 服务器本地时间。
mem: 服务器内存隐身了多少数据,服务器进程的虚拟内存和常驻内存占用情况(单位:MB)。
connections: 当前连接数。
opcounters: 操作统计。
globalLock:表示全局写入锁占用的服务器时间(单位:微妙) ;
backgroundFlushing: 表示后台做了多少次fsync以及用了多少时间。
asserts:统计断言的次数。
2.mongostat.exe
bin目录下。