MongoDB如何高效读写海量数据
发表于:2024-10-19 作者:千家信息网编辑
千家信息网最后更新 2024年10月19日,本文小编为大家详细介绍"MongoDB如何高效读写海量数据",内容详细,步骤清晰,细节处理妥当,希望这篇"MongoDB如何高效读写海量数据"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
千家信息网最后更新 2024年10月19日MongoDB如何高效读写海量数据
本文小编为大家详细介绍"MongoDB如何高效读写海量数据",内容详细,步骤清晰,细节处理妥当,希望这篇"MongoDB如何高效读写海量数据"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
MongoDB 简介
高性能,易部署,易使用
常见应用场景
分布式的日志收集: elk 单节点最多 32g , mongodb 越多越好
传感器(电子产品) --- 数据库 --- MongoDB
地理地图
网络爬虫
大数据时代的3V
海量 Volume
多样 Variety
实时 Velocity
大数据库时代的3高
高并发
高可扩
高性能
MongoDB 集群
1. 一主一从
docker-compose.yml
version: '2'services: master: image: mongo:3.4 volumes: - /data/mongodbml/master:/data/db command: mongod --dbpath /data/db --master slaver: image:mongo:3.4 volumes: - /data/mongodbml/slaver:/data/db command: mongod --dbpath /data/db --slave --source master:27017 links: - master
注意: 默认从库是不能读取,需要设置 SlaveOk
的状态:
docker-compose up -ddocker psdocker exec -it masterid /bin/bashmongo> show databases;> use test;> db.userinfo.insert({"name":"master"});> db.userinfo.find({});exitdocker exec -it slaveid /bin/bashmongo> show databases;> db.getMongo().setSlaveOk();> use test;> db.userinfo.find({});docker-compose rm
缺点: 当主库挂了,需要手动切换到从库
2. 一主二从
docker-compose.yml
version: '2'services: rs1: image: mongo:3.4 volumes: - /data/mongodbtest/replset/rs1:/data/db command: mongod --dbpath /data/db --replset myset rs2: image:mongo:3.4 volumes: - /data/mongodbtest/replset/rs2:/data/db command: mongod --dbpath /data/db --replset myset rs3: image:mongo:3.4 volumes: - /data/mongodbtest/replset/rs3:/data/db command: mongod --dbpath /data/db --replset myset
设置: 安排 rs1
进主节点,rs2
、rs3
进从节点。
docker-compose up -ddocker ps docker exec -it rs1id /bin/bashmongo> rs.initiate()myset:SECONDARY> rs.add('rs2:27017'); myset:PRIMARY> rs.add('rs3:27017'); myset:PRIMARY> rs.conf()myset:PRIMARY> show databases;myset:PRIMARY> use test;myset:PRIMARY> db.userinfo.insert({"name":"rs1"});myset:PRIMARY> db.userinfo.find({});exitdocker exec -it rs2id /bin/bashmongomyset:SECONDARY> rs.status();myset:SECONDARY> rs.slaveOk();myset:SECONDARY> show databases;myset:SECONDARY> use test;myset:SECONDARY> db.userinfo.find({});exitdocker exec -it rs3id /bin/bashmongomyset:SECONDARY> rs.slaveOk();myset:SECONDARY> show databases;myset:SECONDARY> use test;myset:SECONDARY> db.userinfo.find({});
测试: 强行停止主库 rs1
,检查从库是否能分配并切换到主库 ,在继续强行停止分配后的主库 rs2
docker stop rs1iddocker exec -it rs2id /bin/bashdocker stop rs2iddocker exec -it rs3id /bin/bashdocker-compose rm
结论:
当主节点 rs1
挂了,会有从节点过来替代原有主库的位置,但是当仅剩最后一个从库时,无法切换为主库。
当主节点 rs1
重新启动恢复后,只会立马变为从库,不再是主库。除非等到现在的主库挂了,才有可能重新回到主库的位置。
问题: 当主节点 rs1
挂了,会有从节点过来替代原有主库的位置,但是具体是哪一个从库没有办法控制。所以我们需要添加一个冲裁
来解决这个问题。
3. 一主一从一仲裁
docker-compose.yml
version: '2'services: master: image: mongo:3.4 volumes: - /data/mongodbnode/replset/rs1:/data/db command: mongod --dbpath /data/db --replset newset --oplogSize 128 slave: image:mongo:3.4 volumes: - /data/mongodbnode/replset/rs2:/data/db command: mongod --dbpath /data/db --replset newset --oplogSize 128 arbiter: image:mongo:3.4 command: mongod --dbpath /data/db --replset newset --smallfiles --oplogSize 128
配置:
docker-compose up -ddocker ps docker exec -it masterid /bin/bashmongo> rs.initiate()newset:SECONDARY> rs.add('slave:27017'); newset:PRIMARY> rs.add('arbiter:27017', true);newset:PRIMARY> re.conf()newset:PRIMARY> show databases;newset:PRIMARY> use test;newset:PRIMARY> db.userinfo.insert({"name":"master"});newset:PRIMARY> db.userinfo.find({});exitdocker exec -it slaveid /bin/bashnewset:SECONDARY> res.slaveOk();newset:SECONDARY> use test;newset:SECONDARY> db.userinfo.find({});exitdocker exec -it arbiterid /bin/bashnewset:ARBITER> res.slaveOk();newset:ARBITER> show databases;newset:ARBITER> db.userinfo.find({});
注意: 当存在 arbiter
节点 (只是仲裁,并不存储数据)
读到这里,这篇"MongoDB如何高效读写海量数据"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
节点
数据
海量
位置
文章
切换
内容
数据库
时代
问题
高性能
仲裁
分配
妥当
传感器
分布式
办法
只是
地图
地理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全和防范案例分析
数据库技术量化
车系车款数据库
网络安全参与重保
toolbox进服务器闪退
网络安全攻防实战演练总结
网络安全手抄报模板文字简单
网络安全专家要考哪些证书
国外无线网络技术发展现状
青海省网络安全
无主之地3未加入服务器
db2 数据库删除列语句
oracle 数据库语句
机关事业单位软件开发
软件开发需要学习高数吗
计算机网络技术专业制作网页
帝国cms 数据库访问
使命召唤哪个服务器更好
数据库用代码创建表说明
计算机网络技术基础 材料题
网络安全参与重保
ehs网络安全培训
物联网网络技术实习
我的世界最强斗罗服务器解说
mongo删除数据库 慢
查看数据库的启动方式
三下乡活动网络安全
数据库原理与技术表程序题
中国城市数据库
戴尔 服务器