Mongodb主從複製/ 複本集/分區叢集介紹
前面的文章介紹了Mongodb的安裝使用,在 MongoDB 中,有兩種資料冗餘方式,一種 是 Master-Slave 模式(主從複製),一種是 Replica Sets 模式(複本集)。
Mongodb一共有三種叢集搭建的方式:Replica Set(複本集)、Sharding(切片)Master-Slaver(主從)【目前已不推薦使用了。。。】其中,Sharding叢集也是三種叢集中最複雜的。複本集比起主從可以實現容錯移轉。。非常使用。mongoDB目前已不推薦使用主從模式,取而代之的是複本集模式。複本集其實一種互為主從的關係,可理解為主主。複本集指將資料複製,多份儲存,不同伺服器儲存同一份資料,在出現故障時自動切換。對應的是資料冗餘、備份、鏡像、讀寫分離、高可用性等關鍵詞;而分區則指為處理大量資料,將資料分開儲存,不同伺服器儲存不同的資料,它們的資料總和即為整個資料集。追求的是高效能。在生產環境中,通常是這兩種技術結合使用,分區+複本集。
一、先說說mongodb主從複製配置
主從複製是MongoDB最常用的複製方式,也是一個簡單的資料庫同步備份的叢集技術,這種方式很靈活.可用於備份,故障恢複,讀擴充等. 最基本的設定方式就是建立一個主節點和一個或多個從節點,每個從節點要知道主節點的地址。採用雙機備份後主節點掛掉了後從節點可以接替主機繼續服務。所以這種模式比單節點的高可用性要好很多。
配置主從複製的注意點
1)在資料庫叢集中要明確的知道誰是主伺服器,主伺服器只有一台.2)從伺服器要知道自己的資料來源也就是對應的主服務是誰.3)--master用來確定主伺服器,--slave 和 --source 來控制從伺服器
可以在mongodb.conf設定檔裡指明主從關係,這樣啟動mongodb的時候只要跟上設定檔就行,就不需要通過--master和--slave來指明主從了。
下面簡單記錄下Mongodb主從複製的部署過程
1)機器環境182.48.115.238 master-node182.48.115.236 slave-node兩台機器都關閉防火牆和selinuxmongodb的安裝參考:http://www.cnblogs.com/kevingrace/p/5752382.html2)主從配置.............master-node節點配置.............[root@master-node ~]# vim /usr/local/mongodb/mongodb.confport=27017bind_ip = 182.48.115.238dbpath=/usr/local/mongodb/datalogpath=/usr/local/mongodb/log/mongo.loglogappend=truejournal = truefork = truemaster = true //確定自己是主伺服器[root@master-node ~]# nohup /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf &[root@master-node ~]# ps -ef|grep mongodbroot 15707 15514 23 16:45 pts/2 00:00:00 /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.confroot 15736 15514 0 16:45 pts/2 00:00:00 grep mongodb[root@master-node ~]# lsof -i:27017COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEmongod 15707 root 7u IPv4 153114 0t0 TCP 182.48.115.238:27017 (LISTEN)由於mongodb.conf裡綁定了原生ip地址182.48.115.238,所以串連mongodb的時候必須用這個ip地址,不能使用預設的127.0.0.1,也就是說:[root@master-node ~]# mongo 182.48.115.238:27017 //這樣才能串連mongodb[root@master-node ~]# mongo 或者 mongodb 127.0.0.1:27017 // 這樣不能串連mongodb.............slave-node節點配置.............[root@slave-node ~]# vim /usr/local/mongodb/mongodb.conf port=27017dbpath=/usr/local/mongodb/datalogpath=/usr/local/mongodb/log/mongo.loglogappend=truejournal = truefork = truebind_ip = 182.48.115.236 //確定主要資料庫連接埠source = 182.48.115.238:27017 //確定主要資料庫連接埠slave = true //確定自己是從伺服器[root@slave-node ~]# nohup /usr/local/mongodb/bin/mongod --config /usr/local/mongodb/mongodb.conf &[root@slave-node ~]# ps -ef|grep mongoroot 26290 26126 8 16:47 pts/