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安装使用并实现Python操作数据库
Jun 28 MongoDB
Mongo服务重启异常问题的处理方法
Jul 01 MongoDB
mongodb的安装和开机自启动详细讲解
Aug 02 MongoDB
mongodb数据库迁移变更的解决方案
Sep 04 MongoDB
MongoDB连接数据库并创建数据等使用方法
Nov 27 MongoDB
mongoDB数据库索引快速入门指南
Mar 23 MongoDB
MongoDB误操作后使用oplog恢复数据
Apr 11 MongoDB
MongoDB修改oplog大小的四种方法
Apr 11 MongoDB
MongoDB数据库之添删改查
Apr 26 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 生成文字png图片的代码
2011/04/17 PHP
PHP微信网页授权的配置文件操作分析
2019/05/29 PHP
JavaScript 闭包在封装函数时的简单分析
2009/11/28 Javascript
js 格式化时间日期函数小结
2010/03/20 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
基于JavaScript实现百叶窗动画效果不只单纯flas可以实现
2016/02/29 Javascript
javascript之Boolean类型对象
2016/06/07 Javascript
Js 获取当前函数参数对象的实现代码
2016/06/20 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
AngularJs表单校验功能实例代码
2017/02/09 Javascript
BOM之navigator对象和用户代理检测
2017/02/10 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
2017/04/07 Javascript
JavaScript函数apply()和call()用法与异同分析
2018/08/10 Javascript
Javascript读写cookie的实例源码
2019/03/16 Javascript
[01:49]一目了然!DOTA2DotA快捷操作对比第二弹
2014/05/16 DOTA
python操作MySQL数据库具体方法
2013/10/28 Python
Python中MySQLdb和torndb模块对MySQL的断连问题处理
2015/11/09 Python
详解如何使用Python编写vim插件
2017/11/28 Python
python定向爬取淘宝商品价格
2018/02/27 Python
Python实现的堆排序算法示例
2018/04/29 Python
windows下python和pip安装教程
2018/05/25 Python
Python基础之文件读取的讲解
2019/02/16 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
twilio python自动拨打电话,播放自定义mp3音频的方法
2019/08/08 Python
python实现单链表的方法示例
2019/09/03 Python
python 给图像添加透明度(alpha通道)
2020/04/09 Python
用python进行视频剪辑
2020/11/02 Python
法律专业应届本科毕业生求职信
2013/10/25 职场文书
会计师职业生涯规划范文
2014/02/18 职场文书
国庆放假通知怎么写
2015/07/30 职场文书
如何书写邀请函?
2019/06/24 职场文书
高效笔记技巧分享:学会这些让你不再困扰
2019/09/04 职场文书
解决numpy数组互换两行及赋值的问题
2021/04/17 Python
dubbo集成zipkin获取Traceid的实现
2021/07/26 Java/Android
《模拟人生4》推出新补丁 “婚礼奇缘”DLC终于得到修复
2022/04/03 其他游戏