手把手 linux下 MongoDB 的安装

##一、了解MongoDB

MongoDB 是由C 语言编写的,是一个基于分布式文件存储的开源数据库系统。

在高负载的情况下,添加更多的节点,可以保证服务器性能。

MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。

MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。

##二、优缺点详细解

1.内置GridFS,支持大容量的存储:

GridFS是一个出色的分布式文件系统,可以支持海量的数据存储。内置了GridFS了MongoDB,能够满足对大数据集的快速范围查询。

2.内置 Auto- Sharding 自动分片支持云级扩展性,分片简单

提供基于Range的Auto Sharding机制:

一个collection可按照记录的范围,分成若干个段,切分到不同的Shard上。

Shards可以和复制结合,配合Replica sets能够实现Sharding fail-over,不同的Shard之间可以负载均衡。

查询是对客户端是透明的。客户端执行查询,统计,MapReduce等操作,这些会被MongoDB自动路由到后端的数据节点。

这让我们关注于自己的业务,适当的 时候可以无痛的升级。MongoDB的Sharding设计能力最大可支持约20 petabytes,足以支撑一般应用。

这可以保证MongoDB运行在便宜的PC服务器集群上。PC集群扩充起来非常方便并且成本很低,避免了“sharding”操作的复杂性和成本。

3.海量数据下,性能优越:

在使用场合下,千万级别的文档对象,近10G的数据,对有索引的ID的查询不会比mysql慢,而对非索引字段的查询,则是全面胜出。 mysql实际无法胜任大数据量下任意字段的查询,而mongodb的查询性能实在让我惊讶。写入性能同样很令人满意,同样写入百万级别的数 据,mongodb比我以前试用过的couchdb要快得多,基本10分钟以下可以解决。补上一句,观察过程中mongodb都远算不上是CPU杀手。

4.全索引支持,扩展到内部对象和内嵌数组

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。

这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构。

5.MapReduce 支持复杂聚合

MongoDB中聚合(aggregate)主要用于处理数据(诸如统计平均值,求和等),并返回计算后的数据结果。有点类似sql语句中的 count(*)。

与关系型数据库相比,MongoDB的缺点:

mongodb不支持事务操作:

所以事务要求严格的系统(如果银行系统)肯定不能用它。

mongodb占用空间过大:

关于其原因,在官方的FAQ中,提到有如下几个方面:

1、空间的预分配:为避免形成过多的硬盘碎片,mongodb每次空间不足时都会申请生成一大块的硬盘空间,而且申请的量从64M、128M、256M那 样的指数递增,直到2G为单个文件的最大体积。随着数据量的增加,你可以在其数据目录里看到这些整块生成容量不断递增的文件。

2、字段名所占用的空间:为了保持每个记录内的结构信息用于查询,mongodb需要把每个字段的key-value都以BSON的形式存储,如果 value域相对于key域并不大,比如存放数值型的数据,则数据的overhead是最大的。一种减少空间占用的方法是把字段名尽量取短一些,这样占用 空间就小了,但这就要求在易读性与空间占用上作为权衡了。

3、删除记录不释放空间:这很容易理解,为避免记录删除后的数据的大规模挪动,原记录空间不删除,只标记“已删除”即可,以后还可以重复利用。

4、可以定期运行db.repairDatabase()来整理记录,但这个过程会比较缓慢

三、安装

1、上传安装包

去官网下载安装包(注意版本号、适用操作系统、安装包格式)

将下载好的安装包(mongodb-linux-x86_64-rhel70-4.0.9.tgz)上传到linux,目标路径为/usr/local/

2、解压安装包

进入目录/usr/local/,找到安装包解压

将包名重命名为mongo

cd /usr/local/;
tar -zxvf mongodb-linux-x86_64-rhel70-4.0.9.tgz;
mv mongodb-linux-x86_64-rhel70-4.0.9/ mongodb;

3、创建配置文件

①创建存储数据的文件夹

②创建记录日志的文件夹以及文件

③创建配置文件

cd /usr/local/mongodb/;
mkdir data;
mkdir logs;
cd logs; touch mongodb.log; cd ../;
mkdir etc;
cd etc; touch mongodb.conf

④在配置文件mongodb.conf中添加配置

#数据库路径
dbpath=/usr/local/mongodb/data
#日志输出文件路径
logpath=/usr/local/mongodb/logs/mongodb.log
#错误日志采用追加模式
logappend=true
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
#端口号 默认为27017
port=27017
#允许远程访问
bind_ip=0.0.0.0
#开启子进程
fork=true
#开启认证,必选先添加用户
#auth=true

##五、启动mongoDB

1、mongodb安装好后第一次进入是不需要密码的,也没有任何用户,通过shell命令可直接进入,cd到mongodb目录下的bin文件夹,执行命令./mongod,启动mongodb服务。

2、从客户端登录mongodb,直接在mongodb的bin目录下执行命令./mongo

3、添加root超级用户,添加完用户后可以使用show users或db.system.users.find()查看已有用户。

use admin
db.createUser(
     {
       user:"root",
       pwd:"root",
       roles:[{role:"root",db:"admin"}]
     }
  )

4、关闭mongoDB(可以使用db.shutdownServer()关闭),并使用权限方式再次启动mongoDB。即将配置文件mongodb.conf末尾的auth=true注释放开,保存后再次启动mongoDB服务

5、客户端登录后,需要验证才能进行其他操作。

use admin
db.auth("root","root")   #认证,返回1表示成功

##六、创建启动关闭脚本

1、进入mongdb的bin目录下,创建脚本

vim mongodb.sh

2、编写脚本

start() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf
}
stop() {
/usr/local/mongodb/bin/mongod --config /usr/local/mongodb/etc/mongodb.conf --shutdown
}

case "$1" in
start)
 start
 ;;

stop)
 stop
 ;;

restart)
 stop
 start
 ;;

*)
 echo $"Usage: $0 {start|stop|restart}"
 exit 1
esac

3、修改脚本文件为可执行文件

chmod  x mongodb.sh

4、验证脚本

sh mongodb.sh start
sh mongodb.sh stop
sh mongodb.sh restart

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-olwWmS2l-1576925645156)(https://gitee.com/luoluo1995/image/raw/master/wxImage/xuanchuantu.png “小罗技术笔记”)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值