MongoDB 復(fù)制(副本集)學(xué)習(xí)筆記
本文實(shí)例講述了MongoDB 復(fù)制(副本集)。分享給大家供大家參考,具體如下:
replication set復(fù)制集,
復(fù)制集,多臺(tái)服務(wù)器維護(hù)相同的數(shù)據(jù)副本,提高服務(wù)器的可用性。
MongoDB復(fù)制是將數(shù)據(jù)同步在多個(gè)服務(wù)器的過(guò)程。
復(fù)制提供了數(shù)據(jù)的冗余備份,并在多個(gè)服務(wù)器上存儲(chǔ)數(shù)據(jù)副本,提高了數(shù)據(jù)的可用性, 并可以保證數(shù)據(jù)的安全性。
復(fù)制還允許您從硬件故障和服務(wù)中斷中恢復(fù)數(shù)據(jù)。
設(shè)置過(guò)程:
(1)創(chuàng)建示例
假設(shè)創(chuàng)建三臺(tái),創(chuàng)建三個(gè)實(shí)例目錄和日志目錄:
mkdir /home/m17 /home/m18 /home/m19 /home/mlog
啟動(dòng)三個(gè)示例,端口分別為27017、27018、27019。
./mongod --dbpath=/home/m17 --logpath=/home/mlog/m17.log --fork --port=27017 --replSet=rs2 --smallfiles ./mongod --dbpath=/home/m18 --logpath=/home/mlog/m18.log --fork --port=27018 --replSet=rs2 --smallfiles ./mongod --dbpath=/home/m19 --logpath=/home/mlog/m19.log --fork --port=27019 --replSet=rs2 --smallfiles
說(shuō)明:
參數(shù)--replSet設(shè)置一樣,才能屬于同一個(gè)復(fù)制集
參數(shù)--smallfiles可以節(jié)省空間,提高速度。
然后使用ps aux | grep mongo可以查看到啟動(dòng)起來(lái)的三個(gè)端口。
(2)配置
使用客戶端連接mongo進(jìn)行配置:
[test@localhost bin]$ ./mongo
要管理配置,所以切換到admin上:
>use admin
(配置是json格式)
var rsconf = { _id:'rs2', members:[ {"_id":0,host:'192.168.8.172:27017'}, {_id:1,host:'192.168.8.172:27018'}, {_id:2,host:'192.168.8.172:27019'} ] }
如果沒(méi)有配置ip,使用127.0.0.1
var rsconf = { _id:'rs2', members:[ {_id:0,host:'127.0.0.1:27017'}, {_id:1,host:'127.0.0.1:27018'}, {_id:2,host:'127.0.0.1:27019'} ] }
執(zhí)行后,使用 printjson(rsconf)查看剛才的配置。
然后執(zhí)行初始化:
>rs.initiate(rsconf); > rs.initiate(rsconf); { "ok" : 1, "operationTime" : Timestamp(1539933041, 1), "$clusterTime" : { "clusterTime" : Timestamp(1539933041, 1), "signature" : { "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="), "keyId" : NumberLong(0) } } } rs2:SECONDARY>
查看節(jié)點(diǎn):
rs.status()
刪除節(jié)點(diǎn):
rs.remove('127.0.0.1:27019')
添加節(jié)點(diǎn):
rs.add('127.0.0.1:27019')
切換節(jié)點(diǎn):
默認(rèn)是在27017端口,即rs2:PRIMARY>狀態(tài),
退出mongo客戶端命令模式,
切換到另一個(gè)端口:
[test@localhost bin]$ ./mongo --port=27018,
即切換到rs2:SECONDARY>狀態(tài)。
測(cè)試:
在主服務(wù)上,創(chuàng)建庫(kù)和集合,
rs2:PRIMARY> use student switched to db student rs2:PRIMARY> db.user.insert({uid:1,name:'zhang san'}) WriteResult({ "nInserted" : 1 }) rs2:PRIMARY> db.user.find(); { "_id" : ObjectId("5bc9889f85a0986431fd2499"), "uid" : 1, "name" : "zhang san" }
去從服務(wù)上查看
show dbs
然后看到有錯(cuò)誤,具體錯(cuò)誤信息是:
...
"errmsg" : "not master and slaveOk=false",
...
是因?yàn)閟lave默認(rèn)不允許讀寫(xiě):
>rs.slaveOk();
然后就可以看到主服務(wù)器創(chuàng)建的庫(kù)和集合了。
同理27019也需要執(zhí)行這個(gè)命令才能自動(dòng)同步和讀寫(xiě)。
當(dāng)主服務(wù)器27017停掉的時(shí)候,
第二個(gè)27018就自動(dòng)變成主服務(wù)器master狀態(tài)。
但是27019需要再次執(zhí)行rs.slaveOk()才能自動(dòng)同步讀寫(xiě)。
shell腳本:
#!/bin/bash IP=127.0.0.1 NA=rs2 sudo mkdir -p /home/m17 /home/m18 /home/m19 /home/mlog sudo chmod -R 777 /home/m17 /home/m18 /home/m19 /home/mlog ./mongod --dbpath=/home/m17 --logpath=/home/mlog/m17.log --fork --port=27017 --replSet=${NA} --smallfiles ./mongod --dbpath=/home/m18 --logpath=/home/mlog/m18.log --fork --port=27018 --replSet=${NA} --smallfiles ./mongod --dbpath=/home/m19 --logpath=/home/mlog/m19.log --fork --port=27019 --replSet=${NA} --smallfiles ./mongo <<EOF use admin var rsconf = { _id:'rs2', members:[ {_id:0,host:'${IP}:27017'}, {_id:1,host:'${IP}:27018'}, {_id:2,host:'${IP}:27019'} ] } rs.initiate(rsconf)
希望本文所述對(duì)大家MongoDB數(shù)據(jù)庫(kù)程序設(shè)計(jì)有所幫助。
相關(guān)文章
Mongodb常見(jiàn)操作符和運(yùn)算符總結(jié)
MongoDB 提供了豐富的操作符(Operators)和運(yùn)算符(Expressions)用于在查詢和更新文檔時(shí)指定條件和操作數(shù)據(jù),本文將通過(guò)代碼示例給大家詳細(xì)的總結(jié)一下Mongodb常見(jiàn)操作符和運(yùn)算符,需要的朋友可以參考下2024-01-01Ubuntu系統(tǒng)中安裝MongoDB及其啟動(dòng)命令mongod的教程
這篇文章主要介紹了Ubuntu系統(tǒng)中安裝MongoDB及其啟動(dòng)命令mongod的教程,包括設(shè)置MongoDB開(kāi)機(jī)啟動(dòng)的腳本示例,非常推薦,需要的朋友可以參考下2016-01-01MongoDB入門(mén)教程之C#驅(qū)動(dòng)操作實(shí)例
這篇文章主要介紹了MongoDB入門(mén)教程之C#驅(qū)動(dòng)操作實(shí)例,即C#中操作MongoDB數(shù)據(jù)的方法和代碼示例,需要的朋友可以參考下2014-08-08數(shù)據(jù)庫(kù)MongoDB啟動(dòng)的三種方式
MongoDB是一個(gè)流行的分布式文檔型數(shù)據(jù)庫(kù),用于存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),本文給大家總結(jié)了數(shù)據(jù)庫(kù)MongoDB啟動(dòng)的三種方式,講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-07-07mongoDB4.2.8備份恢復(fù)與導(dǎo)出導(dǎo)入(推薦)
這篇文章主要介紹了mongoDB4.2.8備份恢復(fù)與導(dǎo)出導(dǎo)入的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12Mongodb 崩潰報(bào)錯(cuò) Too many open files的問(wèn)題解析
這篇文章主要介紹了Mongodb 崩潰報(bào)錯(cuò) Too many open files的問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12MongoDB快速入門(mén)及其SpringBoot實(shí)戰(zhàn)教程
MongoDB是一個(gè)開(kāi)源、高性能、無(wú)模式的文檔型數(shù)據(jù)庫(kù),當(dāng)初的設(shè)計(jì)就是用于簡(jiǎn)化開(kāi)發(fā)和方便擴(kuò)展,是NoSQL數(shù)據(jù)庫(kù)產(chǎn)品中的一種,它支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是一種類似于JSON的格式叫BSON,本文介紹MongoDB快速入門(mén)及其SpringBoot實(shí)戰(zhàn),感興趣的朋友一起看看吧2023-12-12在 Fedora 上安裝 MongoDB 服務(wù)器的方法教程
Mongo是一個(gè)高性能、開(kāi)源、無(wú)模式的、面向文檔的數(shù)據(jù)庫(kù),它是最受歡迎的 NoSQL 數(shù)據(jù)庫(kù)之一。這篇文章主要介紹了在 Fedora 上安裝 MongoDB 服務(wù)器的方法,需要的朋友可以參考下2020-03-03MongoDB模糊查詢正則regex(類似like?和?not?like)
在類關(guān)系型數(shù)據(jù)庫(kù)中,like和not?like是常用的模糊查詢操作符,它允許我們?cè)谄ヅ渥侄蔚臅r(shí)候使用通配符,在MongoDB中,也有類似的操作符,MongoDB?可以使用?$regex?操作符來(lái)設(shè)置匹配字符串的正則表達(dá)式,MongoDB?使用?PCRE(Perl?兼容的正則表達(dá)式)作為正則表達(dá)式語(yǔ)言2024-02-02