網站首頁 編程語言 正文
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 -d docker ps docker exec -it masterid /bin/bash mongo > show databases; > use test; > db.userinfo.insert({"name":"master"}); > db.userinfo.find({}); exit docker exec -it slaveid /bin/bash mongo > 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 -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({"name":"rs1"}); myset:PRIMARY> db.userinfo.find({}); exit docker exec -it rs2id /bin/bash mongo myset:SECONDARY> rs.status(); myset:SECONDARY> rs.slaveOk(); myset:SECONDARY> show databases; myset:SECONDARY> use test; myset:SECONDARY> db.userinfo.find({}); exit docker exec -it rs3id /bin/bash mongo myset:SECONDARY> rs.slaveOk(); myset:SECONDARY> show databases; myset:SECONDARY> use test; myset:SECONDARY> db.userinfo.find({});
測試:?強行停止主庫?rs1
,檢查從庫是否能分配并切換到主庫 ,在繼續強行停止分配后的主庫?rs2
docker stop rs1id docker exec -it rs2id /bin/bash docker stop rs2id docker exec -it rs3id /bin/bash docker-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 -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({"name":"master"}); newset:PRIMARY> db.userinfo.find({}); exit docker exec -it slaveid /bin/bash newset:SECONDARY> res.slaveOk(); newset:SECONDARY> use test; newset:SECONDARY> db.userinfo.find({}); exit docker exec -it arbiterid /bin/bash newset:ARBITER> res.slaveOk(); newset:ARBITER> show databases; newset:ARBITER> db.userinfo.find({});
注意:?當存在?arbiter
節點 (只是仲裁,并不存儲數據)
原文鏈接:https://www.cnblogs.com/Run2948/p/MongoDB_Massive_Data_Efficient_ReadWrite.html
相關推薦
- 2023-01-13 Pytorch如何加載自己的數據集(使用DataLoader讀取Dataset)_python
- 2022-08-20 解決WPF繪制矢量圖形模糊的問題_C#教程
- 2022-04-11 Python如何在終端彩色打印輸出_python
- 2023-12-16 @Configuration(proxyBeanMethods = true)
- 2022-08-23 Redis?ziplist?壓縮列表的源碼解析_Redis
- 2022-11-03 C#如何給新建的winform程序添加資源文件夾Resources_C#教程
- 2022-09-07 pytest配置文件pytest.ini的具體使用_python
- 2022-07-30 Qt實現不規則窗體
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支