Content

MongoDB高效读写海量数据的方法(mongodb 慢)原创

文章摘要

这篇文章介绍了MongoDB高效读写、海量数据处理的配置与使用方法,重点讲解了MongoDB集群的高可用性和分布式架构。文章详细描述了如何配置主从节点(Master/Slave)和ReplSet(复制集合),包括启动、停止和故障切换的命令操作。此外,文章还讨论了主节点故障后从节点替代的问题,并提出了在复制集合中添加仲裁节点(Arbiter)来解决切换问题的方法。文章通过具体的Docker配置和操作,展示了MongoDB集群的部署与维护,为实际应用提供了实用的参考。



高性能,易部署,易使用

分布式的日志收集: elk 单节点最多 32g , mongodb 越多越好传感器(电子产品) — 数据库 — MongoDB地理地图网络爬虫 海量 Volume多样 Variety实时 Velocity 高并发高可扩高性能
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

注意: 默认从库是不能读取,需要设置  的状态:

docker-compose up -d docker ps docker exec -it masterid /bin/bash mongo > show databases; > use test; > db.userinfo.insert(); docker-compose rm

缺点: 当主库挂了,需要手动切换到从库

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

设置: 安排  进主节点,、 进从节点。

docker-compose up -d docker ps docker exec -it rs1id /bin/bash mongo > 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();

测试: 强行停止主库 ,检查从库是否能分配并切换到主库 ,在继续强行停止分配后的主库 

docker stop rs1id docker exec -it rs2id /bin/bash docker stop rs2id docker exec -it rs3id /bin/bash docker-compose rm

结论:

当主节点  挂了,会有从节点过来替代原有主库的位置,但是当仅剩最后一个从库时,无法切换为主库。

当主节点  重新启动恢复后,只会立马变为从库,不再是主库。除非等到现在的主库挂了,才有可能重新回到主库的位置。

问题: 当主节点  挂了,会有从节点过来替代原有主库的位置,但是具体是哪一个从库没有办法控制。所以我们需要添加一个 来解决这个问题。

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 -d docker ps docker exec -it masterid /bin/bash mongo > 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();

注意: 当存在 节点 (只是仲裁,并不存储数据)

到此这篇关于MongoDB高效读写海量数据的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:MongoDB中优雅删除大量数据的三种方式mongodb三分钟入门大全mongodb启动方法小结MongoDB数据库授权认证的实现MongoDB数据库安装部署及警告优化关于对MongoDB索引的一些简单理解MongoDB日志切割的三种方式总结mongodb清除连接和日志的正确方法分享mongodb数据库迁移变更的解决方案常用的MongoDB查询语句的示例代码详解MongoDB的条件查询和排序MongoDB如何更新多级文档的数据MongoDB 常用的crud操作语句MongoDB数据库的安装步骤