MongoDB数据库部署环境准备及使用介绍


Posted in MongoDB onMarch 21, 2022

一、MongoDB 简介

MongoDB 是由 C++ 语言编写的,是一个基于分布式文件存储的非关系型开源数据库系统。其优势在于可以存放海量数据,具备强大的查询功能,是一个独立的面向集合文档形式的。

应用平台:MongoDB 支持 Unix Linux Windows 等系统平台。

MySQL 与 MongoDB 区别:

MySQL 数据库 数据表 数据
MongDB 数据库 集合 文档

1.MongoDB 特点

存储性:

面向集合:数据被分组存储在数据集中,被称为一个集合。

面向文档:存储在集合中的文档,被存储为键值对的形式。

高效二进制数据存储:使用二进制格式存储,可以保存任何类型的数据对象。

操作性:

完全索引:可以在任意属性上建立索引,包含内部对象。以提高查询的速度。

强大的聚合工具:MongoDB 除了提供丰富的查询功能外,还提供了强大的聚合工具,如 count group 等。

支持 Perl PHP Java C# JavaScript Ruby Python CC++ 语言的驱动程序。

可用性:

支持复制和数据恢复:MongoDB 支持主从复制机制,可以实现数据的备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。

自动处理分片:MongoDB 支持集群自动切分数据,对数据进行切分可以使用集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡。

2.MongoDB 适用场景

网站实时数据处理:它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高伸缩性。

缓存:它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。

高伸缩性的场景:非常适合由数十台或数百台服务器组成的数据库。

不适用于的场景如下:

要求高度事务性的系统(例如:银行和会计系统)传统的商业只能应用。复杂的跨文档(表)级联查询。

3.MongoDB 存储结构

逻辑结构:

文档 document:存放的数据。

集合 collection:由多个文档组成,相当于表,但不同的是集合是无固定架构。

数据库 database:多个集合组成的数据库。

物理结构:

.wt 文件:每个表或索引对应一个命名空间,数据量增加,文件数量增多,存储了分配和正在使用的磁盘空间。

数据文件:存放数据的实体,并且使用预分配空间机制。

日志文件:系统日志文件、journal 日志文件(用于 MongoDB 崩溃恢复的保障)、oplog 复制操作日志文件(相当于 MySQL 的 BinLog 文件)、慢查询日志(查询操作超出指定时间的语句)

物理结构就是真正存放数据的位置。

4.MongoDB 数据类型

MongoDB数据库部署环境准备及使用介绍

二、部署 MongoDB 数据库应用

主机名 操作系统 IP 地址 版本
MongoDB CentOS 7.4 192.168.1.1 mongodb-linux-x86_64-rhel70-4.4.5.tgz

1.准备系统环境

[root@MongoDB ~]# ulimit -n 25000									# 同一时间最多开启的文件数
[root@MongoDB ~]# ulimit -u 25000									# 用户最多开启的程序数目
[root@MongoDB ~]# echo 0 > /proc/sys/vm/zone_reclaim_mode			# 设置内核参数. 当某个节点内存不足时可以借用其它节点的内存
[root@MongoDB ~]# sysctl -w vm.zone_reclaim_mode=0
vm.zone_reclaim_mode = 0
[root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/enabled
[root@MongoDB ~]# echo never > /sys/kernel/mm/transparent_hugepage/defrag

因为下面安装的版本为 4.4.5,而 MongoDB 4 版本以上的 /bin 目录中的工具进行了分离,所以需要安装:传送门

MongoDB数据库部署环境准备及使用介绍

[root@MongoDB ~]# tar xf mongodb-database-tools-rhel70-x86_64-100.3.1.tgz

2.安装 MongoDB

[root@MongoDB ~]# wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.4.5.tgz
[root@MongoDB ~]# tar xf mongodb-linux-x86_64-rhel70-4.4.5.tgz
[root@MongoDB ~]# mv mongodb-linux-x86_64-rhel70-4.4.5 /usr/local/mongodb
[root@MongoDB ~]# mv mongodb-database-tools-rhel70-x86_64-100.3.1/bin/* /usr/local/mongodb/bin/
[root@MongoDB ~]# echo "export PATH=/usr/local/mongodb/bin:\$PATH" >> /etc/profile
[root@MongoDB ~]# source /etc/profile

3.创建 MongoDB 存储目录以及配置文件

[root@MongoDB ~]# mkdir /usr/local/mongodb/{data,logs,conf}
[root@MongoDB ~]# touch /usr/local/mongodb/logs/mongodb.log
[root@MongoDB ~]# chmod 777 /usr/local/mongodb/logs/mongodb.log 
[root@MongoDB ~]# cat <<END > /usr/local/mongodb/conf/mongodb.conf
bind_ip=192.168.1.1
port=27017
dbpath=/usr/local/mongodb/data/
logpath=/usr/local/mongodb/logs/mongodb.log
logappend=true																	# 日志以文件追加的方式写入
fork=true																		# 通过后台运行 MongoDB 服务
maxConns=5000																	# MongoDB 最大连接数
END

4.编写服务启动脚本

[root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf				# 启动 MongoDB 服务
[root@MongoDB ~]# mongo 192.168.1.1:27017										# 登录验证
[root@MongoDB ~]# mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown		# 关闭 MongoDB 服务
[root@MongoDB ~]# vim /etc/init.d/mongodb
#!/bin/bash
case "$1" in
start)
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;;
stop)
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown;;
restart)
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf --shutdown
/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/conf/mongodb.conf;;
esac
[root@MongoDB ~]# chmod +x /etc/init.d/mongodb 									# 添加执行权限
[root@MongoDB ~]# /etc/init.d/mongodb start										# 启动

登录验证

[root@MongoDB ~]# mongo 192.168.1.1:27017										# 登录 MongoDB 数据库 (默认在 test 库中)
> show databases					# 查看数据库中所有库
admin   0.000GB
config  0.000GB
local   0.000GB
> db.getName()						# 查看当前登录库
test

MongoDB 安装完后的默认 4 个库:

admin:存放了有关数据库账号的相关信息。

config:用于分片集群环境,存放分片相关的元数据信息。

local:用于存储限于本地单台服务器的任意集合(因为该库并不会被复制到从节点,简单来说就是没有冗余性)

test:MongoDB 默认创建的一个测试库,连接 MongoDB 服务时,如果不指定连接的具体数据库,默认就会连接到 test 库。

以上就是MongoDB数据库部署环境准备及使用介绍的详细内容,更多关于MongoDB数据库部署环境准备的资料请关注三水点靠木其它相关文章!

MongoDB 相关文章推荐
MongoDB使用profile分析慢查询的步骤
Apr 30 MongoDB
MongoDB数据库的安装步骤
Jun 18 MongoDB
详解MongoDB的条件查询和排序
Jun 23 MongoDB
关于CentOS 8 搭建MongoDB4.4分片集群的问题
Oct 24 MongoDB
centos8安装MongoDB的详细过程
Oct 24 MongoDB
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
Feb 24 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
SpringBoot集成MongoDB实现文件上传的步骤
Apr 18 MongoDB
详解MongoDB排序时内存大小限制与创建索引的注意事项
May 06 MongoDB
一次线上mongo慢查询问题排查处理记录
Mar 18 #MongoDB
SpringBoot 整合mongoDB并自定义连接池的示例代码
Feb 28 #MongoDB
剖析后OpLog订阅MongoDB的数据变更就没那么难了
MongoDB使用场景总结
SpringBoot系列之MongoDB Aggregations用法详解
MongoDB连接数据库并创建数据等使用方法
springboot + mongodb 通过经纬度坐标匹配平面区域的方法
Nov 01 #MongoDB
You might like
php 静态化实现代码
2009/03/20 PHP
thinkphp的URL路由规则与配置实例
2014/11/26 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
javascript中this做事件参数相关问题解答
2013/03/17 Javascript
cookie的复制与使用记住用户名实现代码
2013/11/04 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
jquery单行文字向上滚动效果的实现代码
2014/09/05 Javascript
javascript常用的方法整理
2015/08/20 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
2016/07/01 Javascript
Angular ng-repeat指令实例以及扩展部分
2016/12/26 Javascript
vue实现简单实时汇率计算功能
2017/01/15 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
express框架实现基于Websocket建立的简易聊天室
2017/08/10 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
vue.js学习笔记之v-bind和v-on解析
2018/05/03 Javascript
vue组件实现进度条效果
2018/06/06 Javascript
js canvas实现红包照片效果
2018/08/21 Javascript
vue发送ajax请求详解
2018/10/09 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
解决vue安装less报错Failed to compile with 1 errors的问题
2020/10/22 Javascript
python数据类型_元组、字典常用操作方法(介绍)
2017/05/30 Python
深入探究Django中的Session与Cookie
2017/07/30 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
Numpy与Pytorch 矩阵操作方式
2019/12/27 Python
Python模块future用法原理详解
2020/01/20 Python
cookies应对python反爬虫知识点详解
2020/11/25 Python
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
C#中的验证控件有几种
2014/03/08 面试题
会计应届生的自荐信
2013/12/13 职场文书
英语教育专业自荐信
2014/05/29 职场文书
中学学校门卫岗位职责
2014/08/15 职场文书
思想作风纪律整顿心得体会
2014/09/04 职场文书
领导欢迎词范文
2015/01/26 职场文书
工程部经理岗位职责
2015/02/02 职场文书
标准发言稿结尾
2019/07/18 职场文书