網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
MongoDB?簡(jiǎn)介
高性能,易部署,易使用
常見(jiàn)應(yīng)用場(chǎng)景
- 分布式的日志收集: elk 單節(jié)點(diǎn)最多 32g , mongodb 越多越好
- 傳感器(電子產(chǎn)品) --- 數(shù)據(jù)庫(kù) --- MongoDB
- 地理地圖
- 網(wǎng)絡(luò)爬蟲(chóng)
大數(shù)據(jù)時(shí)代的3V
- 海量 Volume
- 多樣 Variety
- 實(shí)時(shí) Velocity
大數(shù)據(jù)庫(kù)時(shí)代的3高
- 高并發(fā)
- 高可擴(kuò)
- 高性能
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
注意:?默認(rèn)從庫(kù)是不能讀取,需要設(shè)置?SlaveOk
?的狀態(tài):
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
缺點(diǎn):?當(dāng)主庫(kù)掛了,需要手動(dòng)切換到從庫(kù)
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
設(shè)置:?安排?rs1
?進(jìn)主節(jié)點(diǎn),rs2
、rs3
?進(jìn)從節(jié)點(diǎn)。
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({});
測(cè)試:?強(qiáng)行停止主庫(kù)?rs1
,檢查從庫(kù)是否能分配并切換到主庫(kù) ,在繼續(xù)強(qiáng)行停止分配后的主庫(kù)?rs2
docker stop rs1id docker exec -it rs2id /bin/bash docker stop rs2id docker exec -it rs3id /bin/bash docker-compose rm
結(jié)論:
當(dāng)主節(jié)點(diǎn)?rs1
?掛了,會(huì)有從節(jié)點(diǎn)過(guò)來(lái)替代原有主庫(kù)的位置,但是當(dāng)僅剩最后一個(gè)從庫(kù)時(shí),無(wú)法切換為主庫(kù)。
當(dāng)主節(jié)點(diǎn)?rs1
?重新啟動(dòng)恢復(fù)后,只會(huì)立馬變?yōu)閺膸?kù),不再是主庫(kù)。除非等到現(xiàn)在的主庫(kù)掛了,才有可能重新回到主庫(kù)的位置。
問(wèn)題:?當(dāng)主節(jié)點(diǎn)?rs1
?掛了,會(huì)有從節(jié)點(diǎn)過(guò)來(lái)替代原有主庫(kù)的位置,但是具體是哪一個(gè)從庫(kù)沒(méi)有辦法控制。所以我們需要添加一個(gè)沖裁
?來(lái)解決這個(gè)問(wèn)題。
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({});
注意:?當(dāng)存在?arbiter
節(jié)點(diǎn) (只是仲裁,并不存儲(chǔ)數(shù)據(jù))
原文鏈接:https://www.cnblogs.com/Run2948/p/MongoDB_Massive_Data_Efficient_ReadWrite.html
相關(guān)推薦
- 2022-12-12 React?高階組件與Render?Props優(yōu)缺點(diǎn)詳解_React
- 2023-06-17 Hugo?Config模塊構(gòu)建實(shí)現(xiàn)源碼剖析_Golang
- 2022-06-07 使用kubeadm部署多節(jié)點(diǎn)集群_云其它
- 2022-09-02 Redis解決Session共享問(wèn)題的方法詳解_Redis
- 2022-06-08 Spring Cloud Nacos 配置動(dòng)態(tài)刷新
- 2022-12-30 一文帶你了解Go語(yǔ)言中接口的使用_Golang
- 2022-08-07 C#并行庫(kù)Parallel類(lèi)介紹_C#教程
- 2021-12-30 C++內(nèi)存管理之簡(jiǎn)易內(nèi)存池的實(shí)現(xiàn)_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支