標籤:拒絕 master delay 主從配置 日誌 3.2 建議 為我 資料
【雙機配置】
服務端:
兩台 Dell R730 雙路E5 伺服器
使用一個內網環境,網段20, ping 測試互連
主服ip: 192.168.20.176: 27017
從服ip: 192.168.20.178: 27015
用戶端: ThinkPad T460P
【系統內容】
服務端: windows Server 2012 R2
用戶端: Win10
MongoDB版本 3.2.10
【檔案夾建立】
雙機主從配置建議將雙機的檔案夾配置保持一致,但是對mongoDB的配置來講這個可以不那麼重視。
花了5分鐘學習,發現其實就是給定一個時間從機向主機請求同步而已。同步的內部機制等空一點研究源碼。
這裡我的檔案夾建立是 D:\Mongos\ 作為整個MongoDB的根目錄,資料目錄暫時也放在這下。
資料目錄: .\DB\ 主服的資料放在這檔案夾下 .\Master , 從服的資料對應為 .\Slave
日誌在 .\Log\下
【指令碼和運行效果】
mongoDB的配置指令碼非常簡單,這裡給出命令即可
先來主服的, 務必使用 --master進行標記。
.\Mongod.exe --dbpath [your path] --master -- port 27017
從服:
.\mongod.exe --slave --dbpath [your Path] --source 192.168.20.176 --port 27015 --slavedelay 5
其中 slavedelay指定從服每多少秒執行一次同步。
運行效果
主服:
啟動成功
需要說明一下,最下面一條資訊是從服啟動後建立了到主服的串連,所以有一個Connection accepted。
接下來是從服:
可以看到最下面一組紅框的資訊是每5s出現一次,代表在同步主服的資訊。
【啟動主備服務】
主服上運行 mongo.exe, 自動連接到 test, 這個和單機是一樣的。
等了很久,沒有看到mongo shell出現,說明啟動沒成功。
據說第一次啟動很慢,不知道是有多慢
等了挺久,突然好了。
之前幾個用戶端都沒法訪問到,下次測試一下什麼原因。
從服上同樣啟動mongo.exe,不過要指定一下從服的連接埠,即27015
這裡是為了測試同步是否成功,所以訪問本地的test。
【同步測試】
寫資料的一方從用戶端(ThinkPad上)操作,然後分別在兩個伺服器用戶端上讀一次看是否同步。
為了便於區分,在一次寫操作後先讀一次從服,5s後再讀一次。
用戶端的寫操作對主服進行。
插入操作很簡單,我們在test下操作即可 【該命令由用戶端發送】
可以看到查詢結果是正確的。
我們在從服上執行find()命令:
可以看到之前是報錯了的。
實際上主從模式下,從服僅僅作為備份,是不允許直接存取和操作的。但是我們可以給從服配置一個讀許可權,即 rs.slaveOk()
之後就能查詢了。 兩條記錄是因為我在主服下開的用戶端也執行了一個查詢。
到此可證明主從部署建立成功。
【待解決】
最後遇到一些問題:
按官方說法,我應該是能從用戶端(另一台pc)通過指定ip和連接埠的形式訪問從服的,因為從服自己也是這麼訪問的。
然而我的串連請求卻被從服拒絕了,有點奇怪。
【MongoDB】 windows下建立雙機主從