1. <ul id="0c1fb"></ul>

      <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
      <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区

      RELATEED CONSULTING
      相關(guān)咨詢
      選擇下列產(chǎn)品馬上在線溝通
      服務(wù)時(shí)間:8:30-17:00
      你可能遇到了下面的問(wèn)題
      關(guān)閉右側(cè)工具欄

      新聞中心

      這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
      mongodb復(fù)制集部署

      部署復(fù)制集

      由三個(gè)節(jié)點(diǎn)組成的 復(fù)制集 為網(wǎng)絡(luò)故障或是其他的系統(tǒng)故障提供了足夠的冗余。該復(fù)制集也有足夠的分布式讀操作的能力。復(fù)制集應(yīng)該保持奇數(shù)個(gè)節(jié)點(diǎn),這也就保證了 選舉 可以正常的進(jìn)行

      創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站制作、網(wǎng)頁(yè)設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)薛城,10多年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來(lái)電咨詢建站服務(wù):028-86922220

      用3臺(tái)已有的 mongod 實(shí)例來(lái)部署一個(gè)由三個(gè)節(jié)點(diǎn)組成的 復(fù)制集

      192.168.1.3 hadoop1.abc.com hadoop1
      192.168.1.4 hadoop2.abc.com hadoop2
      192.168.1.5 hadoop3.abc.com hadoop3

       

       

      部署復(fù)制集的注意事項(xiàng)

      架構(gòu)

      在生產(chǎn)環(huán)境中,我們應(yīng)該將每個(gè)節(jié)點(diǎn)部署在獨(dú)立的機(jī)器上,并使用標(biāo)準(zhǔn)的MongoDB端口 27017 。使用 bind_ip 參數(shù)來(lái)限制訪問(wèn)MongoDB的應(yīng)用程序的地址。

      若使用了異地分布式架構(gòu)的復(fù)制集,請(qǐng)確保多數(shù) mongod 實(shí)例節(jié)點(diǎn)位于主數(shù)據(jù)中心中。

       

      連通性

      確保各個(gè)節(jié)點(diǎn)之間可以正常通訊,且各個(gè)客戶端都處于安全的可信的網(wǎng)絡(luò)環(huán)境中。可以考慮以下事項(xiàng):

      • 建立虛擬的專用網(wǎng)絡(luò)。確保各個(gè)節(jié)點(diǎn)之間的流量是在本地網(wǎng)絡(luò)范圍內(nèi)路由的。(Establish a virtual private network. Ensure that your network topology routes all traffic between members within a single site over the local area network.)

      • 配置連接限制來(lái)防止未知的客戶端連接到復(fù)制集。

      • 配置網(wǎng)絡(luò)設(shè)置和防火墻規(guī)則來(lái)對(duì)將MongoDB的端口僅開(kāi)放給應(yīng)用程序,來(lái)讓?xiě)?yīng)用程序發(fā)的進(jìn)出數(shù)據(jù)包可以與MongoDB正常交流。

      最后請(qǐng)確保復(fù)制集各節(jié)點(diǎn)可以互相通過(guò)DNS或是主機(jī)名解析。我們需要配置DNS域名或是設(shè)置 /etc/hosts 文件來(lái)配置。

       

      這里實(shí)驗(yàn),是關(guān)閉防火墻,并把selinux設(shè)置成setenforce 0

      系統(tǒng)環(huán)境如下:

      [root@hadoop2 data]# cat /etc/issue
      CentOS release 6.5 (Final)
      Kernel \r on an \m
      [root@hadoop2 data]# uname -r
      2.6.32-431.el6.x86_64

       

      配置文件選項(xiàng):

       

      port = 27017

      bind_ip =

      dbpath =

      fore =  true

      replSet  =  testrs0

      rest = true

      詳細(xì)步驟

      1、建立每個(gè)節(jié)點(diǎn)都建立據(jù)據(jù)目錄

      [root@hadoop1 ~]# mkidr -pv /mongodb/data/
      [root@hadoop1 ~]# chown mongod.mongod /mongodb/data/

      2

      將復(fù)制集中的每個(gè)節(jié)點(diǎn)以適當(dāng)?shù)呐渲脜?shù)啟動(dòng)。

      在每個(gè)節(jié)點(diǎn)上啟動(dòng) mongod 并通過(guò)制定 replSet 參數(shù)來(lái)指定其復(fù)制集名,并可以指定其他需要的參數(shù)

      [root@hadoop1 ~]# vim /etc/mongod.conf
      //添加如下
      #Replica Set
      replSet = testrs0
      或者
      [root@hadoop1 ~]# mongod --replSet "testrs0"

       

      確保每個(gè)節(jié)點(diǎn)都有相同復(fù)制集名稱

      [root@hadoop1 ~]# scp /etc/mongod.conf root@hadoop2:/etc/;scp /etc/mongod.conf root@hadoop2:/etc/;

       

      注意了,如果解決啟動(dòng)mongod 時(shí),出現(xiàn)addr already in use錯(cuò)誤,原因啟動(dòng)端口被占用

      [root@hadoop1 data]# mongod
      2015-07-29T19:15:51.728+0800 E NETWORK  [initandlisten] listen(): bind() failed errno:98 Address already in use for socket: 0.0.0.0:27017
      2015-07-29T19:15:51.728+0800 E NETWORK  [initandlisten]   addr already in use
      2015-07-29T19:15:51.729+0800 I STORAGE  [initandlisten] exception in initAndListen: 29 Data directory /data/db not found., terminating
      2015-07-29T19:15:51.729+0800 I CONTROL  [initandlisten] dbexit:  rc: 100

       

      把端口找出來(lái),kill掉

      [root@hadoop1 ~]# netstat -anp|more
      unix  2      [ ACC ]     STREAM     LISTENING     15588  2174/mongod         /tmp/mongodb-27017.sock

       

       

      [root@hadoop1 ~]# kill 2174
      [root@hadoop1 ~]# /etc/init.d/mongod start
      Starting mongod:                                           [確定]

      [root@hadoop1 ~]# mongo

      4、初始化復(fù)制集。

      //使用rs.initiate()命令,MongoDB將初始化一個(gè)由當(dāng)前節(jié)點(diǎn)構(gòu)成、擁有默認(rèn)配置的復(fù)制集。

      > rs.initiate()
      {
       "info2" : "no configuration explicitly specified -- making one",
       "me" : "hadoop1.abc.com:27017",
       "info" : "try querying local.system.replset to see current configuration",
       "ok" : 0,
       "errmsg" : "already initialized",
       "code" : 23
      }
      > rs.status()
      {
       "state" : 10,
       "stateStr" : "REMOVED",
       "uptime" : 38,
       "optime" : Timestamp(1438168698, 1),
       "optimeDate" : ISODate("2015-07-29T11:18:18Z"),
       "ok" : 0,
       "errmsg" : "Our replica set config is invalid or we are not a member of it",
       "code" : 93
      }

      查看日志 文件

      2015-07-29T20:00:45.433+0800 W NETWORK  [ReplicationExecutor] Failed to connect to 192.168.1.3:27017, reason: errno:111 Connection refused
      2015-07-29T20:00:45.433+0800 W REPL     [ReplicationExecutor] Locally stored replica set configuration does not have a valid entry for the current node; waiting for reconfig or remote heartbeat; Got "NodeNotFound No host described in new configuration 1 for replica set testrs0 maps to this node" while validating { _id: "testrs0", version: 1, members: [ { _id: 0, host: "hadoop1.abc.com:27017", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1.0, tags: {}, slaveDelay: 0, votes: 1 } ], settings: { chainingAllowed: true, heartbeatTimeoutSecs: 10, getLastErrorModes: {}, getLastErrorDefaults: { w: 1, wtimeout: 0 } } }
      2015-07-29T20:00:45.433+0800 I REPL     [ReplicationExecutor] New replica set config in use: { _id: "testrs0", version: 1, members: [ { _id: 0, host: "hadoop1.abc.com:27017", arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1.0, tags: {}, slaveDelay: 0, votes: 1 } ], settings: { chainingAllowed: true, heartbeatTimeoutSecs: 10, getLastErrorModes: {}, getLastErrorDefaults: { w: 1, wtimeout: 0 } } }
      2015-07-29T20:00:45.433+0800 I REPL     [ReplicationExecutor] This node is not a member of the config
      2015-07-29T20:00:45.433+0800 I REPL     [ReplicationExecutor] transition to REMOVED
      2015-07-29T20:00:45.433+0800 I REPL     [ReplicationExecutor] Starting replication applier threads
      2015-07-29T20:00:49.067+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:58852 #1 (1 connection now open)
      2015-07-29T20:01:17.436+0800 I COMMAND  [conn1] replSet info initiate : no configuration specified.  Using a default configuration for the set
      2015-07-29T20:01:17.436+0800 I COMMAND  [conn1] replSet created this configuration for initiation : { _id: "testrs0", version: 1, members: [ { _id: 0, host: "hadoop1.abc.com:27017" } ] }
      2015-07-29T20:01:17.436+0800 I REPL     [conn1] replSetInitiate admin command received from client

      [root@hadoop1 ~]# service mongod stop
      Stopping mongod:                                           [確定]
      You have new mail in /var/spool/mail/root
      [root@hadoop1 ~]# vim /etc/mongod.conf
      #開(kāi)啟了
      bind 127.0.0.1 把本地限制訪問(wèn)了
      #bind 127.0.0.1
       
      [root@hadoop1 data]# service mongod start
      Starting mongod:                                           [確定]
       
      > rs.initiate()
      {
       "info2" : "no configuration explicitly specified -- making one",
       "me" : "hadoop1.abc.com:27017",
       "info" : "try querying local.system.replset to see current configuration",
       "ok" : 0,
       "errmsg" : "already initialized",
       "code" : 23
       
      testrs0:PRIMARY> rs.status()
      {
       "set" : "testrs0",
       "date" : ISODate("2015-07-29T12:13:27.839Z"),
       "myState" : 1,
       "members" : [
        {
         "_id" : 0,
         "name" : "hadoop1.abc.com:27017",
         "health" : 1,
         "state" : 1,
         "stateStr" : "PRIMARY",
         "uptime" : 232,
         "optime" : Timestamp(1438168698, 1),
         "optimeDate" : ISODate("2015-07-29T11:18:18Z"),
         "electionTime" : Timestamp(1438171776, 1),
         "electionDate" : ISODate("2015-07-29T12:09:36Z"),
         "configVersion" : 1,
         "self" : true
        }
       ],
       "ok" : 1
      }

      5、將其他的節(jié)點(diǎn)加入復(fù)制集。

      通過(guò) rs.add() 來(lái)將剩下的節(jié)點(diǎn)加入復(fù)制集。

       

      testrs0:PRIMARY> rs.add("192.168.1.4:27017")
      { "ok" : 1 }
      testrs0:PRIMARY> rs.status()
      {
       "set" : "testrs0",
       "date" : ISODate("2015-07-30T02:09:45.871Z"),
       "myState" : 1,
       "members" : [
        {
         "_id" : 0,
         "name" : "hadoop1.abc.com:27017",
         "health" : 1,
         "state" : 1,
         "stateStr" : "PRIMARY",
         "uptime" : 50410,
         "optime" : Timestamp(1438222179, 1),
         "optimeDate" : ISODate("2015-07-30T02:09:39Z"),
         "electionTime" : Timestamp(1438171776, 1),
         "electionDate" : ISODate("2015-07-29T12:09:36Z"),
         "configVersion" : 2,
         "self" : true
        },
        {
         "_id" : 1,
         "name" : "192.168.1.4:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 6,
         "optime" : Timestamp(1438222179, 1),
         "optimeDate" : ISODate("2015-07-30T02:09:39Z"),
         "lastHeartbeat" : ISODate("2015-07-30T02:09:45.081Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T02:09:45.183Z"),
         "pingMs" : 1,
         "configVersion" : 2
        }
       ],
       "ok" : 1
      }
      testrs0:PRIMARY> rs.add("192.168.1.5:27017")
      { "ok" : 1 } 
      testrs0:PRIMARY> rs.status()
      {
       "set" : "testrs0",
       "date" : ISODate("2015-07-30T02:28:52.382Z"),
       "myState" : 1,
       "members" : [
        {
         "_id" : 0,
         "name" : "hadoop1.abc.com:27017",
         "health" : 1,
         "state" : 1,
         "stateStr" : "PRIMARY",
         "uptime" : 51557,
         "optime" : Timestamp(1438223187, 1),
         "optimeDate" : ISODate("2015-07-30T02:26:27Z"),
         "electionTime" : Timestamp(1438171776, 1),
         "electionDate" : ISODate("2015-07-29T12:09:36Z"),
         "configVersion" : 3,
         "self" : true
        },
        {
         "_id" : 1,
         "name" : "192.168.1.4:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 1153,
         "optime" : Timestamp(1438223187, 1),
         "optimeDate" : ISODate("2015-07-30T02:26:27Z"),
         "lastHeartbeat" : ISODate("2015-07-30T02:28:52.337Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T02:28:50.438Z"),
         "pingMs" : 0,
         "syncingTo" : "hadoop1.abc.com:27017",
         "configVersion" : 3
        },
        {
         "_id" : 2,
         "name" : "192.168.1.5:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 13,
         "optime" : Timestamp(1438223187, 1),
         "optimeDate" : ISODate("2015-07-30T02:26:27Z"),
         "lastHeartbeat" : ISODate("2015-07-30T02:28:50.437Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T02:28:50.478Z"),
         "pingMs" : 1,
         "configVersion" : 3
        }
       ],
       "ok" : 1
      }
      testrs0:PRIMARY> rs.isMaster()
      {
       "setName" : "testrs0",
       "setVersion" : 3,
       "ismaster" : true,
       "secondary" : false,
       "hosts" : [
        "hadoop1.abc.com:27017",
        "192.168.1.4:27017",
        "192.168.1.5:27017"
       ],
       "primary" : "hadoop1.abc.com:27017",
       "me" : "hadoop1.abc.com:27017",
       "electionId" : ObjectId("55b8c280790a6c1f967f6147"),
       "maxBsonObjectSize" : 16777216,
       "maxMessageSizeBytes" : 48000000,
       "maxWriteBatchSize" : 1000,
       "localTime" : ISODate("2015-07-30T02:30:18Z"),
       "maxWireVersion" : 3,
       "minWireVersion" : 0,
       "ok" : 1
      }

      其他節(jié)點(diǎn)hadoop2驗(yàn)證一下

      testrs0:SECONDARY> rs.isMaster()
      {
       "setName" : "testrs0",
       "setVersion" : 3,
       "ismaster" : false,
       "secondary" : true,
       "hosts" : [
        "hadoop1.abc.com:27017",
        "192.168.1.4:27017",
        "192.168.1.5:27017"
       ],
       "primary" : "hadoop1.abc.com:27017",
       "me" : "192.168.1.4:27017",
       "maxBsonObjectSize" : 16777216,
       "maxMessageSizeBytes" : 48000000,
       "maxWriteBatchSize" : 1000,
       "localTime" : ISODate("2015-07-30T02:32:43.546Z"),
       "maxWireVersion" : 3,
       "minWireVersion" : 0,
       "ok" : 1
      }

      6、在主節(jié)點(diǎn)上創(chuàng)建數(shù)據(jù),從節(jié)點(diǎn)是否獲取到

      testrs0:PRIMARY> use testdb
      switched to db testdb 
      testrs0:PRIMARY> db.testcoll.insert({Name: "test",Age: 50,Gender: "F"})
      WriteResult({ "nInserted" : 1 })
      testrs0:PRIMARY> db.testcoll.find()
      { "_id" : ObjectId("55b9945b92ad0ab98483695e"), "Name" : "test", "Age" : 60, "Gender" : "F" }
      { "_id" : ObjectId("55b994ce92ad0ab98483695f"), "Name" : "test", "Age" : 50, "Gender" : "F" }

        在從節(jié)點(diǎn)上查詢,是不可以直接查詢,要使用一個(gè)命令rs.slave()把自己提升為從節(jié)點(diǎn)

      testrs0:SECONDARY> rs.slaveOk()
      testrs0:SECONDARY> use testdb;
      switched to db testdb
      testrs0:SECONDARY> db.testcoll.find()
      { "_id" : ObjectId("55b9945b92ad0ab98483695e"), "Name" : "test", "Age" : 60, "Gender" : "F" }
      { "_id" : ObjectId("55b994ce92ad0ab98483695f"), "Name" : "test", "Age" : 50, "Gender" : "F" }

       

      7、讓主節(jié)點(diǎn)hadoop1掛掉

      [root@hadoop1 data]# service mongod stop
      Stopping mongod:

       在hadoop3驗(yàn)證一下

      testrs0:PRIMARY> rs.status()
      {
       "set" : "testrs0",
       "date" : ISODate("2015-07-30T04:36:19.677Z"),
       "myState" : 1,
       "members" : [
        {
         "_id" : 0,
         "name" : "hadoop1.abc.com:27017",
         "health" : 0,
         "state" : 8,
         "stateStr" : "(not reachable/healthy)",
         "uptime" : 0,
         "optime" : Timestamp(0, 0),
         "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
         "lastHeartbeat" : ISODate("2015-07-30T04:36:19.503Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T04:33:18.147Z"),
         "pingMs" : 0,
         "lastHeartbeatMessage" : "Failed attempt to connect to hadoop1.abc.com:27017; couldn't connect to server hadoop1.abc.com:27017 (192.168.1.3), connection attempt failed",
         "configVersion" : -1
        },
        {
         "_id" : 1,
         "name" : "192.168.1.4:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 7661,
         "optime" : Timestamp(1438225614, 1),
         "optimeDate" : ISODate("2015-07-30T03:06:54Z"),
         "lastHeartbeat" : ISODate("2015-07-30T04:36:19.335Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T04:36:19.348Z"),
         "pingMs" : 0,
         "configVersion" : 3
        },
        {
         "_id" : 2,
         "name" : "192.168.1.5:27017",
         "health" : 1,
         "state" : 1,
         "stateStr" : "PRIMARY",
         "uptime" : 7664,
         "optime" : Timestamp(1438225614, 1),
         "optimeDate" : ISODate("2015-07-30T03:06:54Z"),
         "electionTime" : Timestamp(1438230801, 1),
         "electionDate" : ISODate("2015-07-30T04:33:21Z"),
         "configVersion" : 3,
         "self" : true
        }
       ],
       "ok" : 1
      }
      testrs0:PRIMARY> db.isMaster()
      {
       "setName" : "testrs0",
       "setVersion" : 3,
       "ismaster" : true,
       "secondary" : false,
       "hosts" : [
        "hadoop1.abc.com:27017",
        "192.168.1.4:27017",
        "192.168.1.5:27017"
       ],
       "primary" : "192.168.1.5:27017",
       "me" : "192.168.1.5:27017",
       "electionId" : ObjectId("55b9a91100e446910c89a0a3"),
       "maxBsonObjectSize" : 16777216,
       "maxMessageSizeBytes" : 48000000,
       "maxWriteBatchSize" : 1000,
       "localTime" : ISODate("2015-07-30T04:37:33.090Z"),
       "maxWireVersion" : 3,
       "minWireVersion" : 0,
       "ok" : 1
      }
      testrs0:PRIMARY> db.testcoll.insert ({Name: "tom",Age: 45,Gender: "G"})
      WriteResult({ "nInserted" : 1 })

       

      回到hadoop2查看一下數(shù)據(jù)

       testrs0:SECONDARY> db.testcoll.find()
      { "_id" : ObjectId("55b9942d92ad0ab98483695c"), "Name" : "test", "Age" : 60, "Gender" : "F" }
      { "_id" : ObjectId("55b9944892ad0ab98483695d"), "Name" : "test", "Age" : 60, "Gender" : "F" }
      { "_id" : ObjectId("55b9945b92ad0ab98483695e"), "Name" : "test", "Age" : 60, "Gender" : "F" }
      { "_id" : ObjectId("55b994ce92ad0ab98483695f"), "Name" : "test", "Age" : 50, "Gender" : "F" }
      { "_id" : ObjectId("55b9aa714b575261aff42f25"), "Name" : "tom", "Age" : 45, "Gender" : "G" }

       

      讓hadoop1上線

      [root@hadoop1 data]# service mongod start
      Starting mongod:

       

      再驗(yàn)證一下?tīng)顟B(tài),但不能奪回主動(dòng)權(quán),除非讓它優(yōu)先級(jí)高一點(diǎn)。

      這種場(chǎng)景下,它自動(dòng)成為從的了

       testrs0:SECONDARY> rs.status()
      {
       "set" : "testrs0",
       "date" : ISODate("2015-07-30T04:44:16.534Z"),
       "myState" : 2,
       "syncingTo" : "192.168.1.4:27017",
       "members" : [
        {
         "_id" : 0,
         "name" : "hadoop1.abc.com:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 165,
         "optime" : Timestamp(1438231153, 1),
         "optimeDate" : ISODate("2015-07-30T04:39:13Z"),
         "syncingTo" : "192.168.1.4:27017",
         "configVersion" : 3,
         "self" : true
        },
        {
         "_id" : 1,
         "name" : "192.168.1.4:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 164,
         "optime" : Timestamp(1438231153, 1),
         "optimeDate" : ISODate("2015-07-30T04:39:13Z"),
         "lastHeartbeat" : ISODate("2015-07-30T04:44:16.199Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T04:44:15.824Z"),
         "pingMs" : 0,
         "syncingTo" : "192.168.1.5:27017",
         "configVersion" : 3
        },
        {
         "_id" : 2,
         "name" : "192.168.1.5:27017",
         "health" : 1,
         "state" : 1,
         "stateStr" : "PRIMARY",
         "uptime" : 164,
         "optime" : Timestamp(1438231153, 1),
         "optimeDate" : ISODate("2015-07-30T04:39:13Z"),
         "lastHeartbeat" : ISODate("2015-07-30T04:44:16.185Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T04:44:14.902Z"),
         "pingMs" : 0,
         "electionTime" : Timestamp(1438230801, 1),
         "electionDate" : ISODate("2015-07-30T04:33:21Z"),
         "configVersion" : 3
        }
       ],
       "ok" : 1
      }
      testrs0:SECONDARY> rs.slaveOk()
      testrs0:SECONDARY> db.testcoll.find()
      testrs0:SECONDARY> use testdb
      switched to db testdb
      testrs0:SECONDARY> db.testcoll.find()
      { "_id" : ObjectId("55b9942d92ad0ab98483695c"), "Name" : "test", "Age" : 60, "Gender" : "F" }
      { "_id" : ObjectId("55b9944892ad0ab98483695d"), "Name" : "test", "Age" : 60, "Gender" : "F" }
      { "_id" : ObjectId("55b9945b92ad0ab98483695e"), "Name" : "test", "Age" : 60, "Gender" : "F" }
      { "_id" : ObjectId("55b994ce92ad0ab98483695f"), "Name" : "test", "Age" : 50, "Gender" : "F" }
      { "_id" : ObjectId("55b9aa714b575261aff42f25"), "Name" : "tom", "Age" : 45, "Gender" : "G" }

       

      7、定義優(yōu)先級(jí)

       

      使用 rs.conf() 來(lái)查看 復(fù)制集配置對(duì)象

      testrs0:SECONDARY> rs.conf()
      {
       "_id" : "testrs0",
       "version" : 3,
       "members" : [
        {
         "_id" : 0,
         "host" : "hadoop1.abc.com:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        },
        {
         "_id" : 1,
         "host" : "192.168.1.4:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        },
        {
         "_id" : 2,
         "host" : "192.168.1.5:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        }
       ],
       "settings" : {
        "chainingAllowed" : true,
        "heartbeatTimeoutSecs" : 10,
        "getLastErrorModes" : {
         
        },
        "getLastErrorDefaults" : {
         "w" : 1,
         "wtimeout" : 0
        }
       }
      }

       

      在hadoop3的主節(jié)點(diǎn)把hadoop1的優(yōu)先級(jí)定義為2,讓它成為主節(jié)點(diǎn)

      將復(fù)制集配置對(duì)象復(fù)制給一個(gè)變量(如 mycfg )。然后通過(guò)該變量對(duì)該節(jié)點(diǎn)設(shè)置優(yōu)先級(jí)。然后通過(guò) rs.reconfig() 來(lái)更新復(fù)制集配置。

      注意,設(shè)置優(yōu)先級(jí)用這個(gè)命令mycfg.members[數(shù)組中第幾個(gè)節(jié)點(diǎn)].priority =  2

      testrs0:PRIMARY> rs.conf()
      {
       "_id" : "testrs0",
       "version" : 3,
       "members" : [
        {
         "_id" : 0,
         "host" : "hadoop1.abc.com:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        },
        {
         "_id" : 1,
         "host" : "192.168.1.4:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        },
        {
         "_id" : 2,
         "host" : "192.168.1.5:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        }
       ],
       "settings" : {
        "chainingAllowed" : true,
        "heartbeatTimeoutSecs" : 10,
        "getLastErrorModes" : {
         
        },
        "getLastErrorDefaults" : {
         "w" : 1,
         "wtimeout" : 0
        }
       }
      }
      testrs0:PRIMARY> mycfg=rs.conf()
      {
       "_id" : "testrs0",
       "version" : 3,
       "members" : [
        {
         "_id" : 0,
         "host" : "hadoop1.abc.com:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        },
        {
         "_id" : 1,
         "host" : "192.168.1.4:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        },
        {
         "_id" : 2,
         "host" : "192.168.1.5:27017",
         "arbiterOnly" : false,
         "buildIndexes" : true,
         "hidden" : false,
         "priority" : 1,
         "tags" : {
          
         },
         "slaveDelay" : 0,
         "votes" : 1
        }
       ],
       "settings" : {
        "chainingAllowed" : true,
        "heartbeatTimeoutSecs" : 10,
        "getLastErrorModes" : {
         
        },
        "getLastErrorDefaults" : {
         "w" : 1,
         "wtimeout" : 0
        }
       }
      }
      testrs0:PRIMARY> mycfg.members[0].priority = 2
      2
      testrs0:PRIMARY> rs.reconfig(mycfg)
      { "ok" : 1 }
      testrs0:PRIMARY> 
      2015-07-30T14:34:44.437+0800 I NETWORK  DBClientCursor::init call() failed
      2015-07-30T14:34:44.439+0800 I NETWORK  trying reconnect to 127.0.0.1:27017 (127.0.0.1) failed
      2015-07-30T14:34:44.452+0800 I NETWORK  reconnect 127.0.0.1:27017 (127.0.0.1) ok
      testrs0:SECONDARY>

       

      在hadoop1上查看,并停掉hadoop1的服務(wù)

       testrs0:PRIMARY> rs.status()
      {
       "set" : "testrs0",
       "date" : ISODate("2015-07-30T06:51:11.952Z"),
       "myState" : 1,
       "members" : [
        {
         "_id" : 0,
         "name" : "hadoop1.abc.com:27017",
         "health" : 1,
         "state" : 1,
         "stateStr" : "PRIMARY",
         "uptime" : 7780,
         "optime" : Timestamp(1438238074, 1),
         "optimeDate" : ISODate("2015-07-30T06:34:34Z"),
         "electionTime" : Timestamp(1438238079, 1),
         "electionDate" : ISODate("2015-07-30T06:34:39Z"),
         "configVersion" : 4,
         "self" : true
        },
        {
         "_id" : 1,
         "name" : "192.168.1.4:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 7780,
         "optime" : Timestamp(1438238074, 1),
         "optimeDate" : ISODate("2015-07-30T06:34:34Z"),
         "lastHeartbeat" : ISODate("2015-07-30T06:51:11.072Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T06:51:11.375Z"),
         "pingMs" : 0,
         "configVersion" : 4
        },
        {
         "_id" : 2,
         "name" : "192.168.1.5:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 7780,
         "optime" : Timestamp(1438238074, 1),
         "optimeDate" : ISODate("2015-07-30T06:34:34Z"),
         "lastHeartbeat" : ISODate("2015-07-30T06:51:11.779Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T06:51:10.299Z"),
         "pingMs" : 0,
         "configVersion" : 4
        }
       ],
       "ok" : 1
      }
      testrs0:PRIMARY> quit()
      You have new mail in /var/spool/mail/root
      [root@hadoop1 ~]# service mongo stop
      mongo: 未被識(shí)別的服務(wù)
      [root@hadoop1 ~]# service mongod stop
      Stopping mongod:

       

      在hadoop3查看,兩個(gè)節(jié)點(diǎn)還是會(huì)自動(dòng)選舉主節(jié)點(diǎn)的

      testrs0:PRIMARY> rs.status()
      {
       "set" : "testrs0",
       "date" : ISODate("2015-07-30T06:55:18.238Z"),
       "myState" : 1,
       "members" : [
        {
         "_id" : 0,
         "name" : "hadoop1.abc.com:27017",
         "health" : 0,
         "state" : 8,
         "stateStr" : "(not reachable/healthy)",
         "uptime" : 0,
         "optime" : Timestamp(0, 0),
         "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
         "lastHeartbeat" : ISODate("2015-07-30T06:55:16.275Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T06:51:44.879Z"),
         "pingMs" : 5,
         "lastHeartbeatMessage" : "Failed attempt to connect to hadoop1.abc.com:27017; couldn't connect to server hadoop1.abc.com:27017 (192.168.1.3), connection attempt failed",
         "configVersion" : -1
        },
        {
         "_id" : 1,
         "name" : "192.168.1.4:27017",
         "health" : 1,
         "state" : 2,
         "stateStr" : "SECONDARY",
         "uptime" : 16000,
         "optime" : Timestamp(1438238074, 1),
         "optimeDate" : ISODate("2015-07-30T06:34:34Z"),
         "lastHeartbeat" : ISODate("2015-07-30T06:55:17.988Z"),
         "lastHeartbeatRecv" : ISODate("2015-07-30T06:55:17.988Z"),
         "pingMs" : 1,
         "lastHeartbeatMessage" : "could not find member to sync from",
         "configVersion" : 4
        },
        {
         "_id" : 2,
         "name" : "192.168.1.5:27017",
         "health" : 1,
         "state" : 1,
         "stateStr" : "PRIMARY",
         "uptime" : 16003,
         "optime" : Timestamp(1438238074, 1),
         "optimeDate" : ISODate("2015-07-30T06:34:34Z"),
         "electionTime" : Timestamp(1438239108, 1),
         "electionDate" : ISODate("2015-07-30T06:51:48Z"),
         "configVersion" : 4,
         "self" : true
        }
       ],
       "ok" : 1
      }

       

      把hadoop1服務(wù)啟動(dòng),因?yàn)閮?yōu)先級(jí)設(shè)為2,故推舉它為主節(jié)點(diǎn)

      testrs0:PRIMARY> rs.i
      rs.initiate(  rs.isMaster(
      testrs0:PRIMARY> rs.isMaster()
      {
       "setName" : "testrs0",
       "setVersion" : 4,
       "ismaster" : true,
       "secondary" : false,
       "hosts" : [
        "hadoop1.abc.com:27017",
        "192.168.1.4:27017",
        "192.168.1.5:27017"
       ],
       "primary" : "hadoop1.abc.com:27017",
       "me" : "hadoop1.abc.com:27017",
       "electionId" : ObjectId("55b9ca84ddeeac6a93355c18"),
       "maxBsonObjectSize" : 16777216,
       "maxMessageSizeBytes" : 48000000,
       "maxWriteBatchSize" : 1000,
       "localTime" : ISODate("2015-07-30T06:56:28.472Z"),
       "maxWireVersion" : 3,
       "minWireVersion" : 0,
       "ok" : 1
      }

       

      8、觸發(fā)重新選舉

             優(yōu)先級(jí)為0的節(jié)點(diǎn),無(wú)權(quán)觸發(fā);僅參與選舉

              使用的命令rs.addArb()

       

      9、多端口復(fù)制集

      應(yīng)用程序需要連接多個(gè)復(fù)制集,那么每個(gè)復(fù)制集需要有不同的名字

       

       1)為每個(gè)節(jié)點(diǎn)建立必要的數(shù)據(jù)文件夾:

      [root@hadoop1 ~]# mkdir -pv /srv/mongodb/rs0-0 /srv/mongodb/rs0-1 /srv/mongodb/rs0-2
      mkdir: 已創(chuàng)建目錄 "/srv/mongodb"
      mkdir: 已創(chuàng)建目錄 "/srv/mongodb/rs0-0"
      mkdir: 已創(chuàng)建目錄 "/srv/mongodb/rs0-1"
      mkdir: 已創(chuàng)建目錄 "/srv/mongodb/rs0-2"
      You have new mail in /var/spool/mail/root

      2)啟動(dòng)mongod實(shí)例

      第一個(gè)節(jié)點(diǎn)

      [root@hadoop1 rs0-0]# mongod --port 27018 --dbpath /srv/mongodb/rs0-0 --replSet rs0 --smallfiles --oplogSize 128 &

      第二個(gè)節(jié)點(diǎn)

      [root@hadoop1 ~]# mongod --port 27019 --dbpath /srv/mongodb/rs0-1 --replSet rs0 --smallfiles --oplogSize 128 &

      第三個(gè)節(jié)點(diǎn)

       [root@hadoop1 ~]# mongod --port 27020 --dbpath /srv/mongodb/rs0-2 --replSet rs0 --smallfiles --oplogSize 128 &

       

      驗(yàn)證

      [root@hadoop1 ~]# netstat -tlnp
      Active Internet connections (only servers)
      Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name   
      tcp        0      0 0.0.0.0:27019               0.0.0.0:*                   LISTEN      15718/mongod        
      tcp        0      0 0.0.0.0:27020               0.0.0.0:*                   LISTEN      15785/mongod        
      tcp        0      0 0.0.0.0:111                 0.0.0.0:*                   LISTEN      1081/rpcbind        
      tcp        0      0 0.0.0.0:28017               0.0.0.0:*                   LISTEN      14221/mongod        
      tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      1285/sshd           
      tcp        0      0 127.0.0.1:631               0.0.0.0:*                   LISTEN      1157/cupsd          
      tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1361/master         
      tcp        0      0 0.0.0.0:44378               0.0.0.0:*                   LISTEN      1099/rpc.statd      
      tcp        0      0 0.0.0.0:27017               0.0.0.0:*                   LISTEN      14221/mongod        
      tcp        0      0 0.0.0.0:27018               0.0.0.0:*                   LISTEN      15640/mongod        
      tcp        0      0 :::111                      :::*                        LISTEN      1081/rpcbind        
      tcp        0      0 :::22                       :::*                        LISTEN      1285/sshd           
      tcp        0      0 ::1:631                     :::*                        LISTEN      1157/cupsd          
      tcp        0      0 ::1:25                      :::*                        LISTEN      1361/master         
      tcp        0      0 :::48510                    :::*                        LISTEN      1099/rpc.statd

       

      3)指明所需連接的端口,來(lái)通過(guò) mongo 命令連接到某個(gè) mongod 實(shí)例

      [root@hadoop1 mongodb]# mongo --port 27018
      MongoDB shell version: 3.0.5
      connecting to: 127.0.0.1:27018/test
      2015-07-30T16:26:01.442+0800 I NETWORK  [initandlisten] connection accepted from 127.0.0.1:54185 #1 (1 connection now open)
      Server has startup warnings: 
      2015-07-30T16:19:14.667+0800 I CONTROL  [initandlisten] ** WARNING: You are running this process as the root user, which is not recommended.
      2015-07-30T16:19:14.667+0800 I CONTROL  [initandlisten] 
      2015-07-30T16:19:14.668+0800 I CONTROL  [initandlisten] 
      2015-07-30T16:19:14.668+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/enabled is 'always'.
      2015-07-30T16:19:14.668+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
      2015-07-30T16:19:14.668+0800 I CONTROL  [initandlisten] 
      2015-07-30T16:19:14.668+0800 I CONTROL  [initandlisten] ** WARNING: /sys/kernel/mm/transparent_hugepage/defrag is 'always'.
      2015-07-30T16:19:14.668+0800 I CONTROL  [initandlisten] **        We suggest setting it to 'never'
      2015-07-30T16:19:14.668+0800 I CONTROL  [initandlisten] 
      >

       

      最后關(guān)于

      部署一個(gè)由四個(gè)節(jié)點(diǎn)組成的異地分布復(fù)制集。

      由四個(gè)節(jié)點(diǎn)組成的異地分布復(fù)制集有以下兩個(gè)需要注意的:

      • 一個(gè)節(jié)點(diǎn)(如``hadoop4.abc.net``) 必須是一個(gè) arbiter。這個(gè)節(jié)點(diǎn)可以在服務(wù)的任何機(jī)器上運(yùn)行,或者在其他的MongoDB機(jī)器上運(yùn)行。

      • 我們需要決定如何分配節(jié)點(diǎn)。下列有3種架構(gòu)類型:

        在大多數(shù)情況下,由于第一種架構(gòu)的易用性,我們更推薦第一種架構(gòu)。

        • 3個(gè)節(jié)點(diǎn)在Site A中,一個(gè) 優(yōu)先級(jí)為0的節(jié)點(diǎn) 在Site B中,與此同時(shí)Site A中還要有個(gè)投票節(jié)點(diǎn)。

        • 兩個(gè)節(jié)點(diǎn)在Site A,兩個(gè) 優(yōu)先級(jí)為0的節(jié)點(diǎn) 在Site B ,同時(shí)一個(gè)投票節(jié)點(diǎn)在Site A。

        • 兩個(gè)節(jié)點(diǎn)在Site A,一個(gè)優(yōu)先級(jí)為0的節(jié)點(diǎn)在Site B,一個(gè)優(yōu)先級(jí)為0的節(jié)點(diǎn)在Site C,同時(shí)一個(gè)投票節(jié)點(diǎn)在Site A。

       

      在大多數(shù)情況下,由于第一種架構(gòu)的易用性,更推薦第一種架構(gòu)。

       

       

      復(fù)制集參考

      Replication Methods in the mongo Shell
      命令               描述
      rs.add()    為復(fù)制集新增節(jié)點(diǎn)。    
      
      rs.addArb()    為復(fù)制集新增一個(gè) arbiter    
      
      rs.conf()    返回復(fù)制集配置信息    
      
      rs.freeze()    防止當(dāng)前節(jié)點(diǎn)在一段時(shí)間內(nèi)選舉成為主節(jié)點(diǎn)。    
      
      rs.help()    返回 replica set 的命令幫助    
      
      rs.initiate()    初始化一個(gè)新的復(fù)制集。    
      
      rs.printReplicationInfo()    以主節(jié)點(diǎn)的視角返回復(fù)制的狀態(tài)報(bào)告。    
      
      rs.printSlaveReplicationInfo()    以從節(jié)點(diǎn)的視角返回復(fù)制狀態(tài)報(bào)告。    
      
      rs.reconfig()    通過(guò)重新應(yīng)用復(fù)制集配置來(lái)為復(fù)制集更新配置。    
      
      rs.remove()    從復(fù)制集中移除一個(gè)節(jié)點(diǎn)。    
      
      rs.slaveOk()    為當(dāng)前的連接設(shè)置 slaveOk 。不推薦使用。使用 readPref() 和 Mongo.setReadPref() 來(lái)設(shè)置 read preference 。    
      
      rs.status()    返回復(fù)制集狀態(tài)信息。    
      
      rs.stepDown()    讓當(dāng)前的 primary 變?yōu)閺墓?jié)點(diǎn)并觸發(fā) election 。    
      
      rs.syncFrom()    設(shè)置復(fù)制集節(jié)點(diǎn)從哪個(gè)節(jié)點(diǎn)處同步數(shù)據(jù),將會(huì)覆蓋默認(rèn)選取邏輯。

       

       復(fù)制集數(shù)據(jù)庫(kù)命令

      命令                    描述
      replSetFreeze    防止當(dāng)前節(jié)點(diǎn)在一段時(shí)間內(nèi)選舉成為主節(jié)點(diǎn)。    
      
      replSetGetStatus    返回復(fù)制集的狀態(tài)報(bào)告。    
      
      replSetInitiate    初始化一個(gè)新的復(fù)制集。    
      
      replSetMaintenance    開(kāi)啟活關(guān)閉維護(hù)模式,維護(hù)模式將使 secondary 進(jìn)入 
      
      RECOVERING 狀態(tài)。    
      
      replSetReconfig    為已存在的復(fù)制集應(yīng)用新的配置。    
      
      replSetStepDown    強(qiáng)制當(dāng)前的 primary *降職*變?yōu)?nbsp;secondary ,并觸發(fā)選舉。    
      replSetSyncFrom    覆蓋默認(rèn)的復(fù)制來(lái)源選取邏輯。    
      
      resync    強(qiáng)制 mongod 重新從 master 進(jìn)行初始化復(fù)制。僅在主-從模式。    
      
      applyOps    內(nèi)部命令應(yīng)用 oplog 在現(xiàn)在的數(shù)據(jù)集上。    
      
      isMaster    返回該節(jié)點(diǎn)的角色信息,包括是否為主節(jié)點(diǎn)。    
      
      getoptime    內(nèi)部命令,返回optime。

      網(wǎng)站名稱:mongodb復(fù)制集部署
      網(wǎng)址分享:http://www.ef60e0e.cn/article/pcdjep.html
      99热在线精品一区二区三区_国产伦精品一区二区三区女破破_亚洲一区二区三区无码_精品国产欧美日韩另类一区
      1. <ul id="0c1fb"></ul>

        <noscript id="0c1fb"><video id="0c1fb"></video></noscript>
        <noscript id="0c1fb"><listing id="0c1fb"><thead id="0c1fb"></thead></listing></noscript>

        阿勒泰市| 尚义县| 石棉县| 徐水县| 阿坝| 舟山市| 无为县| 齐齐哈尔市| 温州市| 伽师县| 新余市| 崇州市| 吉隆县| 安新县| 贵定县| 昆明市| 临安市| 屯留县| 江口县| 北宁市| 崇礼县| 句容市| 平安县| 嘉鱼县| 甘孜| 抚州市| 淮南市| 扬州市| 上虞市| 湘潭市| 嘉兴市| 城口县| 杂多县| 文昌市| 德兴市| 堆龙德庆县| 常山县| 东山县| 绍兴市| 赣州市| 浦东新区|