1. 程式人生 > >MongoDB3.2副本集配置

MongoDB3.2副本集配置

終於把副本集配置完成了,網上的資料太亂了,等弄好了再看官網才發現官網寫的最清晰和簡潔

推薦官網的副本集配置:https://docs.mongodb.com/manual/tutorial/deploy-replica-set/

引述大神一段總結:http://blog.csdn.net/huwei2003/article/details/40453223

{

從概念上說一下MongoDB副本集和主從複製的區別。其實副本集(Replica Set)是主從複製的高階形式。高階在哪裡呢?主動複製實現了資料備份+讀擴充套件,但是master一旦down掉,需要手動啟動slave。副本集在此基礎上實現了備份自動重啟的功能,也就是某一臺slave會挺身而出,擔當起master的職責。所以有三個角色,master(Primary),slave(Secondary),還有仲裁伺服器。

}

下面是我自己的測試過程

環境:win10,MongoDB3.2

副本集優勢:副本集實現了備份自動重啟的功能,也就是master一旦down掉,無需手動啟動slave ,某一臺會自動slave挺身而出,擔當起master的職責,維持資料庫的讀寫操作

目標:

一臺master(primary):master 192.168.228.1:27017

三臺slave(secondary):mslave1 192.168.228.1:27018 ;   mslave2 192.168.228.1:27019 ;  mslave3 192.168.228.134:27017

其中192.168.228.1是本地win10地址,192.168.228.134是我虛擬機器win7的地址,都是64位

(我機器和虛擬機器用的nat方式互聯,所有我的地址192.168.228.1這麼噁心的地址    T_T)

第一步:基本配置

略過mongodb的安裝和基本操作,我以前的文章都寫的很清楚,不贅述

http://blog.csdn.net/rainyspring4540/article/details/52584257

第二步:手動建立四個服務例項的檔案目錄,,並配置好各自bin目錄的環境變數

192.168.228.1:27017  對應 本機D:/data/rs27017

192.168.228.1:27018  對應 本機D:/data/rs27018

192.168.228.1:27019  對應 本機D:/data/rs27019

192.168.228.134:27017  對應 虛擬機器D:/data

第二步:首先啟動本地192.168.228.1:27017的伺服器副本集例項,作為master

cmd開啟命令提示符,執行
mongod  --dbpath d:/data/rs27017 --replSet mySet  --port 27017


啟動服務後,另開啟一個命令提示符進行登陸
mongo --port 27017
接著定義變數,執行:
conf = {_id:"mySet",members:[{_id:0,host:"192.168.228.1:27017"}]}
回車

接著執行:

rs.initiate(conf)
回車顯示如下:

接著你輸入

db.isMaster()
會顯示出你的當前資料庫服務例項已經加到副本集中,並且是master,如圖:


第三步:啟動本地其他的服務,加入到副本集中

即192.168.228.1:27018和192.168.228.1:27019

開啟2個命令提示符,分別輸入並回車

mongod --dbpath d:/data/rs27018 --replSet mySet --port 27018

mongod --dbpath d:/data/rs27019 --replSet mySet --port 27019

另外在本地開啟命令提示符,登陸master,

mongo --port 27017

接著新增剛剛那2個服務例項到副本集中,分別輸入並回車
rs.add("192.168.228.1:27018")

rs.add("192.168.228.1:27019")

顯示如下:


新增成功了,

此時你可以登陸任意機器輸入rs.status()檢視集合,我登陸的是slave  192.168.228.1:27019

如圖:


第四步:新增虛擬機器的資料庫伺服器到副本集中

即192.168.228.134:27017

方法基本同上:到虛擬機器中先啟動服務,同樣執行

mongod --dbpath d:/data --replSet mySet --port 27017
接著回到本機,開啟命令提示符,登陸master
mongo --port 27017
同上接著新增虛擬機器的服務到副本集中
rs.add("192.168.228.134:27017")
一切ok了

測試:

1 登陸master 插入一些資料,再去slave裡看 同樣存在,複製成功,

2 關閉master的視窗(即停止master服務)後,原來的master無法訪問,另外的一個slave變成了master,依然可以正常新增修改資料

3 我這裡配置讀寫的都是採用預設的,即master是讀寫,slave只讀

4 登入任意服務例項,執行rs.isMaster()可以檢視當前服務是否是master,執行rs.status()檢視副本群內部情況