1 回答

TA贡献1874条经验 获得超12个赞
1.启停止MongoDB
执行mongod,启MongoDB服务器mongod选项命令执行 mongod --help
主要选项:
--dbpath
指定数据目录默认值C:\data\db每mongod进程都需要独立数据目录要3mongod
实例必须3独立数据目录mongod启数据库目录创建mongod.lock文件
文件用于防止其mongod纯净使用该数据目录
--port
指定服务器监听端口号默认端口27017.要运行mongod进程则要给每指定同端口号
--logpath
指定志输路径文件夹读写权限系统文件存创建已文件覆盖掉
清除所原志记录想要保留原志需使用--logappend选项
--config
指定配置文件加载命令行未指定各种选项
2.配置文件启
MongoDB支持文件获取配置信息.需要配置非或者要自化MongoDB启用.
指定配置文件用-f或--config选项.
:
mongod --config refactorConfig.txt
refactorConfig.txt内容:
#start MongoDB
port = 10000
dbpath = "f:\mongo\db"
logpath = "f:\mongo\log\MongoDB.txt"
rest = true
配置文件命令行功能
mongod --dbpath "f:\mongo\db" --logpath "f:\mongo\log\MongoDB.txt" --rest --port 10000
配置文件特点:
a.#行注释
b.指定选项语种"选项=值"形式.选项区写.
c.命令行--rest关选项,值要设true
3.停止MongoDB
使用shutdown命令{"shutdown":1},命令要admin数据库使用.shell提供辅助函数:
use admin
db.shutdownServer()
4. 监控
使用管理接口,默认情况,启mongod启基本http服务器,该服务默认端口28017.浏览器输入
localhost:28017.些链接需要mongod启,用--rest选项启rest支持 才能进.启rest支持,
mongod启使用--nohttpinterface关闭管理接口.
5.serverStatus
要获取运行MongoDB服务器统计信息,基本工具serverStatus命令
db.runCommand({"serverStatus":1})
serverStatus返键解释:
"globalLock"值表示全局写入锁占用服务器少间(单位微秒)
"mem"包含服务器内存映射少数据,服务器进程虚拟内存驻内存占用情况(单位MB)
"indexCounters"表示B树磁盘检索("misses")内存检索("hits")数.比值始升,要考虑加内存.
"backgroundFlushing"表示台做少fsync及用少间
"opcounters"文档包含每种主要操作数
"asserts"统计断言数
6.mongostat
serverStatus虽强,服务器监控说容易.MongoDB提供mongostat
mongostat输些serverStatus提供重要信息,每秒输新行,比前看静态数据实性要.
输列,别 inserts/s commands/s vsize %locked,与serverStatus数据相应.
使用第三插件进行数据库监控.
7.安全认证
认证基础知识
每MongoDB实例数据库都用户,启安全性检查,数据库认证用户才能执行读或写操作.
认证文,MongoDB普通数据作admin数据库处理.admin数据库用户称超级用户(管理员).
认证,管理员读写所数据库,执行特定管理命令,listDatabasesshutdown.
启安全检查前,至少要管理员帐号,shell连接没启安全检查服务器
面添加管理员refactor_root,test数据库添加两普通账号,其读权限.shell创建读用户要
addUser第三参数设true.调用addUser必须响应数据库写权限.所数据库调用addUser,
没启安全检查.
重启数据库,重启加入 --auth 命令行选项,启安全检查
第连接,能test数据库执行任何操作,作读用户认证,能查找,能插入数据.能读写用户认证,能查找插入
数据,能使用show dbs 列举所数据库.超级用户认证,所欲.
8.认证工作原理
数据库用户帐号文档形式存储system.users集合.文档结构
{
"_id" : ObjectId("5006a037dff37e149322fd83"),
"user" : "refactor_read_write",
"readOnly" : false,
"pwd" : "5a84584ac51d3f702461fce4c46b0d6b"//根据用户名密码散列
}
知道用户信息何存储及存储位置,进行管理工作.
删除帐户:
> db.system.users.remove({"user":"refactor_read"})
> db.auth("refactor_read","refactor")
0
用户认证,服务器认证连接绑定跟踪认证,说驱程序或工具使用连接池或故障切换
另节点,所认证用户必须每新连接重新认证.
MongoDB传输协议加密,需加密,用ssh隧道或者类似技术做客户端服务器间加密.
建议MongoDB服务器放防火墙或放应用服务器能访问网络.MongoDB必须能外面访问,
建议使用--bindip选项,指定mongod绑定本ip址.:能本机应用服务器访问,使用
mongod --bindip localhost
默认情况MongoDB启简单http服务器,便于查看运行,锁,复制等面信息,要想公些信息,用
--nohttpinterface关闭管理接口.
用--noscripting完全禁止服务端javascript执行
9.备份修复
MongoDB所数据都存放 数据目录 ,默认目录C:\data\db\.启MongoDB候用--dbpath指定数据目录.
论数据目录哪,都存放着MongoDB所数据.要想备份MongoDB,要简单复制数据目录所文件即.
除非服务器做完整fsync,允许写入,否则运行MongoDB创建数据目录副本并安全,备份能已经
破损,需要修复.
运行MongoDB创建数据目录副本并安全,所先服务器关,再复制数据目录.关闭数据库要停止业务.
10.mongodumpmongorestore
mongodump种能运行备份.mongodump运行MongoDB做查询,所查文档写入磁盘.
mongodump般客户端,所供运行MongoDB使用,即便处理其请求或执行写入没问题.
mongodump使用普通查询机制,所产备份定服务器数据实快照.服务器备份程处理写入,非明显.
mongodump备份查询其客户端性能产影响.
mongodump --help 获帮助
mongorestore备份恢复数据工具.
mongorestore获取mongodump 输结,并备份数据插入运行MongoDB实例.
:数据库test备份backup目录
mongodump -d test -o backup
使用mongorestore 恢复testNew 数据库
mongorestore -d testNew --drop backup/test/
-d指定要恢复数据库.--drop指恢复前删除集合(若存),否则数据与现集合数据合并,能覆盖些文档.
使用mongorestore --help获帮助信息
11.fsync锁
虽使用mongodumpmongorestore能停机备份,却失获取实数据视图能力.MongoDBfsync命令
能MongoDB运行复制数据目录损坏数据.
fsync命令强制服务器所缓冲区写入磁盘.选择锁住址数据库进步写入,知道释放锁止.写入锁让
fsync备份发挥作用关键.
shell,强制执行fsync并获写入锁:
db.runCommand({"fsync":1,"lock":1})
,数据目录数据致,且数据实快照.锁,安全数据目录副本作备份.要数据库运行
快照功能文件系统,比LVM,EBS,用,拍数据库目录快照快.
备份,解锁:
db.$cmd.sys.unlock.findOne()
db.currentOp()
运行db.currentOp()确保已经解锁(初请求解锁花点间)
fsync命令,能非灵备份,用停掉服务器,用牺牲备份实性能.要付代价些写入操作
暂阻塞.唯耽误读写能保证实快照备份式通服务器备份.
12.属备份
虽面备份式灵,都没服务器备份.复制式运行MongoDB,前面提备份技术仅能用
主服务器,用服务器.服务器数据几乎与主服务器同步.太乎属服务器性能或者能能读写,
于能随意选择面3种备份式:关停,转存或恢复工具或fsync命令.服务器备份MongoDB推荐备份式.
13.修复
MongoDB存储式能保证磁盘数据能用,能损毁.MongoDB内置修复功能试着恢复损坏数据文件.
未停止MongoDB应该修复数据库.修复数据库式简单 mongod --repair 启服务器.
修复数据库实际程简单:所文档导马导入,忽略效文档.完,重建索引.数据量,花间,
所数据都要验证,所索引都要重建(MongoDB 1.8 版本引入志系统,使修复间打打缩短).
修复能比修复前少些文档,损坏文档删除.
修复数据库能起压缩数据作用.闲置控件(删除体积较集合,或删除量文档腾空间)修复重新利用.
修复运行服务器数据库,要shell用repairDatabases.
use test
db.repairDatabase()
- 1 回答
- 0 关注
- 112 浏览
添加回答
举报