学习Linux的第六十三天

mongodb介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
1.MongoDB是什么?用一句话总结
MongoDB是一款为web应用程序和互联网基础设施设计的数据库管理系统。没错MongoDB就是数据库,是NoSQL类型的数据库

2.为什么要使用MongoDB?
(1)MongoDB提出的是文档、集合的概念,使用BSON(类JSON)作为其数据模型结构,其结构是面向对象的而不是二维表,存储一个用户在MongoDB中是这样子的。


username:‘123’,
password:‘123’

使用这样的数据模型,使得MongoDB能在生产环境中提供高读写的能力,吞吐量较于mysql等SQL数据库大大增强。
(2)易伸缩,自动故障转移。易伸缩指的是提供了分片能力,能对数据集进行分片,数据的存储压力分摊给多台服务器。自动故障转移是副本集的概念,MongoDB能检测主节点是否存活,当失活时能自动提升从节点为主节点,达到故障转移。
(3)数据模型因为是面向对象的,所以可以表示丰富的、有层级的数据结构,比如博客系统中能把“评论”直接怼到“文章“的文档中,而不必像myqsl一样创建三张表来描述这样的关系。
3.主要特性
(1)文档数据类型
SQL类型的数据库是正规化的,可以通过主键或者外键的约束保证数据的完整性与唯一性,所以SQL类型的数据库常用于对数据完整性较高的系统。MongoDB在这一方面是不如SQL类型的数据库,且MongoDB没有固定的Schema,正因为MongoDB少了一些这样的约束条件,可以让数据的存储数据结构更灵活,存储速度更加快。
(2)即时查询能力
MongoDB保留了关系型数据库即时查询的能力,保留了索引(底层是基于B tree)的能力。这一点汲取了关系型数据库的优点,相比于同类型的NoSQL redis 并没有上述的能力。
(3)复制能力
MongoDB自身提供了副本集能将数据分布在多台机器上实现冗余,目的是可以提供自动故障转移、扩展读能力。
(4)速度与持久性
MongoDB的驱动实现一个写入语义 fire and forget ,即通过驱动调用写入时,可以立即得到返回得到成功的结果(即使是报错),这样让写入的速度更加快,当然会有一定的不安全性,完全依赖网络。
MongoDB提供了Journaling日志的概念,实际上像mysql的bin-log日志,当需要插入的时候会先往日志里面写入记录,再完成实际的数据操作,这样如果出现停电,进程突然中断的情况,可以保障数据不会错误,可以通过修复功能读取Journaling日志进行修复。
(5)数据扩展
MongoDB使用分片技术对数据进行扩展,MongoDB能自动分片、自动转移分片里面的数据块,让每一个服务器里面存储的数据都是一样大小。
4.C/S服务模型
MongoDB核心服务器主要是通过mongod程序启动的,而且在启动时不需对MongoDB使用的内存进行配置,因为其设计哲学是内存管理最好是交给操作系统,缺少内存配置是MongoDB的设计亮点,另外,还可通过mongos路由服务器使用分片功能。
MongoDB的主要客户端是可以交互的js shell 通过mongo启动,使用js shell能使用js直接与MongoDB进行交流,像使用sql语句查询mysql数据一样使用js语法查询MongoDB的数据,另外还提供了各种语言的驱动包,方便各种语言的接入。
5.完善的命令行工具
mongodump和mongorestore,备份和恢复数据库的标准工具。输出BSON格式,迁移数据库。
mongoexport和mongoimport,用来导入导出JSON、CSV和TSV数据,数据需要支持多格式时有用。mongoimport还能用与大数据集的初始导入,但是在导入前顺便还要注意一下,为了能充分利用好mongoDB通常需要对数据模型做一些调整。
mongosniff,网络嗅探工具,用来观察发送到数据库的操作。基本就是把网络上传输的BSON转换为易于人们阅读的shell语句。
因此,可以总结得到,MongoDB结合键值存储和关系数据库的最好特性。因为简单,所以数据极快,而且相对容易伸缩还提供复杂查询机制的数据库。MongoDB需要跑在64位的服务器上面,且最好单独部署,因为是数据库,所以也需要对其进行热备、冷备处理。

mongodb安装

在这里插入图片描述
下载安装包
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.4.tgz
在这里插入图片描述
然后进行解压
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.4.tgz
在这里插入图片描述
创建mongodb文件夹
mkdir -p /usr/local/mongodb
移动到指定位置
mv mongodb-linux-x86_64-rhel70-4.0.4 /usr/local/mongodb
在这里插入图片描述
在/usr/local/mongodb下创建文件夹
mkdir -p /data/db
mkdir logs
在这里插入图片描述
在这里插入图片描述
在/usr/local/mongodb/bin下新建配置
vi mongodb.conf
dbpath = /data/db #数据文件存放目录
logpath = /usr/local/mongodb/logs/mongodb.log #日志文件存放目录
logappend=true #日志追加
port = 27017 #端口
auth=true # 启用验证
fork = true #以守护程序的方式启用,即在后台运行
#bind_ip=0.0.0.0 #修改配置文件的bind_ip,默认是127.0.0.1 只限于本机连接。
环境变量配置
vi /etc/profile
export MONGODB_HOME=/usr/local/mongodb
exportPATH= P A T H : PATH: PATH:MONGODB_HOME/bin
保存后,重启系统配置
source /etc/profile
8、启动
在/usr/local/mongodb/bin下
./mongod -f mongodb.conf
9、关闭
mongod -f ./mongodb.conf --shutdown 或./mongod -f ./mongodb.conf
–shutdown如果在自己服务器上想开启远端访问功能,需要开启防火墙
创建用户
#添加超级管理账号

use admin #进入admin表
db.createUser(
{
user:“admin”,
pwd:“123456”,
roles:[{role:“root”,db:“YS_ORDER”}]
}
)

show users

{
“_id” : “admin.admin”,
“user” : “admin”,
“db” : “YS_ORDER”,
“roles” : [
{
“role” : “userAdminAnyDatabase”,
“db” : “YS_ORDER”
}
]
}

exit
11、删除用户

db.dropUser(‘admin’)

防火墙检查 是否开启
1、通过
systemctl status firewalld
查看firewalld状态,
发现当前是dead状态,即防火墙未开启。
2、开启防火墙
systemctl start firewalld
没有任何提示即开启成功
3、再次通过
systemctl status firewalld
查看firewalld状态,显示active(running) 即已开启了
4、如果要关闭防火墙设置,可能通过
systemctl stop firewalld
关闭该功能,没有任何提示则关闭成功。
5、开启端口,再次执行执行(在防火墙开启的时候设置)
firewall-cmd --permanent --zone=public --add-port=27017/tcp --permanent
提示success,表示设置成功,这样就可以继续后面的设置了。
6、查看端口,执行
firewall-cmd --permanent --query-port=27017/tcp
提示yes,即查询成功
7、重启防火墙,执行
firewall-cmd --reload
提示success即执行成功

连接mongodb

在这里插入图片描述

mongodb用户管理

在这里插入图片描述
第一步
创建管理员并且设置密码

// 必须先切换到指定的库
use admin;

// 创建用户与密码 userAdminAnyDatabase 这个只具有管理用户的权限,不具有增删改操作权限
db.createUser(
{
user: “admin”,
pwd: “abc123”,
roles: [{ role: “userAdminAnyDatabase”, db: “admin” } ]
}
);

user:用户名
pwd:密码
roles:指定用户的角色,可以用一个空数组给新用户设定空角色;在roles字段,可以指定内置角色和用户定义的角色
修改 MongoDB 的配置文件( 在安装目录/bin )
security:
authorization: enabled #注意缩进,参照其他的值来改,若是缩进不对可能导致后面服务不能重启
第三步
重启 MongoDB 服务
第四步
验证登录
不输入密码操作
验证密码操作
db.auth(“用户名”,“密码”);
db.auth(“admin”, “abc123”);
其他操作
修改用户密码
db.changeUserPassword(“admin”, “admin”);
查看用户
db.auth(“admin”, “admin”);
删除用户
db.dropUser(“admin”)
在这里插入图片描述

Mongodb创建集合。数据管理

在这里插入图片描述
在这里插入图片描述
创建集合
语法格式: db.createCollection(name, options) /name:要创建的集合名称,options:可选参数,指定有关内存大小及索引的选项
在这里插入图片描述
在插入文档时,MongoDB 首先检查固定集合的 size 字段,然后检查 max 字段。
在这里插入图片描述
数据备份
MongoDB 提供了mongodump用于数据备份, mongodump的原理是多MongoDB进行普通查询.然后写入文件
mongodump -d test -o /home/bak
mongodump可以使用-q条件增加查询条件,-c 指定collection
mongodump -d test -c user -q “{name:‘xxx’}” -o /home/bak
更多参数可参照 mongodump --help
数据恢复
mongorestore一般与mongodump搭配使用,用于恢复数据库
mongorestore -d test /home/bak/test --drop
使用的是/home/bak/test目录下的BSON或者JSON文件恢复数据库.–drop表述如果存在test库则删除原数据库.
数据导出
MongoDB还提供了一种针对集合的备份方式:使用mongoexport命令.
导出JSON文件
mongoexport -d test -c user -o /home/bak/user.json
同样也可以使用-q参数增加查询条件.
mongoexport -d test -c user -q “{name:‘xxx’}” -o /home/bak/user.json
导出CSV文件
mongoexport -d test -c user --csv -f id,name,age -o /home/bak/user.csv
-f指定导出的字段
数据导入
mongoimport与mongoexport配合使用
导入JSON文件
mongoimport -d test -c user /home/bak/user.json --upsert
–upsert表示更新现有数据,如果不使用–upsert则导入重复的文档会报_id重复,数据也不再插入.
导入CSV文件
mongoimport -d test -c user --type csv --headerline --file /home/bak/user.json --upsert
–headerline指明不导入第一行.CSV第一行为列名

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值