MongoDB的安装

MongoDB的安装

Administrator 34 2021-05-20

官网: https://www.mongodb.org

mogodb是文档数据库,存储的是文档(Bson,json的二进制数据),内部执行引擎为JS解析器(谷歌v8),把文档储存成bson结构,在查询是转换为JS对象,可以通过熟悉的JS语法来操作。

mogodb和传统数据库区别:

传统数据库:结构化数据,设计了表结构后,每一行内容的列的类型是固定的。

mogodb文档数据库:表下的每篇文档都可以有自己独立的数据结构(json对象都可以有自己独特的属性和值)

1. 在主机安装和启动mongodb

(1) 安装mongodb

# 下载地址https://www.mongodb.org/dl/linux/x86_64
# 下载双数版本,例如3.6,而单数3.5是开发版本

#下载
wget http://downloads.mongodb.org/linux/mongodb-linux-x86_64-3.6.3.tgz?_ga=2.249742406.1729791217.1523023903-593615807.1523023903

#解压并安装到/usr/local目录下
tar xvf mongodb-linux-x86_64-3.6.3.tgz
mv mongodb-linux-x86_64-3.6.3 mongodb
mv mongodb /usr/local

# 把bin目录添加到环境变量
echo 'export PATH="$PATH:/usr/local/mongodb/bin"' >> /etc/bashrc

# 使当前终端生效
source /etc/bashrc

# 创建存放数据和日志文件夹
mkdir -p /data/mongodb/db
mkdir -p /data/mongodb/log

mongodb安装bin目录下程序说明:

  • bsondump:导出bson结构
  • mongo:客户端
  • mongod:服务端
  • mongodump:整体数据库导出(二进制)
  • mongoexport:导出易识别的json文档或csv文档
  • mongorestore:数据库整体导入
  • mongos:路由器(分片时用)
  • mongostat:观察状态
  • mongotop:类似linux的top命令

(2) 启动mongodb

以参数方式启动

mongod --dbpath /data/mongodb/db --logpath /data/mongodb/log/mongodb.log --port 27017 --fork
# --dbpath:数据库储存目录,--logpath日志储存目录,--fork后台运行,--port运行端口
# 使用mongod --help查看有哪些参数:
    # --dbpath 数据库路径(数据文件)
    # --logpath 日志文件路径
    # --master 指定为主机器
    # --slave 指定为从机器
    # --source 指定主机器的IP地址
    # --oplogSize 指定日志文件大小不超过64M.因为resync是非常操作量大且耗时,最好通过设置一个足够大的oplogSize来避免resync(默认的 oplog大小是空闲磁盘大小的5%)。
    # --logappend 日志文件末尾添加,即使用追加的方式写日志
    # --journal 启用日志
    # --port 启用端口号
    # --fork 在后台运行
    # --only 指定只复制哪一个数据库
    # --slavedelay 指从复制检测的时间间隔
    # --auth 是否需要验证权限登录(用户名和密码)
    # --syncdelay 数据写入硬盘的时间(秒),0是不等待,直接写入
    # --notablescan 不允许表扫描
    # --maxConns 最大的并发连接数,默认2000  
    # --pidfilepath 指定进程文件,不指定则不产生进程文件
    # --bind_ip 绑定IP,绑定后只能绑定的IP访问服务

自定义mongodb配置文件方式启动

新建配置文件:

vim /usr/local/mongodb/mongodb.conf

填写下面内容如下:

fork=true   # 允许程序在后台运行
#auth=true  # 开启认证
logpath=/var/log/mongo/mongo.log
logappend=true      # 写日志的模式:设置为true为追加。默认是覆盖
dbpath=/data/mongo/    # 数据存放目录
pidfilepath=/tmp/mongo/mongo.pid    # 进程ID,没有指定则启动时候就没有PID文件。默认缺省。
port=27017
bind_ip=127.0.0.1   # 绑定地址。默认127.0.0.1,只能通过本地连接

# 设置为true,修改数据目录存储模式,每个数据库的文件存储在DBPATH指定目录的不同的文件夹中。
# 使用此选项,可以配置的MongoDB将数据存储在不同的磁盘设备上,以提高写入吞吐量或磁盘容量。默认为false。
# 建议一开始就配置次选项
directoryperdb=true

# 禁止日志 
# 对应 journal 启用操作日志,以确保写入持久性和数据的一致性,会在dbpath目录下创建journal目录
nojournal=true

## max connections
# 最大连接数。默认值:取决于系统(即ulimit和文件描述符)限制。
# MongoDB中不会限制其自身的连接。当设置大于系统的限制,则无效,以系统限制为准。
# 设置该值高于连接池和总连接数的大小,以防止尖峰时候的连接。
# 注意:不能设置该值大于20000。
maxConns=1024

启动mongodb:

mongod -f /usr/local/mongodb/mongodb.conf

关闭mongodb服务:

mongod –shutdown –dbpath /data/mongodb/db

(3) 连接mongodb

mongodb客户端连接:

mongo –host 192.168.8.200 –port 27017

有密码连接:

mongo -u “krislin” -p “123456” –host 192.168.8.200 –port 27017 –authenticationDatabase “crawler”

(4) 允许外网访问mongodb

如果使用命令行方式启动,则添加参数–bind_ip 0.0.0.0;如果使用配置文件方式启动,则修改配置文件字段为bind_ip=0.0.0.0。

(5) 查看mongodb连接数

netstat -nat | grep -i 27017 | wc -l

2. 在docker安装mongodb

(1) 默认配置启动

docker run -d –name demo-mongo mongo:latest
docker run -d --name demo-mongo \
    -e MONGO_INITDB_ROOT_USERNAME=root \
    -e MONGO_INITDB_ROOT_PASSWORD=123456 \
    mongo

(2) 自定义配置文件启动

docker run -d –name demo-mongo -p 27017:27017 -v /data/mongo:/etc/mongo mongo –config /etc/mongo/mongod.conf

mongod.conf配置文件内容如下:

fork=true   # 允许程序在后台运行
#auth=true  # 开启认证
logpath=/var/log/mongo/mongo.log
logappend=true      # 写日志的模式:设置为true为追加。默认是覆盖
dbpath=/etc/mongo    # 数据存放目录
pidfilepath=/tmp/mongo/mongodb.pid    # 进程ID,没有指定则启动时候就没有PID文件。默认缺省。
port=27017
bind_ip=127.0.0.1   # 绑定地址。默认127.0.0.1,只能通过本地
directoryperdb=true
nojournal=true
maxConns=1024

(3) docker-compose命令启动,同时启动mongodb管理界面服务

version: '3.1'
services:
  mongo:
    image: mongo
    restart: always
    environment:
      MONGO_INITDB_ROOT_USERNAME: root
      MONGO_INITDB_ROOT_PASSWORD: 123456
    ports:
    - 27017:27017
    volumes:
    - /data/mongo:/etc/mongo

  mongo-express:
    image: mongo-express
    restart: always
    ports:
      - 8081:8081
    environment:
      ME_CONFIG_MONGODB_ADMINUSERNAME: root
      ME_CONFIG_MONGODB_ADMINPASSWORD: 123456