简介:
官方地址:MongoDB: The Developer Data Platform | MongoDB
MongoDB是一个开源的NoSQL数据库管理系统,它使用文档型数据模型来存储数据,以下是MongoDB的基本信息
- 文档型数据存储:MongoDB使用BSON(Binary JSON)格式存储数据,它是一种类似于JSON的二进制表示形式。每个文档是一个包含字段和值的键值对集合,类似于关系型数据库中的行。
- 非结构化数据:与传统的关系型数据库相比,MongoDB是一个非结构化数据库,不需要提前定义表结构和字段。每个文档可以具有不同的结构,可以根据需要灵活地添加、删除和修改字段。
- 可扩展性:MongoDB具有良好的可扩展性,可以支持大规模数据存储和高吞吐量的工作负载。它支持水平扩展,通过分片(sharding)将数据分布在多个服务器上,以实现更好的性能和容量。
- 强大的查询功能:MongoDB提供了丰富的查询功能,支持复杂的查询操作,包括条件查询、范围查询、聚合查询、文本搜索等。它还支持创建索引来加快查询速度。
- 高可用性和容错性:MongoDB支持复制集(replica set),它是一组具有相同数据集的MongoDB实例。复制集提供了数据的冗余备份和自动故障转移功能,以实现高可用性和容错性。
- 社区活跃和丰富的生态系统:MongoDB拥有庞大的开发者社区和丰富的生态系统,提供了各种工具、驱动程序和库,以满足不同编程语言和应用程序的需求。
MongoDB适用于许多应用场景,特别是对于需要处理大量非结构化数据、需要灵活性和可扩展性的应用程序。它广泛应用于Web应用程序、大数据分析、实时分析、物联网(IoT)等领域。
1、下载
官网下载地址:Download MongoDB Community Server | MongoDB
如果你的选择和我是一样,可直接点击以下链接下载:https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.8.tgz
你可以选择直接在服务器上使用wget命令进行下载
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-6.0.8.tgz
也可以下载到本地之后,在通过sftp上传到服务器中。
2、解压
# 解压
tar -zxvf mongodb-linux-x86_64-rhel70-6.0.8.tgz
# 重命名
mv mongodb-linux-x86_64-6.0.8 mongodb
MongoDB 服务在启动时需要指定数据存储的目录。如果没有指定的话,默认会去找 /data/db/ 目录,如果数据目录不存在或不可写,那么服务器端将无法启动。
# 创建数据存放目录和日志目录
cd mongodb
# data文件夹存放数据库目录
mkdir data
# logs文件夹存放操作日志信息
mkdir logs
3、启动
执行以下命令
bin/mongod --fork --dbpath=/data/mongodb/data --logpath=/data/mongodb/logs/mongo.log
- fork:在后台运行 mongod 进程,将 MongoDB 服务作为守护进程运行,如果指定了fork,则必须同时指定logpath。
- dbpath:指定 MongoDB 数据库文件的存储路径,启动服务时必须指定。
- logpath:指定 MongoDB 日志文件的存储路径,默认日志是打印在命令行中的。如果对此目录有写权限且文件不存在,则会自动创建该文件。如果日志文件已经存在,默认会覆盖掉该文件,并删除所有旧的日志。如果希望保留旧的日志,除了使用 logpath 之外,还应该使用logappend 选项。
执行命令出现以下信息,表示启动成功
保险起见,我们监听下端口号
lsof -i :27017
有以下信息则表示MongoDB正在运行
4、配置
以上的启动命令只合适在开发环境使用,实际生产环境,需要更多的MongoDB的配置,比如端口号、监听的 IP 地址、认证机制等等,所以我们可以创建一个conf文件,来配置我们的MongoDB。
在我们的mongdb目录下创建一个mongdb.conf 文件
# 创建目录
cd /data/mongodb
vim mongo.conf
vim命令后,按 i 键进入编辑模式,将以下配置粘贴进去,注意:6.x版本与老版本的配置不同
# 存储相关配置
storage:
dbPath: /data/mongodb/data
journal:
enabled: true
wiredTiger:
engineConfig:
cacheSizeGB: 1
# 网络相关配置
net:
bindIp: 127.0.0.1
port: 27017
# 日志相关配置
systemLog:
destination: file
path: /data/mongodb/logs/mongod.log
logAppend: true
# 安全相关配置
security:
authorization: disabled
# 复制集相关配置
replication:
replSetName: node-1
# 其他配置项...
processManagement:
fork: true
使用配置方式启动MongoDB
bin/mongod --config /data/mongodb/mongo.conf
5、系统服务自启
给我们的MongoDB设置成系统服务,就可以简单的通过`systemctl`进行启动停止重启了
编写mongodb.service文件,如果对文件存放的目录`/etc/systemd/system`有所疑问文章末尾有说明
cd /etc/systemd/system
vim mongod
vim命令后,按 i 键进入编辑模式,将以下配置粘贴进去
[Unit]
Description=MongoDB Database Server
Documentation=https://docs.mongodb.org/manual
After=network.target
[Service]
ExecStart=/data/mongodb/bin/mongod --config /data/mongodb/mongo.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/data/mongodb/bin/mongod --shutdown --config /data/mongodb/mongo.conf
Restart=always
LimitNOFILE=64000
LimitNPROC=64000
[Install]
WantedBy=multi-user.target
重新加载systemd服务配置
sudo systemctl daemon-reload
测试是否可以启动成功
# 现将之前运行的MongoDB服务kill掉,先查询mongo运行的pid
ps -aux | grep mongo
kill <pid>
# 测试systemctl是否可以启动mongdb
sudo systemctl start mongodb
sudo systemctl start mongodb
最后设置开机自启动
sudo systemctl enable mongodb
现在,MongoDB已经被设置为系统自启,并可以使用以下systemctl命令进行管理:
- 启动MongoDB服务:
sudo systemctl start mongodb
- 停止MongoDB服务:
sudo systemctl stop mongodb
- 重启MongoDB服务:
sudo systemctl restart mongodb
- 查看MongoDB服务状态:
sudo systemctl status mongodb
请确保/data/mongodb/
目录下的MongoDB文件和配置正确,并具有适当的权限。
解决疑惑
在Systemd的环境中,建议将服务单元文件放在/etc/systemd/system
目录下,而不是/etc/init.d
目录下。/etc/init.d
目录是传统的SysV Init脚本存放的位置,而Systemd已经取代了SysV Init作为Linux系统的初始化系统。
Systemd使用.service
文件作为服务单元文件,使用systemctl
命令进行服务管理。将服务单元文件放在/etc/systemd/system
目录下可以更好地与Systemd集成,并提供更多的服务管理功能。
如果你将服务单元文件放在/etc/init.d
目录下,Systemd将无法直接识别和管理该服务。虽然可以通过一些转换或兼容性设置使Systemd支持SysV Init脚本,但这种方法并不推荐,因为它可能会导致一些问题,并且不符合Systemd的最佳实践。
因此,建议将MongoDB的服务单元文件放在/etc/systemd/system
目录下,以便与Systemd集成,并使用systemctl
命令进行服务管理