安装
链接:https://pan.baidu.com/s/1SkmdvZ3olq886lo3bzrTIw
提取码:yyds
Docker安装
mkdir -p /app/mongo/config
vim /app/mongo/config/mongod.conf
mongod.conf
#数据库数据存放目录
dbpath=/data/db
#数据库日志存放目录
#logpath=/data/mongolog
#以追加的方式记录日志
logappend = true
#端口号 默认为27017
port=27017
#以后台方式运行进程
fork=false
#开启用户认证
#auth=true
#关闭http接口,默认关闭http端口访问
#nohttpinterface=true
#mongodb所绑定的ip地址
bind_ip = 127.0.0.1
#启用日志文件,默认启用
journal=true
#这个选项可以过滤掉一些无用的日志信息,若需要调试使用请设置为false
quiet=true
创建容器
docker run --name mongodb -p 27017:27017 -v /app/mongo/config:/etc/mongo -v /app/mongo/db/:/data/db/ -d mongo:6.0 mongod -f /etc/mongo/mongod.conf
Linux安装
tar -zxvf mongodb-linux-x86_64-4.0.10.tgz #解压
mv mongodb-linux-x86_64-4.0.10 /usr/local/mongo # 移到指定目录
#新建几个目录,分别用来存储数据和日志
#数据存储目录
mkdir -p /app/mongo/data
#日志存储目录
mkdir -p /app/mongo/log
vi /app/mongo/mongod.conf
/usr/local/mongo/bin/mongod -f /app/mongo/mongod.conf
###出现successfully,说明成功!!
about to fork child process, waiting until server is ready for connections.
forked process: 90384
child process started successfully, parent exiting
###
ps -ef |grep mongod # 查看服务是否启动
# 分别使用mongo命令和compass工具来连接测试
# 提示:如果远程连接不上,需要配置防火墙放行!!!,或直接 关闭linux防火墙!
#查看防火墙状态
systemctl status firewalld
#临时关闭防火墙
systemctl stop firewalld
#开机禁止启动防火墙
systemctl disable firewalld
mongod.conf
systemLog:
#MongoDB发送所有日志输出的目标指定为文件
destination: file
#mongod或mongos应向其发送所有诊断日志记录信息的日志文件的路径
path: "/app/mongo/log/mongod.log"
#当mongos或mongod实例重新启动时,mongos或mongod会将新条目附加到现有日志文件的末尾。
logAppend: true
storage:
#mongod实例存储其数据的目录。storage.dbPath设置仅适用于mongod。
##The directory where the mongod instance stores its data.Default Value is "/data/db".
dbPath: "/app/mongo/data"
journal:
#启用或禁用持久性日志以确保数据文件保持有效和可恢复。
enabled: true
processManagement:
#启用在后台运行mongos或mongod进程的守护进程模式。
fork: true
net:
#服务实例绑定的IP,默认是localhost,192.168.111.101能让mongo compass连接到!!!
bindIp: localhost,192.168.111.101
#bindIp
# 绑定的端口,默认是27017
port: 27017
如果一旦是因为数据损坏,则需要进行如下操作(了解):
#1)删除lock文件:
rm -f /app/mongo/data/*.lock
#2)修复数据:
/usr/local/mongo/bin/mongod --repair --dbpath=/app/mongo/data
标准的关闭方法(数据不容易出错
,但麻烦):
目标:通过mongo客户端中的shutdownServer命令来关闭服务
//客户端登录服务,注意,这里通过localhost登录,如果需要远程登录,必须先登录认证才行。
mongo --port 27017
//#切换到admin库
use admin
//关闭服务
db.shutdownServer()
可视化界面
相关概念
业务应用场景
• High performance - 对数据库高并发读写的需求。
• Huge Storage - 对海量数据的高效率存储和访问的需求。
• High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求。
具体的应用场景如:
1)社交场景,使用 MongoDB 存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能。
2)游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、高效率存储和访问。
3)物流场景,使用 MongoDB 存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB 内嵌数组的形式来存储,一次查询就能将
订单所有的变更读取出来。
4)物联网场景,使用 MongoDB 存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析。
5)视频直播,使用 MongoDB 存储用户信息、点赞互动信息等。
6)非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而 导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响, 整个过程会非常快速。
这些应用场景中,数据操作方面的共同特点是:
(1)数据量大
(2)写入操作频繁(读写都很频繁)
(3)价值较低的数据,对事务性要求不高
什么时候选择MongoDB
在架构选型上,除了上述的三个特点外,如果你还犹豫是否要选择它?可以考虑以下的一些问题:
应用不需要事务及复杂 join 支持
新应用,需求会变,数据模型无法确定,想快速迭代开发
应用需要2000-3000以上的读写QPS(更高也可以)
应用需要TB甚至 PB 级别数据存储
应用发展迅速,需要能快速水平扩展
应用要求存储的数据不丢失
应用需要99.999%高可用
应用需要大量的地理位置查询、文本查询