MongoDB的主從複制其實很簡單,就是在運作主的伺服器上開啟mongod程序時,加入參數--master即可,在運作從的伺服器上開啟mongod程序時,加入--slave 和 --source 指定主即可,這樣,在主資料庫更新時,資料被複制到從資料庫中
(這裡日志檔案和通路資料時授權使用者暫時不考慮)
下面我在單台伺服器上開啟2deamon來模拟2台伺服器進行主從複制:
mkdirmmastermslavemkdirmmastermslavemongodb/bin/mongod --port 28018 --dbpath ~/m_master --master &
$mongodb/bin/mongod --port 28019 --dbpath ~/m_slave --slave --source localhost:28018 &
這樣主從伺服器都已經啟動了,可以利用netstat -an -t 檢視28018、28019端口是否開放
登入主伺服器:
$ mongodb/bin/mongo --port 28018
MongoDB shell version: 1.2.4-
url: test
connecting to: 127.0.0.1:28018/test
type "help" for help
> show dbs
admin
local
test
> use test
switched to db test
> show collections
這裡主上的test資料什麼表都沒有,為空,檢視從伺服器同樣也是這樣
$ mongodb/bin/mongo --port 28019
MongoDB shell version: 1.2.4-
connecting to: 127.0.0.1:28019/test
那麼現在我們來驗證主從資料是否會像想象的那樣同步呢?
我們在主上建立表user
> db
>db.createCollection("user");
> show collections
system.indexes
user
>
表user已經存在了,而且test庫中還多了一個system.indexes用來存放索引的表
到從伺服器上檢視test庫:
User
> db.user.find();
從伺服器的test庫中user表已經存在,同時我還查了一下user表為空
現在我們再來測試一下,向主伺服器test庫的user表中插入一條資料
> db.user.insert({uid:1,name:"Falcon.C",age:25});
> db.user.find();
{ "_id" : ObjectId("4b8226a997521a578b7aea38"), "uid" : 1, "name" : "Falcon.C", "age" : 25 }
這時我們檢視從伺服器的test庫user表時會多出一條記錄
來:
MongoDB還有 Replica Pairs 和 Master - Master
本文轉自 不得閑 部落格園部落格,原文連結:http://www.cnblogs.com/DxSoft/archive/2010/10/21/1857358.html ,如需轉載請自行聯系原作者http://www.cnblogs.com/DxSoft/archive/2010/10/21/1857358.html