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)访问控制;
创建管理员用户
首先进入mongo shell 命令行模式下
选择admin库,创建root用户
认证
db.auth(“username”,”password”)
修改mongo.conf文件,添加以下内容
security:
authorization:enabe
保存退出后,需要重启mongod服务。登录服务
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)命令行操作;
数据库相关
- show dbs: 显示数据库列表。
- show collections:显示当前数据中的集合
- show users: 显示用户
- use yourDB: 切换到当前数据库
- db.help() :显示数据库操作命令
- db.yourCollection.help():显示集合操作命令,yourCollection是集合名字
- 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
- 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
查看是否恢复
恢复成功。
MongoDB的管理-深度长文的更多相关文章
- [转]PHP并发IO编程之路(深度长文)
原文:https://www.imooc.com/article/8449 -------------------------------------------------------------- ...
- MongoDB基本管理命令
MongoDB是一个NoSQL数据库系统:一个数据库可以包含多个集合(Collection),每个集合对应于关系数据库中的表:而每个集合中 可以存储一组由列标识的记录,列是可以自由定义的,非常灵活,由 ...
- NoSQL学习二:MongoDB基本管理命令
MongoDB命令学习 一.MongoDB命令帮助 在安装MongoDB后,启动服务器进程(mongod),可以通过在客户端命令mongo实现对MongoDB的管理和监控: 这是MongoDB最上层 ...
- MongoDB权限管理之用户名和密码的操作
MongoDB默认是不需要输入用户名和密码,客户就可以登录的.但是出于安全性的考虑,我们还是要为其设置用户名和密码.本文主要介绍的是MongoDB权限管理之用户名和密码的操作,希望能对您有所帮助. 本 ...
- MongoDB——权限管理
MongoDB--权限管理 MongoDB默认是没有权限验证的,但生产环境中,没有权限控制是很不安全的. 我们先不详谈太多概念,直接动手创建两个典型的账号: 超级管理员,类似sql server的sa ...
- 最佳的MongoDB客户端管理工具
<最佳的MongoDB客户端管理工具> 作者:chszs,未经博主允许不得转载.经许可的转载需注明作者和博客主页:http://blog.csdn.net/chszs 一个好的MongoD ...
- MongoDB基本管理命令 [转]
MongoDB基本管理命令 linux下配置安装mongodb 10分钟玩转mongoDB 官网安装教程 使用命令行方式连接mongodb: mongo /admin -u用户名 -p密码 --连接 ...
- MongoDB账号管理及实践
此文已由作者温正湖授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 目前蜂巢(云计算基础服务)MongoDB上已经有数十个实例,其中不少是企业用户或公司内部产品用户的.用户多了 ...
- 浅析MongoDB用户管理
浅析MongoDB用户管理 http://www.jb51.net/article/53830.htm mongodb3.03开启认证 http://21jhf.iteye.com/blog/2216 ...
随机推荐
- 深入分析 Java、Kotlin、Go 的线程和协程
前言 协程是什么 协程的好处 进程 进程是什么 进程组成 进程特征 线程 线程是什么 线程组成 任务调度 进程与线程的区别 线程的实现模型 一对一模型 多对一模型 多对多模型 线程的"并发& ...
- 架构师基础技能-搭建gitLab
前言 想要成为一名架构师,一定要有从无到有搭建环境的能力,这是作为架构师的基础技能,而gitLab服务器的搭建一定又是重中之重. 相信很多小伙伴的公司也在使用gitLab,但都是你们公司的架构师搭建好 ...
- 一文带你彻底了解大数据处理引擎Flink内存管理
摘要: Flink是jvm之上的大数据处理引擎. Flink是jvm之上的大数据处理引擎,jvm存在java对象存储密度低.full gc时消耗性能,gc存在stw的问题,同时omm时会影响稳定性.同 ...
- c++日常小问题
语法解析问题. 当给一个变量构造函数传递一个临时变量,而不是命名的变量,c++编译器会将其解析为函数声明,而不是类型对象的定义. class hello { void operator()() { s ...
- openstack高可用集群20-openstack计算节点宕机迁移方案
openstack计算节点宕机迁移方案 情景一:/var/lib/nova/instances/ 目录不共享的处理方法(类似手动迁移云主机到其他节点)
- Python写一个对象,让它自己能够迭代
仿写range()对象,对象是可迭代的: 1 #!usr/bin/env python3 2 # -*- coding=utf-8 -*- 3 4 class myRange(): 5 #初始化,也叫 ...
- Redis入门指导
前言 本文提供全网最完整的Redis入门指导教程,下面我们从下载Redis安装包开始,一步一步的学习使用. 下载Redis 官网提供的Redis安装包是服务于Linux的,而我们需要在Window下使 ...
- Office__自动保存和恢复
#1.前言 在您埋头辛苦编辑Excel.Word或PPT文档的时候,如果突然发生断电.系统崩溃.意外误操作,本文将以Excel2010为例详细阐述其中自动保存功能的工作机理和恢复文件的访问方法,Exc ...
- Kafka超详细学习笔记【概念理解,安装配置】
目录 本篇要点 Kafka介绍 作为流处理平台的三种特性 主要应用 四个核心API 基本术语 快速开始 安装配置Zookeeper 下载kafka 配置文件 Windows的命令 启动Zookeepe ...
- 5.装饰模式 Decorator (单一职责)
结合: Android设计模式 006 装饰者模式 [B站]对整个重构的细节讲的容易懂 Android的设计模式-装饰者模式 [简书]结合安卓源码讲的还可以,让我对context有更深入的理解 ...