日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

《MongoDB高手課》學(xué)習(xí)記錄(第七天)

 小樣樣樣樣樣樣 2020-02-16

寫(xiě)在前面

這周在出差,手頭只有一臺(tái)MAC,所以這節(jié)的學(xué)習(xí)全程在 MacOS 10.15.2 環(huán)境下進(jìn)行。

第七天

今天要學(xué)習(xí)的是《11 | 實(shí)驗(yàn):搭建MongoDB復(fù)制集》,是對(duì)昨天學(xué)習(xí)內(nèi)容的一個(gè)演練。

目標(biāo)

通過(guò)在一個(gè)電腦上裝三個(gè)數(shù)據(jù)庫(kù)實(shí)例來(lái)搭建一個(gè)復(fù)制集,步驟如下:

  1. 啟動(dòng)一個(gè)MongoDB實(shí)例;

  2. 將3個(gè)實(shí)例搭建成一個(gè)復(fù)制集

  3. 對(duì)復(fù)制集參數(shù)的常規(guī)調(diào)整

準(zhǔn)備

  1. 安裝最新版本的MongoDB

  2. 配置環(huán)境變量,將Mongo的bin目錄配置到時(shí)PATH變量(如果是Windows就加到環(huán)境變量里)

  3. 確保10GB以上的硬盤(pán)空間

創(chuàng)建數(shù)據(jù)目錄

因?yàn)槭?個(gè)實(shí)例,所以要?jiǎng)?chuàng)建3個(gè)不同的目錄來(lái)保存數(shù)據(jù)文件、配置文件及日志文件。

實(shí)例目錄

/data/db1
/data/db2
/data/db3

可通過(guò)下面一條命令創(chuàng)建(MacOS及Linux)

mkdir -p /data/db{1,2,3}

windows下一個(gè)一個(gè)建吧

日志文件

統(tǒng)一命名為mongod.log,每個(gè)目錄下面一個(gè)

配置文件

統(tǒng)計(jì)命名為mongod.conf,每個(gè)目錄下面一個(gè)

準(zhǔn)備配置文件

端口

28017、28018、28019,每個(gè)實(shí)例指向不同的端口

配置文件(mongod.conf)

Linux/MacOS

systemLog:
  destination: file
  path: /data/db1/mongod.log ## 日志
  logAppend: true
storage:
  dbPath: /data/db1 ## 數(shù)據(jù)目錄
net:
  bindIp: 0.0.0.0 ## 本機(jī)所有網(wǎng)卡連接都提供對(duì)外服務(wù)
  port: 28017 ## 端口號(hào)
replication:
  replSetName: rs0  ## 復(fù)制集的名字為 rs0
processManagement:
  fork: true ## 進(jìn)程在后臺(tái)運(yùn)行

Windows

systemLog:
  destination: file
  path: c:\data\db1\mongod.log
  logAppend: true
storage:  
  dbPath: c:\data\db1
net:  
  bindIp: 0.0.0.0
  port: 28017
replication: 
  replSetName: rs0

啟動(dòng)MongoDB進(jìn)程

每個(gè)實(shí)例都需要啟動(dòng)一下,通過(guò)ps命令可以查看到進(jìn)程是不是啟動(dòng)了

ps -ef |grep mongod

Linux/MacOS

mongod -f /data/db1/mongod.conf

Windows

窗口不能關(guān),要不然進(jìn)程就關(guān)了

mongod -f c:\data\db1\mongod.conf

配置復(fù)制集

方法1

hostname替換成實(shí)際的主機(jī)名,需要 /etc/hosts 文件中做了配置,能解析

mongo --port 28017
> rs.initiate()
> rs.add("HOSTNAME:28018")
> rs.add("HOSTNAME:28019")

運(yùn)行結(jié)果記錄

> rs.initiate()
{
    "info2" : "no configuration specified. Using a default configuration for the set",
    "me" : "MacBook-Pro.local:28017",
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1577280751, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    },
    "operationTime" : Timestamp(1577280751, 1)
}
rs0:SECONDARY>
rs0:PRIMARY> rs.add("MacBook-Pro.local:28018")
{
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1577280789, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    },
    "operationTime" : Timestamp(1577280789, 1)
}
rs0:PRIMARY> rs.add("MacBook-Pro.local:28019")
{
    "ok" : 1,
    "$clusterTime" : {
        "clusterTime" : Timestamp(1577280794, 1),
        "signature" : {
            "hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
            "keyId" : NumberLong(0)
        }
    },
    "operationTime" : Timestamp(1577280794, 1)
}

方法2

mongo --port 28017
> rs.initiate({
  _id: "rs0",
  members: [
      {
        _id: 0,
        host: "localhost:28017" 
      },
      {
        _id: 1,
        host: "localhost:28018" 
      },
      {
        _id: 2,
        host: "localhost:28019" 
      }
  ]
})

驗(yàn)證配置

在28017上插入數(shù)據(jù),然后在28018上查看結(jié)果

28017

rs0:PRIMARY> db.test.findOne()
null
rs0:PRIMARY> db.test.insert({a:1})
WriteResult({ "nInserted" : 1 })
rs0:PRIMARY> db.test.findOne()
{ "_id" : ObjectId("5e03695cbed9486c92da1acd"), "a" : 1 }
rs0:PRIMARY> db.test.insert({a:2})
WriteResult({ "nInserted" : 1 })
rs0:PRIMARY> db.test.find()
{ "_id" : ObjectId("5e03695cbed9486c92da1acd"), "a" : 1 }
{ "_id" : ObjectId("5e03696cbed9486c92da1ace"), "a" : 2 }

28018

rs0:SECONDARY> rs.slaveOk() ## 從結(jié)點(diǎn)可以讀數(shù)據(jù)
rs0:SECONDARY> db.test.find() ## 否則這條報(bào)錯(cuò)
rs0:SECONDARY> db.test.find()
{ "_id" : ObjectId("5e03695cbed9486c92da1acd"), "a" : 1 }
rs0:SECONDARY> db.test.find()
{ "_id" : ObjectId("5e03695cbed9486c92da1acd"), "a" : 1 }
{ "_id" : ObjectId("5e03696cbed9486c92da1ace"), "a" : 2 }
rs0:SECONDARY>

總結(jié)

今天主要學(xué)習(xí)了如何在一臺(tái)實(shí)體機(jī)器上,通過(guò)不同的端口來(lái)模擬搭建一個(gè)3結(jié)點(diǎn)的復(fù)制集

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多