主頁 > 知識庫 > MongoDB 復制(副本集)學習筆記

MongoDB 復制(副本集)學習筆記

熱門標簽:呼和浩特外呼系統(tǒng)原理是什么 外呼線路資源屬于電信業(yè)務嗎 小裙科技電銷機器人怎樣 長沙電銷外呼防封卡是什么 青白江400企業(yè)電話申請 crm外呼系統(tǒng)聯(lián)系方式 智能外呼系統(tǒng)官網(wǎng) 河南電話外呼系統(tǒng)招商 內(nèi)蒙古營銷智能外呼系統(tǒng)哪個好

本文實例講述了MongoDB 復制(副本集)。分享給大家供大家參考,具體如下:

replication set復制集,
復制集,多臺服務器維護相同的數(shù)據(jù)副本,提高服務器的可用性。
MongoDB復制是將數(shù)據(jù)同步在多個服務器的過程。
復制提供了數(shù)據(jù)的冗余備份,并在多個服務器上存儲數(shù)據(jù)副本,提高了數(shù)據(jù)的可用性, 并可以保證數(shù)據(jù)的安全性。
復制還允許您從硬件故障和服務中斷中恢復數(shù)據(jù)。

設(shè)置過程:

(1)創(chuàng)建示例

假設(shè)創(chuàng)建三臺,創(chuàng)建三個實例目錄和日志目錄:
mkdir /home/m17 /home/m18 /home/m19 /home/mlog
啟動三個示例,端口分別為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

說明:

參數(shù)--replSet設(shè)置一樣,才能屬于同一個復制集
參數(shù)--smallfiles可以節(jié)省空間,提高速度。

然后使用ps aux | grep mongo可以查看到啟動起來的三個端口。

(2)配置

使用客戶端連接mongo進行配置:

[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'}
]
}

如果沒有配置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é)點:

rs.status()

刪除節(jié)點:

rs.remove('127.0.0.1:27019')

添加節(jié)點:

rs.add('127.0.0.1:27019')

切換節(jié)點:

默認是在27017端口,即rs2:PRIMARY>狀態(tài),
退出mongo客戶端命令模式,
切換到另一個端口:

[test@localhost bin]$ ./mongo --port=27018,

即切換到rs2:SECONDARY>狀態(tài)。

測試:

在主服務上,創(chuàng)建庫和集合,

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" }

去從服務上查看

show dbs

然后看到有錯誤,具體錯誤信息是:

...
"errmsg" : "not master and slaveOk=false",
...

是因為slave默認不允許讀寫:

>rs.slaveOk();

然后就可以看到主服務器創(chuàng)建的庫和集合了。

同理27019也需要執(zhí)行這個命令才能自動同步和讀寫。

當主服務器27017停掉的時候,
第二個27018就自動變成主服務器master狀態(tài)。
但是27019需要再次執(zhí)行rs.slaveOk()才能自動同步讀寫。

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)

希望本文所述對大家MongoDB數(shù)據(jù)庫程序設(shè)計有所幫助。

您可能感興趣的文章:
  • MongoDB的主從復制及副本集的replSet配置教程
  • Mongodb 副本集搭建問題總結(jié)及解決辦法
  • Mongodb3.0.5 副本集搭建及spring和java連接副本集配置詳細介紹
  • mongodb3.4集群搭建實戰(zhàn)之高可用的分片+副本集
  • 詳解MongoDB中用sharding將副本集分配至服務器集群的方法
  • Mongodb副本集和分片示例詳解
  • CentOS 6.4創(chuàng)建Mongodb副本集
  • MongoDB副本集丟失數(shù)據(jù)的測試實例教程
  • mongodb 4.0副本集搭建的全過程

標簽:池州 楚雄 白山 黃石 安順 舟山 呼倫貝爾 菏澤

巨人網(wǎng)絡通訊聲明:本文標題《MongoDB 復制(副本集)學習筆記》,本文關(guān)鍵詞  MongoDB,復制,副本,集,學習,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡,涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MongoDB 復制(副本集)學習筆記》相關(guān)的同類信息!
  • 本頁收集關(guān)于MongoDB 復制(副本集)學習筆記的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章