mogodb是文档数据库,存储的是文档(Bson,json的二进制数据),内部执行引擎为JS解析器(谷歌v8),把文档储存成bson结构,在查询是转换为JS对象,可以通过熟悉的JS语法来操作。
mogodb和传统数据库区别:
传统数据库:结构化数据,设计了表结构后,每一行内容的列的类型是固定的。
mogodb文档数据库:表下的每篇文档都可以有自己独立的数据结构(json对象都可以有自己独特的属性和值)
# 下载地址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命令
以参数方式启动
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
mongodb客户端连接:
mongo –host 192.168.8.200 –port 27017
有密码连接:
mongo -u “krislin” -p “123456” –host 192.168.8.200 –port 27017 –authenticationDatabase “crawler”
如果使用命令行方式启动,则添加参数–bind_ip 0.0.0.0;如果使用配置文件方式启动,则修改配置文件字段为bind_ip=0.0.0.0。
netstat -nat | grep -i 27017 | wc -l
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
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
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