本文共 3599 字,大约阅读时间需要 11 分钟。
一.Mongodb的简单介绍
NoSQL简介NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型的数据库 。是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。
关系型数据库中的表都是存储一些结构化的数据,每条记录的字段的组成都一样,即使不是每条记录都需要所有的字段,但数据库会为每条数据分配所有的字段。而非关系型数据库以键值对(key-value)存储,它的结构不固定,每一条记录可以有不一样的键,每条记录可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构,可以减少一些时间和空间的开销。NoSql数据库优缺点
在优势方面主要体现在下面几点:- 简单的扩展
快速的读写 低廉的成本 灵活的数据模型在不足方面主要有下面几点:
不提供对SQL的支持 支持的特性不够丰富 现有的产品不够成熟MongoDB简介
MongoDB是用C++语言编写的非关系型数据库。特点是高性能、易部署、易使用,存储数据十分方便,主要特性有:
面向集合存储,易于存储对象类型的数据 模式自由 支持动态查询 支持完全索引,包含内部对象 支持复制和故障恢复 使用高效的二进制数据存储,包括大型对象 文件存储格式为BSON(一种JSON的扩展)MongoDB基本概念
文档(document)是MongoDB中数据的基本单元,非常类似于关系型数据库系统中的行(但是比行要复杂的多)。集合(collection)就是一组文档,如果说MongoDB中的文档类似于关系型数据库中的行,那么集合就如同表。MongoDB的单个计算机可以容纳多个独立的数据库,每一个数据库都有自己的集合和权限。MongoDB自带简洁但功能强大的JavaScript shell,这个工具对于管理MongoDB实例和操作数据作用非常大。每一个文档都有一个特殊的键”_id”,它在文档所处的集合中是唯一的,相当于关系数据库中的表的主键。二.mongodb的安装和配置
安装环境centos71.下载包
wget2、解压tar -zxvf mongodb-linux-x86_64-3.2.12.tgz
3、移动到指定位置mv mongodb-linux-x86_64-3.2.12/ /usr/local/mongodb
4、在/usr/local/mongodb下创建文件夹
存放数据 mkdir /data
存放日志mkdir /logs5、在/usr/local/mongodb/bin下新建配置vi mongodb.conf
dbpath = /usr/local/mongodb/data/db #数据文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log #日志文件存放目录port = 27017 #端口fork = true #以守护程序的方式启用,即在后台运行bind_ip =127.0.0.1 #绑定ip
verbose = vvvvv 日志级别,可以写1个v,最多5个v,v越多越详细mongod 为服务端
mongo 为客户端6、环境变量配置vim /etc/profile
export MONGODB_HOME=/usr/local/mongodbexport PATH=$PATH:$MONGODB_HOME/bin保存后,重启系统配置source /etc/profile7、启动在/usr/local/mongodb/bin下mongod -f mongodb.conf 或 ./mongod -f mongodb.conf
启动后查看8、关闭mongod -f ./mongodb.conf --shutdown 或./mongod -f ./mongodb.conf --shutdown
9..连接使用mongod
客户端连接mongod服务,出现警告,安装时最好不要用root用户安装,使用admin用户退出,并查看退出日志三.mongodb的基本使用增删改查
1.创建库和表
表是一个集合,里面的数据是json格式的,前面的id是全局id,是不重复的2.数据的查找
find()使用for循环插入多条数据
count()查询数量
条件查询,skip跳过前三条,查询2个,按id排序
注:
在查询的后面加上explain(),可以显示查询的详细参数,包括索引,时间等信息3.数据更新
update()更新多个字段数据的其中一个
复制一条空数据,有时候会出现还是空数据
后面加上true,如果是空自动插入一条数据
4.更新多条数据
这样只能更新一条使用{$set:{c:2}},false,true即可
5.删除数据
删除为了安全,必须给参数删除表
四.mongostat工具
实时采集
参数介绍
inserts 每秒插入数量 query 每秒查询数量update 每秒更新数量delete 每秒删除数量getmore 查询大数据的时候不能一次显示完,每次获取以后更多的数据command 执行命令的数量flushes 每秒虚拟映射的次数,每次内存数据刷到硬盘上vsize 占据内存大小resqr | qw 读队列和写队列,重要ar | aw 当前客户端活跃的数量netIn 输入流量netOut 输出流量conn 当前的连接数量五.mongoDB相关安全设置
1.创建用户角色类型:内建类型(read,readWrite,dbAdmin,dbOwner,userAdmin)添加管理用户(mongoDB 没有无敌用户root,只有能管理用户的用户 userAdminAnyDatabase)注:添加完用户后可以使用show users或db.system.users.find()查看已有用户
use mydbdb.system.users.remove({user:"root"})
db.system.users.find()
2、添加完管理用户后,关闭MongoDB,并使用权限方式再次开启MongoDB,这里注意不要使用kill直接去杀掉mongodb进程,(如果这样做了,请去data/db目录下删除mongo.lock文件),可以使用db.shutdownServer()关闭
谨记:先在不开启认证的情况下,创建用户,之后关闭服务,然后再开启认证,才生效。
开启权限认证
vim mongodb.confauth = true重新启动
[root@server1 bin]# mongo 127.0.0.1:27017查看日志,认证开启
3.进入mongo shell,使用admin数据库并进行验证,如果不验证,是做不了任何操作的。验证之后还是做不了操作,因为admin只有用户管理权限,下面创建student用户,用户都跟着库走。
[root@server1 bin]# mongo 127.0.0.1:270174.使用创建的用户student登录进行数据库操作
5、删除用户
db.dropUser("user") 删除指定用户db.dropAllUsers() 删除当前数据下所有用户六.mongodb的备份恢复
1、MongoDB数据库备份mongodump -h dbhost -d dbname -o dbdirectory参数说明:-h: MongDB所在服务器地址,例如:127.0.0.1,当然也可以指定端口号:127.0.0.1:27017-d: 需要备份的数据库实例,例如:test-o: 备份的数据存放位置,例如:/home/mongodump/,当然该目录需要提前建立,这个目录里面存放该数据库实例的备份数据。实例:备份mydb库
删除testdb表
2、MongoDB数据库恢复
mongorestore -h dbhost -d dbname --dir dbdirectory参数或名:
h: MongoDB所在服务器地址d: 需要恢复的数据库实例,例如:test,当然这个名称也可以和备份时候的不一样,比如test2-dir: 备份数据所在位置,例如:/home/mongodump/itcast/-drop: 恢复的时候,先删除当前数据,然后恢复备份的数据。就是说,恢复后,备份后添加修改的数据都会被删除,慎用!转载于:https://blog.51cto.com/anfishr/2287127