1. 程式人生 > 實用技巧 >TopCoder - 12349 SRM579 Round1 Div1 RockPaperScissors (概率dp)

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()

​ 可以發現,是可以查到新插入的資料的。