什么是mongoDB?

mongoDB是一个文档数据库,具有可扩展性和灵活性,并提供所需要的查询和索引

mongoDB将数据存储在灵活的类JSON文档中,意味着看你因文档而异,数据结构可以随着时间的推移而改变

文档模型映射到应用程序代码中的对象,使数据易于使用

即时查询,索引和实时聚合提供了强大的访问和数据的方法

mongoDB是一个分布式数据库,其核心是高可用性、水平扩展和地理分布,内置并易于使用

mongoDB是免费和开源的,根据GNU Affero通用公共许可证发布

 

这里安装以centos7为例,介绍两种安装方式:1、使用rpm包;2、使用tar包

使用RPM包软件安装

   虽然Red Hat(CentOS)包含自己的mongoDB包,但使用官方mongoDB社区软件包可以确保拥有最新版本

mongoDB在自己的存储库中提供官方支持的软件包。此存储库包含以下软件包

[root@c1 ~]# rpm -qa| grep mongodb
mongodb-org-mongos-3.4.5-1.el7.x86_64     #包含mongos守护进程
mongodb-org-shell-3.4.5-1.el7.x86_64      #包含mongoshell
mongodb-org-server-3.4.5-1.el7.x86_64     #包含mongod守护程序和关联的配置和init脚本,提供了一个启动初始化脚本mongod和/etc/mongod.conf配置文件
mongodb-org-tools-3.4.5-1.el7.x86_64      #包含mongoDB的一些工具
mongodb-org-3.4.5-1.el7.x86_64            # metapackage将自动安装以上列出的四个组件包

1、配置包管理系统(yum)

创建一个/etc/yum.repos.d/mongodb-org-3.4.repo文件,使得我们可以直接用yum安装mongodb

[root@c1 ~]# vim /etc/yum.repos.d/mongodb-org-3.4.repo
[mongodb-org-3.4]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc

注意:如果要安装早期版本系列(如2.4或2.6)安装软件包,可以在存储库配置指定版本系列。例如,要将系统限制为2.6版本,请创建一个 /etc/yum.repos.d/mongodb-org-2.6.repo文件以保存MongoDB 2.6存储库的以下配置信息:

[mongodb-org-2.6] 
name = MongoDB 2.6 Repository 
baseurl = http://downloads-distro.mongodb.org/repo/redhat/os/x86_64/ 
gpgcheck = 0 
enabled = 1

我们可以在https://repo.mongodb.org/yum/redhat/找到.repo每个版本的文件。请记住,奇数编号的次要版本(例如2.5)是开发版本,不适合生产使用

2、安装mongoDB软件包和相关工具

[root@c1 ~]# yum install -y mongodb-org

3、数据目录和权限

mongoDB实例默认存储数据文件/var/lib/mongo及其日志文件/var/log/mongodb,并使用mongod用户运行

我们可以在/etc/mongod.conf指定备用日志和数据文件目录

如果更改运行的mongoDB进程用户,则必须修改对/var/lib/mongo和/var/log/mongodb目录的访问控制权限,以使该用户能够访问这些目录

4、启动mongoDB

/var/log/mongodb/mongod.log

5、地址端口

mongoDB的默认服务端口是27017,并且只监听地址127.0.0.1,我们可以通过修改配置文件来监听其他ip

[root@c1 ~]# vim /etc/mongod.conf
...
net:
  port: 27017
  bindIp: 127.0.0.1,192.168.88.1 
...

6、卸载mongoDB

要从系统中完全删除MongoDB,必须删除MongoDB应用程序本身,配置文件以及包含数据和日志的任何目录。以下部分将指导您完成必要的步骤

警告:此过程将完全删除MongoDB,其配置和所有 数据库。此过程不可逆,因此请确保在继续之前备份所有配置和数据

1、停止mongoDB
# systemctl stop mongod

2、删除软件包
# yum erase $( rpm -qa | grep mongodb-org )

3、删除MongoDB数据库和日志文件
# rm -r /var/log/mongodb
# rm -r /var/lib/mongo

TAR包安装

1、下载最新稳定版软件包

mongodb-linux-x86_64-rhel70-3.4.5.tgz

2、解压创建软链接

tar zxf mongodb-linux-x86_64-rhel70-3.4.5.tgz -C /application/
cd /application/
ln -s mongodb-linux-x86_64-rhel70-3.4.5 mongodb

3、创建组和用户

groupadd mongo
useradd -g mongo mongo

4、创建数据目录

mkdir /data/mongodb_data
chown -R mongo.mongo /data/mongodb_data

5、创建相关目录

cd /application/mongodb
mkdir conf   #存放配置文件
mkdir log     #存放日志
mkdir pid     #存放pid
chown -R mongo.mongo /application/mongodb

6、配置环境变量

vim /etc/profile.d/mongodb.sh
     export PATH=/application/mongodb/bin:$PATH
   
source /etc/profile.d/mongodb.sh

7、切换到mongo用户

su - mongo

8、创建mongodb配置文件

$ vim /application/mongodb/conf/mongod.conf
systemLog:
  destination: file    #MongoDB发送所有日志输出的目的地。默认是syslog,如果指定file,还必须指定下面的path(日志文件路径)
  logAppend: true      #重启实例,将新条目附加到现有日志文件的末尾。没有此选项,将备份现有日志并创建新文件
  path: /application/mongodb/log/mongod.log   #日志文件路径

storage:
  dbPath: /data/mongodb_data    #数据目录
  journal:
    enabled: true      #可以进行日志记录,确保单实例写耐用性。mongod默认情况下启用日志记录的64构建,因此,该设置可能是多余的

processManagement:
  fork: true      #启动后台守护进程模式
  pidFilePath: /application/mongodb/pid/mongod.pid    #指定pid文件路径

net:
  port: 27017               #指定服务端口
  bindIp: 127.0.0.1     #指定监听的地址,如果想监听多个如: bindIp: 127.0.0.1,192.168.88.1

9、启动mongoDB

$ mongod -f /application/mongodb/conf/mongod.conf

10、进入mongoDB的shell客户端

$ mongo

 11、停止mongoDB

$ mongod -f /application/mongodb/conf/mongod.conf --shutdown

其他:

写了一个启动配置脚本,因为mongoDB无法配置启动程序的用户(和tomcat一个尿性),因此,只能使用root运行,如果想使用mongo运行请使用上面手动进入mongo用户执行启动命令,

下面贴出脚本:

[Unit]
Description=MongoDB daemon

[Service]
Type=forking
PIDFile=/application/mongodb/pid/mongod.pid
ExecStart=/application/mongodb/bin/mongod -f /application/mongodb/conf/mongod.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true

[Install]
WantedBy=multi-user.target

  

 

每天进步一点,加油!