• MongoDB的管理-深度长文


    (1) 启动和停止MongoDB;

    Ubuntu18下启动关闭MongoDB
    启动MongoDB:
    方法一:
    systemctl start mongod.service
    在这里插入图片描述
    方法二:
    在MongoDB的安装目录下执行
    ./bin/mongod -f /data/mongod
    在这里插入图片描述
    上面的截图中,是以脚本的方式启动mongodb服务。在/data/mongod.conf配置文件中,配置了以下内容。

    1.	#日志文件位置  
    2.	logpath=/data/db/journal/mongodb.log  
    3.	   
    4.	# 以追加方式写入日志  
    5.	logappend=true  
    6.	   
    7.	# 是否以守护进程方式运行  
    8.	fork=true  
    9.	   
    10.	# 默认27017  
    11.	#port = 27017  
    12.	   
    13.	# 数据库文件位置  
    14.	dbpath=/data/db  
    15.	   
    16.	# 启用定期记录CPU利用率和 I/O 等待  
    17.	#cpu = true  
    18.	   
    19.	# 是否以安全认证方式运行,默认是不认证的非安全方式  
    20.	#noauth = true  
    21.	#auth = true  
    22.	   
    23.	# 详细记录输出  
    24.	#verbose = true  
    25.	   
    26.	# Inspect all client data for validity on receipt (useful for  
    27.	# developing drivers)用于开发驱动程序时验证客户端请求  
    28.	#objcheck = true  
    29.	   
    30.	# Enable db quota management  
    31.	# 启用数据库配额管理  
    32.	#quota = true  
    33.	# 设置oplog记录等级  
    34.	# Set oplogging level where n is  
    35.	#   0=off (default)  
    36.	#   1=W  
    37.	#   2=R  
    38.	#   3=both  
    39.	#   7=W+some reads  
    40.	#diaglog=0  
    41.	   
    42.	# Diagnostic/debugging option 动态调试项  
    43.	#nocursors = true  
    44.	   
    45.	# Ignore query hints 忽略查询提示  
    46.	#nohints = true  
    47.	# 禁用http界面,默认为localhost:28017  
    48.	#nohttpinterface = true  
    49.	   
    50.	# 关闭服务器端脚本,这将极大的限制功能  
    51.	# Turns off server-side scripting.  This will result in greatly limited  
    52.	# functionality  
    53.	#noscripting = true  
    54.	# 关闭扫描表,任何查询将会是扫描失败  
    55.	# Turns off table scans.  Any query that would do a table scan fails.  
    56.	#notablescan = true  
    57.	# 关闭数据文件预分配  
    58.	# Disable data file preallocation.  
    59.	#noprealloc = true  
    60.	# 为新数据库指定.ns文件的大小,单位:MB  
    61.	# Specify .ns file size for new databases.  
    62.	# nssize =  
    63.	   
    64.	# Replication Options 复制选项  
    65.	# in replicated mongo databases, specify the replica set name here  
    66.	#replSet=setname  
    67.	# maximum size in megabytes for replication operation log  
    68.	#oplogSize=1024  
    69.	# path to a key file storing authentication info for connections  
    70.	# between replica set members  
    71.	#指定存储身份验证信息的密钥文件的路径  
    72.	#keyFile=/path/to/keyfile  
    

    关闭MongoDB:
    方法一:在shell模式下可以直接通过db.shutdownServer()关闭
    在这里插入图片描述

    方法二:还可以直接通过kill -9 进程号杀死mongodb的进程
    方法三:mongod --config=/data/mongod.conf –shutdown
    方法四:systemctl stop mongod.service

    (2)访问控制;

    创建管理员用户

    1. 首先进入mongo shell 命令行模式下

    2. 选择admin库,创建root用户
      在这里插入图片描述

    3. 认证
      db.auth(“username”,”password”)
      在这里插入图片描述

    4. 修改mongo.conf文件,添加以下内容
      security:
      authorization:enabe
      在这里插入图片描述
      保存退出后,需要重启mongod服务。

    5. 登录服务
      mongo -u root-p root –authenticationDatabase admin

    在这里插入图片描述

    还可以修改用户的密码:
    db.changeUserPassword(“username”,”password”)

    在这里插入图片描述
    删除用户

    在这里插入图片描述
    用户的内置角色

    • 数据库用户角色 read、readWrite;

    • 数据库管理角色 dbAdmin、dbOwner、userAdmin

    • 集群管理角色 clusterAdmin、clusterManager、clusterMonitor hostManager

    • 备份恢复角色 backup、restore

    • 所有数据库角色,只用于admin数据库
      readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase

    • 超级用户角色 root 内部角色 __system

    (3)命令行操作;

    数据库相关

    1. show dbs: 显示数据库列表。
    2. show collections:显示当前数据中的集合
    3. show users: 显示用户
    4. use yourDB: 切换到当前数据库
    5. db.help() :显示数据库操作命令
    6. db.yourCollection.help():显示集合操作命令,yourCollection是集合名字
    7. db.createCollections(‘teacher’):
      创建Collection,其实MongoDB其实在插入数据的时候也会自动创建对应的集合。

    插入数据
    插入数据也会自动创建集合
    插入有两种方式:insert和save
    两个都可以不指定_id的值,会自动生成唯一_id

    两者的区别是

    • insert时,如果_id已存在,不会再次插入新的值
    • save时,如果_id已存在,会更新原来的值,也就是覆盖

    db.student.insert({_id:1,sname:'zhangsan',sage:20}) # 向student表中插入一条数据
    在这里插入图片描述

    删除文档;
    db.student.remove({sname:'zhangsan'}) # 删除student表中sname='zhangsan'

    在这里插入图片描述

    修改文档;
    语法格式: db.youCollection.update(criteria, objNew, upsert, multi )

    • criteria: update的查询条件,类似sql update查询内where后面的。
    • objNew : update的对象和一些更新的操作符(如$set)等,也可以理解为sql update查询内set后面的。
    • upsert : 如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
    • multi: mongodb默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。默认false,只修改匹配到的第一条数据。
    • 其中criteria和objNew是必选参数,upsert和multi可选参数

    在这里插入图片描述

    查看数据
    db.youCollection.find(criteria, filterDisplay)
    criteria :查询条件,可选
    filterDisplay:筛选显示部分数据,如显示指定列数据,可选
    db.youCollection.find(criteria, filterDisplay).pretty()表示格式化输出

    删除collection

    1. db.teacher.drop()

    退出shell命令
    exit或Ctrl+c

    (4)进程控制;

    查看MongoDB当前正在做哪些操作
    db.currentOp()
    在这里插入图片描述

    查看当前有多少个连接
    db.serverStatus().connections
    在这里插入图片描述

    结束进程
    db.killOp(1234)
    等同于:db.$cmd.sys.killop.findOne{op:1234}

    (5)MongoDB的监控;

    Mongostat是mongodb自带的状态监测工具,在命令行下使用,他会监测固定时间mongodb的当前运行状态,并输出。
    在这里插入图片描述
    inserts/s每秒插入的次数
    query/s,每秒查询的次数;update/s,每秒更新的次数,delete/s,每秒删除的次数;command/s每秒的命令数,conn当前连接数,time是时间戳,vsize,虚拟内存使用量,res代表物理内存使用量,单位是MB。

    db.status() #查看分区状态
    在这里插入图片描述
    获取服务器状态,connections中有当前连接数和可用连接数。
    在这里插入图片描述

    mongotop用来跟踪mongodb的实例,提供每个集合的统计数据。默认情况下,mongotop每秒刷新一次。
    ns:包含数据库命名空间
    db:包含数据库的名称。名为 . 的数据库针对全局锁定,而非特定数据库。
    total:mongod花费的时间工作在这个命名空间提供总额。
    read:mongod花费在此命名空间执行读操作的时间,
    write:mongod花费在这个命名空间进行写操作的时间,

    在这里插入图片描述

    (6)MongoDB数据的导入、导出;

    mongodb数据的导出
    1、 导出工具:mongoexport
    2、 概念:MongoDB的mongoexport工具可以将一个collection导出成JSON或者CSV格式的文件。
    3、 语法:
    mongoexport -d dbname -c collectionname -o file –type json/csv -f field
    -d dbname: 数据库名字
    -c collectionname: collection名字
    -o 指定导出的文件路径和文件名
    -type 导出文件类型,如果是csv,需要指定字段名
    -f 后加字段名(例如:_id,user_id,user_name,age,status)
    在这里插入图片描述

    mongodb数据导入: mongoimport
    1、 语法:
    mongoimport -d dbname -c collectionname --file filename --headerline --type json/csv -f field

    -d :数据库名
    -c :collection名
    –type :导入的格式默认json
    -f :导入的字段名
    –headerline :如果导入的格式是csv,则可以使用第一行的标题作为导入的字段
    –file :要导入的文件

    2、 实例
    sudo mongoimport -d School-c student --file /usr/local/mongodb/student.json --type json在这里插入图片描述

    导入结果查看

    在这里插入图片描述
    (7)MongoDB备份、还原;
    MongoDB数据库备份
    语法:
    mongoddump -h dbhost -d dbname -o dbdirectory

    参数说明:
    -h: MongoDB服务器所在地址,例如127.0.0.1,当然可以指定端口号:127.0.0.1:27017
    -d: 备份数据库实例
    -o: 备份数据存放的位置,例如/data/db/mongodump,需要注意的是这个目录需要提前建立

    mongodump -h 127.0.0.1 -d School -o /data/db/mongodump
    在这里插入图片描述
    去查看一下是否备份成功
    在这里插入图片描述
    备份成功

    MongoDB数据库恢复
    语法格式:
    mongorestore -h dbhost -d dbname --dir dbdirectory

    参数说明:
    -h: MongoDB服务器所在地址,例如127.0.0.1,当然可以指定端口号:127.0.0.1:27017
    -d: 恢复数据库实例
    –dir: 备份数据存放的位置,例如/data/db/mongodump/School
    –drop: 这个参数的作用是在恢复的时候,先删除当前数据,再恢复备份的数据。

    mongorestore -h 127.0.0.1:27017 -d School --dir /data/db/mongodump/School

    先删库,再恢复
    在这里插入图片描述

    恢复School库
    mongorestore -h 127.0.0.1:27017 -d School --dir /data/db/mongodump/School
    在这里插入图片描述

    查看是否恢复

    在这里插入图片描述

    恢复成功。

  • 相关阅读:
    npm WARN saveError ENOENT: no such file or directory的解决方法
    简单的webpack打包案例
    JS中用encodeURIComponent编码,后台JAVA解码
    说 Redis
    let the cat out of the bag
    简述C# volatile 关键字
    螃蟹怎么分公母?是用冷水上锅还是热水蒸呢?
    Mysql截取字符串 更新字段的部分内容
    Ajax 获取数据attr后获取不到
    如何限制域名访问?白名单机制
  • 原文地址:https://www.cnblogs.com/itjiangpo/p/14181369.html
Copyright © 2020-2023  润新知