MongoDB如何高效读写海量数据
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,本文小编为大家详细介绍"MongoDB如何高效读写海量数据",内容详细,步骤清晰,细节处理妥当,希望这篇"MongoDB如何高效读写海量数据"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
课程设计数据库题目
jdk内存数据库
利用服务器搭建小型云平台
数据库范式分级的真谛
石晓琳网络安全宣传
计算机网络技术 代码
熟悉网络安全管理
CTF网络安全打牌
服务器管理网络连接
开机 弹出 服务器管理
租用联通服务器注意什么
河南艾因斯互联网科技有限公司
中央电视台网络安全教育直播
c 软件开发csdn
数据库中外键和外码
北京智慧城市网络安全
苏州软件开发技术公司
数据库系统概论代码考点
普华服务器
软件开发wbs范例
如何启动数据库cdm
服务器设备供货商哪家质量好
vpn的服务器设置
计算机网络安全工作措施
数据库数据剥离是什么意思
闲聊app主服务器异常
数字和谐共筑网络安全生态
我的首选dns服务器是什么
用友u8数据库列名
普华服务器