TopCoder - 12349 SRM579 Round1 Div1 RockPaperScissors (概率dp)
Windows下本機搭建MongoDB複製集
一、新建目錄
開啟windows的ctrl+r ,輸入poweshell
輸入以下命令,建立三個資料夾:
md d:\data\db1
md d:\data\db2
md d:\data\db3
實際環境上我們應該要搭建在三臺不同的機器上(不然搭了白搭),但是現在我們要在一臺機器上執行三個程序,因此我們為他們各自設定不同的配置。
其不同的配置分別為:
-
不同的埠
- 這裡我們設定埠分別為:28017/28018/28019
-
不同的資料目錄
-
資料目錄為
-
d:\data\db1
d:\data\db2
d:\data\db3
-
-
不同日誌檔案路徑
-
日誌檔案路徑為:
d:\data\db1\mongod.log
d:\data\db2\mongod.log
d:\data\db3\mongod.log
-
二、寫配置檔案
我們來寫一個配置檔案:
第一個配置檔案如下: d:\data\db1\mongod.conf
systemLog: destination: file path: d:\data1\mongod.log #日誌檔案路徑 logAppend: true storage: dbPath: d:\data1\# 資料目錄 net: bindIp: 0.0.0.0 # mongoDB會在所有的網絡卡的地址上監聽 port: 28017 # 埠 replication: replSetName: rs0 # 表示當前是複製集,不加的話就表示當前是單節點
第二個配置檔案如下: d:\data\db2\mongod.conf
systemLog:
destination: file
path: d:\data2\mongod.log #日誌檔案路徑
logAppend: true
storage:
dbPath: d:\data2\ # 資料目錄
net:
bindIp: 0.0.0.0 # mongoDB會在所有的網絡卡的地址上監聽
port: 28018 # 埠
replication:
replSetName: rs0 # 表示當前是複製集,不加的話就表示當前是單節點
第三個配置檔案如下: d:\data\db3\mongod.conf
systemLog:
destination: file
path: d:\data3\mongod.log #日誌檔案路徑
logAppend: true
storage:
dbPath: d:\data3 # 資料目錄
net:
bindIp: 0.0.0.0 # mongoDB會在所有的網絡卡的地址上監聽
port: 28019 # 埠
replication:
replSetName: rs0 # 表示當前是複製集,不加的話就表示當前是單節點
執行前請先在D盤建立三個資料夾,分別為data1 data2 data3
至此,配置檔案完成。
三、執行
win+r,開啟一個新的cmd,輸入:
mongod -f d:data/db1/mongod.conf
輸入完之後再新開兩個cmd,分別輸入
mongod -f d:\data\db2\mongod.conf
mongod -f d:\data\db3\mongod.conf
注意,在windows中必須新開cmd才可以進行操作。否則程序將直接結束。
現在我們已經新開了三個資料節點,但是他們此時是彼此獨立的。
四、讓他們連起來~!
現在我們要配置複製集,當前有兩個方法。
首先保證我們的hostname可以被解析:
輸入hostname檢視當前主機名
方法1:
在mongo裡面設定。
在命令列輸入
mongo localhost:28017
繼續輸入:
rs.initiate()
這時我們的輸入變成了:
這表示我們當前節點已經不再是一個單節點,而是一個複製集節點。SECONDARY表示這時一個從節點。
再按一下回車,
這表示當前我們的節點已經從Secondary節點變為一個PRIMARY節點。輸入rs.status()可以檢視屬性,其中members屬性表示我們當前的複製集有多少個節點。
現在只有一個,我們往裡面新增新的節點。
輸入:
rs.add(Sitr2020:28018)
可以新增第二個節點。
同樣的,輸入以下可以新增第三個節點:
rs.add(Sitr2020:28019)
再輸入rs.status(),檢視屬性members,會發現已經多了兩個節點。
現在我們可以驗證一下。
五、驗證
為了更方便地看到效果,我們新開一個powershell檢視效果。
我們開啟,輸入:
mongo localhost:28018
然後我們試一下往新開的powershell裡面輸入rs.salveOk()以便讓我們可以在從節點讀取資料。
在主節點的test資料庫輸入插入資料:
db.test.insert({a:1})
插入後,我們再往從節點的powershell上查詢test資料庫:
db.test.find()
可以發現,是可以查到新插入的資料的。