實戰MongoDB
Master-Slave
MongoDB支援不同服務之間的非同步資料複製,來實現failover(容錯移轉,故障切換,故障恢複) and redundancy(資料冗餘)。
同一時間,只有一個服務節點(primary或者master)支援寫入。
MongoDB支援兩種複製的模式:
Master/Slave,主從複製,角色包括master和slave。
Replica Set,複製集複製,角色包括primary和secondary。
介紹Master/Slave的官方地址:
http://www.mongodb.org/display/DOCS/Master+Slave
介紹Replica Set的官方地址:
http://www.mongodb.org/display/DOCS/Replica+Sets
今天實戰的是replica set,也就是複製集複製。
replica set可以實現自動的failover和自動的recovery。
replica set由兩個或者更多的節點群組成,實現彼此的複製。
replica set自動選擇primary節點,沒有一個節點是固定的primary。
mongos會自動探索一個replica set的primary節點發生變化,並將寫操作發送給這個新的primary節點。
通常用於下面幾個情境
資料冗餘。
自動failover,提供高可用性的服務。
分散讀的負載。
簡化維護(相對於master-slave來說)。
災難恢複。
首先還是啟動mongod,用於replica set的參數有兩個:
--replSet <setname>,複製集的名稱。
--oplogSize <MB>,動作記錄的大小,單位為MB。
這回我們在ubuntu下面配置replica set,先啟動兩個mongod節點。
mongod --dbpath /home/andyshi/mongo1/ --logpath /home/andyshi/mongo1/log.log --replSet shard1 --port 10001 --bind_ip 192.168.0.21
mongod --dbpath /home/andyshi/mongo2/ --logpath /home/andyshi/mongo2/log.log --replSet shard1 --port 10002 --bind_ip 192.168.0.21
你會注意到,上面兩個mongod的啟動參數replSet指定了相同的值shard1,也就是兩個個mongod節點處於同一個replica set中。