主從復(fù)制是Mongodb最常用的復(fù)制方式。這種方式非常靈活,可用于備份、故障恢復(fù)、讀擴(kuò)展等。Mongodb主從結(jié)構(gòu)如下圖所示:
最基本的方式就是建立一個(gè)主節(jié)點(diǎn)和一個(gè)或者多個(gè)從節(jié)點(diǎn),每個(gè)從節(jié)點(diǎn)要知道主節(jié)點(diǎn)的地址。主節(jié)點(diǎn)服務(wù)器使用mongod --master方式啟動(dòng),而從節(jié)點(diǎn)服務(wù)器則使用mongod --slave --source master_address方式啟動(dòng)。其中master_address指的是主節(jié)點(diǎn)服務(wù)器的地址。
?
一般主從節(jié)點(diǎn)是在多臺(tái)服務(wù)器上,這里我通過在單臺(tái)機(jī)器上建立多個(gè)實(shí)例來模擬主從復(fù)制。
首先建立主從節(jié)點(diǎn)數(shù)據(jù)目錄:
[root@localhost mongodb]# mkdir -p /opt/mongodb/data/dbs/master [root@localhost mongodb]# mkdir -p /opt/mongodb/data/dbs/slave
然后配置主從節(jié)點(diǎn)的配置文件(也可以通過參數(shù)直接啟動(dòng))
mongodb-master.conf(主節(jié)點(diǎn)配置文件)
port=10000 dbpath=data/dbs/master logpath=log/mongodb-master.log logappend=true
mongodb-slave.conf(從節(jié)點(diǎn)配置文件)
port=10001 dbpath=data/dbs/slave logpath=log/mongodb-slave.log logappend=true
接著分別啟動(dòng)主節(jié)點(diǎn)服務(wù)和從節(jié)點(diǎn)服務(wù):
1)啟動(dòng)主節(jié)點(diǎn)服務(wù)
[root@localhost mongodb]# ./bin/mongod -f mongodb-master.conf --master all output going to: log/mongodb-master.log
2)啟動(dòng)從節(jié)點(diǎn)服務(wù)(注意需要使用--source參數(shù)指定主服務(wù)的地址)
[root@localhost mongodb]# ./bin/mongod -f mongodb-slave.conf --slave --source localhost:10000 all output going to: log/mongodb-slave.log
然后連接到主節(jié)點(diǎn)
[root@localhost mongodb]# ./bin/mongo localhost:10000 MongoDB shell version: 2.0.6 connecting to: localhost:10000/test > db.users.find() #查詢主節(jié)點(diǎn)users集合中的數(shù)據(jù),結(jié)果返回為空 >
使用另外一個(gè)連接連接到從節(jié)點(diǎn)
[root@localhost mongodb]# ./bin/mongo localhost:10001 MongoDB shell version: 2.0.6 connecting to: localhost:10001/test > db.users.find() #查詢從節(jié)點(diǎn)users集合中的數(shù)據(jù),結(jié)果也返回為空 >
往主節(jié)點(diǎn)users集合中插入數(shù)據(jù)
#首先往users集合中插入數(shù)據(jù) > db.users.save({"name":"zhouxiaofei","position":"Web tester"}) > db.users.save({"name":"chenzhou","position":"Java developer"}) > db.users.find() #查詢主節(jié)點(diǎn)users集合中數(shù)據(jù),返回如下結(jié)果 { "_id" : ObjectId("502a83750e192a4a90d0f6c1"), "name" : "zhouxiaofei", "position" : "Web tester" } { "_id" : ObjectId("502a837c0e192a4a90d0f6c2"), "name" : "chenzhou", "position" : "Java developer" } >
通過另外一個(gè)連接從節(jié)點(diǎn)的實(shí)例查詢從節(jié)點(diǎn)中users集合中的數(shù)據(jù)
> db.users.find() #查詢從節(jié)點(diǎn)中users集合,返回了主節(jié)點(diǎn)中插入的數(shù)據(jù) { "_id" : ObjectId("502a83750e192a4a90d0f6c1"), "name" : "zhouxiaofei", "position" : "Web tester" } { "_id" : ObjectId("502a837c0e192a4a90d0f6c2"), "name" : "chenzhou", "position" : "Java developer" } >
根據(jù)結(jié)果可以看出,簡單的主從復(fù)制已經(jīng)實(shí)現(xiàn)。關(guān)于Mongodb主從復(fù)制更多的知識(shí),可以參考mongodb在線文檔,地址如下: http://www.mongodb.org/display/DOCS/Master+Slave
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
