概述

MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是它支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

使用场景

主要场景如下:

  • 网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
  • 缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。
  • 高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。

部署

单机部署-yum安装

配置yum源

新建文件 /etc/yum.repos.d/mongodb-org-4.2.repo

1
2
3
4
5
6
[mongodb-org-4.2]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-4.2.asc

安装

1
sudo yum install -y mongodb-org

若要安装特定版本,请分别指定每个组件包,如:

1
sudo yum install -y mongodb-org-4.2.8 mongodb-org-server-4.2.8 mongodb-org-shell-4.2.8 mongodb-org-mongos-4.2.8 mongodb-org-tools-4.2.8

若不想yum升级时MongoDB意外升级,可以配置/etc/yum.conf排除MongoDB:

1
exclude=mongodb-org,mongodb-org-server,mongodb-org-shell,mongodb-org-mongos,mongodb-org-tools

启动

1
sudo systemctl start mongod

如果报以下错误:

1
Failed to start mongod.service: Unit mongod.service not found.

解决:

1
sudo systemctl daemon-reload

开机自启:

1
sudo systemctl enable mongod

配置

1
2
3
# 允许其他网络访问mongodb
sed -i 's#127.0.0.1#0.0.0.0#' /etc/mongod.conf
systemctl restart mongod

创建管理员用户

运行mongo shell

1
2
#  默认端口为27017
mongo

创建用户

1
2
3
4
> use admin
> db.createUser({user:"admin",pwd:"password",roles:["root"]})
# 第一个用户添加完成后,便需要认证才能继续添加其他用户
> db.auth("admin", "password")