侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

MongoDB的基本安装与管理命令脚本总结

数据库  /  管理员 发布于 5年前   382

安装
1. Linux安装MongoDB
1.1 创建数据目录和日志文件:

mkdir -p /data/node/touch /data/mongodb.log

1.2 安装mongodb:

tar zxf mongodb-linux-x86_64-2.4.9.tgz mv mongodb-linux-x86_64-2.4.9 /opt/mongodbecho "export PATH=$PATH:/opt/mongodb/bin" >>/etc/profilesource /etc/profile

1.3 创建新从节点配置文件:

cat >> ~/.mongodb.conf <<EOF
fork = tureport = 11000dbpath = /data/nodelogpath = /data/mongodb.loglogappend = trueEOF

1.4 启动MongoDB

mongod --config ~/.mongodb.conf

2. Windows安装MongoDB
2.1 下载并解压

mongodb-win32-x86_64-2008plus-2.4.9.zip

2.2 添加服务

# mongod -f d:\mongodb\mongodb.cfg --serviceName MongoBD --install

2.3 启动服务

# net start mongodb 

2.4 删除服务

# mongod --remove

2.5 MongoDB启动配置文件

mongodb.cfg -->logpath=d:\data\mongo.log dbpath=d:\datalogappend=trueauth=true#fork=true

管理
管理MongoDB无论是备份还是带有复制的多节点系统,都有快捷的方式。系统会自动完成各种配置。
(1)MongoDB是一个普通命令行程序,用mongod调用。
(2)MongoDB提供了内置的管理接口和监控功能,易与第三方监控包集成。
(3)MongoDB支持基本的,数据库级别的用户认证,包括只读用户,以及独立的管理员权限。
(4)多种方式备份MongoDB。

1.启动停止MongoDB
1.1 命令行启动
命令行启动,可以mongod --help查看所有选项。
(1)--dbpath 默认值为/data/db/。每个Mongod进程都需要独立的数据目录,要有三个mongod实例,必须要有三个独立的数据目录。mongodb启动时,会在数据目录喜爱创建mongod.lock文件,防止其他mongod进程使用该数据目录。
(2)--port
指定监听端口,默认为27017,运行多个mongod进程,需要指定不同的端口号。
(3)--fork
以守护进程运行mongodb,创建服务器进程。
(4)--logpath
指定日志输出路径,而不是输出命令行,它会覆盖已有文件,清除原来的日记记录。如果要保留,需要使用--logappend选项。
(5)--config
指定配置文件,加载命令行未指定的各种选项。
1.2 配置文件
MongoBD支持从文件获取配置信息。指定配置文件可以用-f或者--config选项。例如:

# mongod --config ~/.mongodb.confcat > ~/.mongodb.conf <<EOF
port = 10001fork = truelogpath = /data/mongodb.logdbpath = /data/node2logappend = trueEOF

1.3 停止MongoDB
数据库关闭方法:
(1)kill -2 SIGTERM或者kill -2 SIGINT,可以稳妥退出,会等到当前运行的操作或者文件预分配,关闭所有打开的连接,将缓存的数据刷新到磁盘,最后停止。
不能kill -9(SIGKILL),这样会导致数据文件损毁。
(2)使用管理命令{"shutdown" : 1}

> use admin> db.shutdownServer(); 

2.监控
2.1 使用管理接口
启动MongoDB时,会启动一个非常基本的HTTP服务器,该服务器监听的端口比主服务器大1000。呈现的信息可以通过shell查看,也可以通过web页面查看。
要利用好管理接口,需要用--reset选项开启REST支持。也可以在启动时使用--nohttpinterface关闭管理接口。
2.2 serverStatus
serverStatus呈现了MongoDB内部详细信息,比如服务器的版本,运行时间,当前连接数。

MongoDB shell version: 2.4.9connecting to: 127.0.0.1:10001/test> db.runCommand({serverStatus : 1})

"globalLock"表示全局写入锁占用了服务器多少时间(微秒)。"mem"包含服务器内存映射了多少数据,服务器进程的虚拟内存和常驻内存占用情况;
(1)"indexCounters"表示B树在磁盘检索和内存检索的次数;
(2)"backgroudFlushing"表示后台做了多少次fsync以及用了多少时间;
(3)"opcounters"包含了每种主要操作的次数。
2.3 mongostat
mongostat输出serverStatus提供的重要信息。每秒钟输出新的一行,比之前看到的静态计数实时性更好。分别为insert/s,commands/s,vsize和%locked。
2.4 第三方插件
支持Nagios,Munin,Ganglia,Cacti的MongbDB插件。

3.安全
MongoDB支持对单个连接的认证。
3.1 认证的基础知识
每个MongoDB实例中的数据库都可以有很多用户。开启认证后,只有数据库认证用户才能执行读写操作。
认证后,管理员可以读写所有的数据库,执行特定的管理命令。
开启安全认证前,需要有管理员帐号。

> use adminswitched to db admin> db.addUser("root", "root123");{  "user" : "root",  "readOnly" : false,  "pwd" : "81c5bca573e01b632d18a459c6cec418",  "_id" : ObjectId("530bd17622cceb4323a2b500")}> use testswitched to db test> db.addUser("test_user", "root123", true);{  "user" : "test_user",  "readOnly" : true,  "pwd" : "d436badec207e3821abbaf337fcbdd06",  "_id" : ObjectId("530bd24322cceb4323a2b501")}

在shell中创建只读用户将adduser的第三个参数设为true。调用addUser()必须对数据库有写权限。
addUser不仅可以增加新用户,还能修改用户口令或只读状态。
重启服务器,加入--auth选项,开启安全检查。

> use adminswitched to db admin> db.auth("root", "root123");1

3.2 认证的工作原理
数据库用户帐户以文档形式存储在system.users集合里面。

> use adminswitched to db admin> db.system.users.find();{ "_id" : ObjectId("530bd17622cceb4323a2b500"), "user" : "root", "readOnly" : false, "pwd" : "81c5bca573e01b632d18a459c6cec418" }

可以执行

db.system.users.remove({"user":"root"});

删除帐号。
用户认证时,服务器将认证和连接绑定来跟踪认证。
3.3 其他安装考虑
除了认证还有许多选项来锁定MongoDB实例。即便使用认证,MongoDB传输协议是不加密的。如需加密,需要使用SHH隧道或类似做客户端和服务器之间的加密。
MongoDB服务器建议布置在防火墙或内网中,但是如果需要被外部访问,使用--bindip选项,可以指定mongod绑定在本机IP地址。
可以用--noscripting完全禁止服务器端JavaScript的执行。


  • 上一条:
    MongoDB的主从复制及副本集的replSet配置教程
    下一条:
    MongoDB的聚合框架Aggregation Framework入门学习教程
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 分库分表的目的、优缺点及具体实现方式介绍(0个评论)
    • DevDB - 在 VS 代码中直接访问数据库(0个评论)
    • 在ubuntu系统中实现mysql数据存储目录迁移流程步骤(0个评论)
    • 在mysql中使用存储过程批量新增测试数据流程步骤(0个评论)
    • php+mysql数据库批量根据条件快速更新、连表更新sql实现(0个评论)
    • 近期文章
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2017-06
    • 2017-08
    • 2017-09
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-05
    • 2018-10
    • 2018-11
    • 2020-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-08
    • 2020-09
    • 2021-02
    • 2021-04
    • 2021-07
    • 2021-08
    • 2021-11
    • 2021-12
    • 2022-02
    • 2022-03
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-07
    • 2023-08
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-03
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客