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 balancer的使用详解
Apr 30 MongoDB
MongoDB 常用的crud操作语句
Jun 20 MongoDB
MongoDB orm框架的注意事项及简单使用
Jun 20 MongoDB
详解MongoDB的条件查询和排序
Jun 23 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
SpringBoot系列之MongoDB Aggregations用法详解
Feb 12 MongoDB
MongoDB支持的索引类型
Apr 11 MongoDB
Mongodb 迁移数据块的流程介绍分析
Apr 18 MongoDB
MongoDB数据库之添删改查
Apr 26 MongoDB
NoSQL优缺点与MongoDB数据库简介
Jun 05 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
模拟OICQ的实现思路和核心程序(三)
2006/10/09 PHP
php将数据库导出成excel的方法
2010/05/07 PHP
php file_put_contents()功能函数(集成了fopen、fwrite、fclose)
2011/05/24 PHP
PHP压缩html网页代码(清除空格,换行符,制表符,注释标记)
2012/04/02 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
PHP赋值的内部是如何跑的详解
2019/01/13 PHP
Mac下快速搭建PHP开发环境步骤详解
2019/05/05 PHP
jquery队列函数用法实例
2014/12/16 Javascript
jQuery trigger()方法用法介绍
2015/01/13 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
jQuery Select下拉框操作小结(推荐)
2016/07/22 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
走进javascript——不起眼的基础,值和分号
2017/02/24 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
CentOS 安装NodeJS V8.0.0的方法
2017/06/15 NodeJs
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
jquery实现企业定位式导航效果
2018/01/01 jQuery
Vue事件处理原理及过程详解
2020/03/11 Javascript
python BeautifulSoup设置页面编码的方法
2015/04/03 Python
Python实现简单截取中文字符串的方法
2015/06/15 Python
在Django中创建第一个静态视图
2015/07/15 Python
Ubuntu下使用python读取doc和docx文档的内容方法
2018/05/08 Python
Python 文件数据读写的具体实现
2020/01/24 Python
html2canvas生成的图片偏移不完整的解决方法
2020/05/19 HTML / CSS
AmazeUI在模态框中嵌入表单形成模态输入框
2020/08/20 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
生产现场工艺工程师岗位职责
2013/11/28 职场文书
工伤赔偿协议书
2014/04/15 职场文书
教育见习报告范文
2014/11/03 职场文书
2014年档案管理员工作总结
2014/12/01 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
员工手册董事长致辞
2015/07/29 职场文书
2016年第32个教师节致辞
2015/11/26 职场文书
就业指导讲座心得体会
2016/01/15 职场文书
Python list列表删除元素的4种方法
2021/11/01 Python