Linux部署mongodb

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介: 应用场景 MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。

应用场景

MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

操作步骤

1. MongoDB介绍

对于一个大型网站来说,面对数据库高并发读写、海量数据的高效率访问以及高可扩展性和高可用性等需求,传统的关系型数据库已经力不从心,且提升规模所需的成本令人望而却步,而灵活、易扩展、高可用以及高性能的NoSQL数据库在处理大数据的需求上优势明显。

MongoDB是开源、高性能、易扩展的文档数据库,一个介于关系数据库和非关系数据库之间的NoSQL数据库产品,其主要目标是在键/值存储方式(提供了高性能和高度伸缩性)以及传统的关系型数据库(丰富的功能)架起一座桥梁,集两者的优势于一身。MongoDB支持的数据结构非常松散,是类似JSON的BSON格式,因此可以存储比较复杂的数据类型。其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。

1.1 适用场景

网站数据:适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制与高伸缩性;
缓存:适合作为基础设施的缓存层,在系统重启之后缓存层可以避免下层的数据源过载;
大尺寸,低价值的数据:关系型数据库存储这些数据时可能比较昂贵,很多人会选择以文件形式存储;
高伸缩性的场景:适合由数十或数百台服务器组成的数据库;
用于对象及JSON数据的存储:MongoDB的BSON数据格式非常适合文档化格式的存取。

1.2 不适用场景

高度事务性的系统:例如银行或会计系统,传统的关系型数据库更适用;
传统的商业智能应用:针对特定问题需要高度优化的查询方式,数据仓库可能是更合适的选择;
需要SQL的问题

2. 部署环境

要搭建高可用MongoDB架构,复制集(Replica Set)是必须的,它通过多套Mongo服务来保证其中一个服务挂掉后,可以自动切换到其他服务来实现故障转移,且这些服务之间是同步的。

但是高数据量和吞吐量的数据库应用会对单机的性能造成较大压力,大的查询量会将单机的CPU耗尽,大的数据量对单机的存储压力较大,最终会耗尽系统的内存而将压力转移到磁盘IO上。我们可以对设备进行纵向扩展如增加更多的CPU与存储资源,但是代价比较昂贵。这里可以通过MongoDB的分片集群(Sharding)在多台机器上分割数据,使得数据库系统能存储和处理更多的数据,以此来应对不断增加的负载和数据。

2.1 单机

单机环境参考复制集节点安装配置章节。

2.2 复制集

复制集是由一组拥有相同数据集的 mongod 实例组成的。其中一个节点为主节点(Primary),所有的写请求都在它上面完成。而其他节点都是从节点(Secondary),从节点接收从主节点传来的操作并应用,以此来保证与主节点的数据集一致。一个复制集只能有一个主节点,一旦主节点不可用了,复制集就会将一个从节点选举成为新的主节点。

这里写图片描述

最基础的复制集架构是由三个成员组成的,且成员个数应该是奇数,包括一个主节点(Primary),一个从节点(Secondary),还有一个投票节点(Arbiter)。投票节点的作用仅仅是在选举过程中参与投票,该节点中并不包含数据集,故所需资源很少,无需一个专用物理机。

这里写图片描述

2.3 分片集群

分片集群包括分发路由mongos、配置服务器config server以及分片shard,集群架构如下:

这里写图片描述

mongos,集群请求的入口,分发读写请求到分片服务器,前端应用透明访问。

config server,存储所有数据库元信息(路由、分片)的配置,mongos从配置服务器加载配置信息。生产环境中,为确保冗余与安全,一般使用3台配置服务器,且必须部署在不同的机器上。

shard,分片是存储了集群一部分数据的 mongod 或者 replica set,所有分片存储组成了集群的全部数据。在生产环境中,为保证高可用的分片架构,至少要保证2个分片,每个分片都应该是一个复制集。复制集为每个分片的数据提供了冗余和高可靠性。

3. 复制集搭建

3.1 节点安装配置

注:在主节点、从节点以及投票节点分别执行以下全部配置!

3.1.1 系统基础配置
关闭SELinux
 # vi /etc/selinux/config
……
SELINUX=disabled
……

关闭防火墙
 # service iptables stop
 # chkconfig iptables off

重启机器
 # reboot
3.1.2 配置时间同步
安装ntpdate
 # yum install -y ntpdate

时间同步
 # ntpdate pool.ntp.org

设置计划任务
 # crontab -e
0 23 * * * ntpdate pool.ntp.org >> /var/log/ntpdate.log
3.1.3 安装软件包
安装OpenSSL
 # yum install -y openssl-devel openssl

下载并解压缩安装包,也可以外部下载后拷贝到服务器root目录下
 # wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel62-3.0.6.tgz
 # tar -zxvf mongodb-linux-x86_64-rhel62-3.0.6.tgz

将mongodb移至/usr/local/mongodb目录下
 # mv mongodb-linux-x86_64-rhel62-3.0.6 /usr/local/mongodb

创建数据与日志目录
 # mkdir /usr/local/mongodb/data
 # mkdir /usr/local/mongodb/log
3.1.4 配置服务
设置开机自启动,local增加启动信息
 # vim /etc/rc.d/rc.local

/usr/local/mongodb/bin/mongod --fork --auth --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/mongodb.log --replSet set0
启动服务

 # /usr/local/mongodb/bin/mongod --fork --auth --dbpath /usr/local/mongodb/data --logpath /usr/local/mongodb/log/mongodb.log --replSet set0

3.2 配置复制集

在主节点配置复制集:
进入mongodb进行配置
 # ./bin/mongo
config={_id:'set0',members:[{_id:0,host:'192.168.202.80',priority:2},{_id:1,host:'192.168.202.95', priority:1},{_id:2,host:'192.168.202.96',arbiterOnly:true}]}  #输入配置信息(priority最大的为master服务器,投票节点需配置arbiterOnly:true)

使配置生效
 # rs.initiate(config)

3.3 安装验证

查看状态,health表示当前服务的状态,等于1就是正常状态:
 # rs.status()
相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。   相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
目录
相关文章
|
2月前
|
Ubuntu Linux 测试技术
Linux系统之部署轻量级Markdown文本编辑器
【10月更文挑战第6天】Linux系统之部署轻量级Markdown文本编辑器
98 1
Linux系统之部署轻量级Markdown文本编辑器
|
4月前
|
资源调度 JavaScript Linux
【Azure 应用服务】本地Node.js部署上云(Azure App Service for Linux)遇到的三个问题解决之道
【Azure 应用服务】本地Node.js部署上云(Azure App Service for Linux)遇到的三个问题解决之道
|
2月前
|
搜索推荐 Linux 测试技术
Linux系统之部署homer静态主页
【10月更文挑战第11天】Linux系统之部署homer静态主页
81 41
Linux系统之部署homer静态主页
|
2月前
|
运维 监控 Linux
Linux系统之部署Linux管理面板1Panel
【10月更文挑战第20天】Linux系统之部署Linux管理面板1Panel
91 3
Linux系统之部署Linux管理面板1Panel
|
2月前
|
Web App开发 资源调度 网络协议
Linux系统之部署IP工具箱MyIP
【10月更文挑战第5天】使用Docker部署Radicale日历和联系人应用Linux系统之部署IP工具箱MyIP
100 1
Linux系统之部署IP工具箱MyIP
|
2月前
|
Linux Shell 异构计算
在linux上部署yolov5和安装miniconda3
这篇文章介绍了在Linux系统上部署YOLOv5并安装Miniconda3的步骤,包括使用wget命令下载Miniconda安装脚本、安装Miniconda、初始化Conda环境、添加镜像源等。
93 3
在linux上部署yolov5和安装miniconda3
|
29天前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
56 2
|
1月前
|
消息中间件 Linux RocketMQ
在Red Hat Enterprise Linux 9上使用Docker快速安装并部署
通过以上步骤,你可以在Red Hat Enterprise Linux 9上使用Docker快速安装并部署RocketMQ。这种方法不仅简化了安装过程,还提供了一个灵活的环境来管理和扩展消息队列系统。RocketMQ作为一款高性能的分布式消息系统,通过Docker可以实现快速部署和高效管理。
35 3
|
2月前
|
Java Linux 网络安全
NIFI在Linux服务区上的部署配置过程是什么?
【10月更文挑战第21天】NIFI在Linux服务区上的部署配置过程是什么?
48 2
|
2月前
|
存储 数据可视化 Java
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
如何在Linux系统下部署和运行Java项目jar包,包括传输文件到Linux、使用nohup命令运行jar包、查看端口状态、杀死进程和查看项目运行状态,以及如何解决“没有主清单属性”的错误。
503 1
震惊!如何在linux下部署项目,部署/运行jar包 超详细保姆级教程!
下一篇
无影云桌面