MongoDB複本集的常用操作及原理

來源:互聯網
上載者:User

本文是對MongoDB複本集常用操作的一個匯總,同時也穿插著介紹了操作背後的原理及注意點。

結合之前的文章:MongoDB複本集的搭建,大家可以在較短的時間內熟悉MongoDB的搭建和管理。

下面的操作主要分為兩個部分:

1. 修改節點狀態

    主要包括:

    1> 將Primary節點降級為Secondary節點

    2> 凍結Secondary節點

    3> 強制Secondary節點進入維護模式

2. 修改複本集的配置

    1> 添加節點

    2> 刪除節點

    3> 將Secondary節點設定為延遲備份節點

    4> 將Secondary節點設定為隱藏節點

    5> 替換當前的複本集成員

    6> 設定複本集節點的優先順序

    7> 阻止Secondary節點升級為Primary節點

    8> 如何設定沒有投票權的Secondary節點

    9> 禁用chainingAllowed

   10> 為Secondary節點顯式指定複製源

   11> 禁止Secondary節點建立索引

 

首先查看MongoDB複本集支援的所有操作

> rs.help()    rs.status()                                { replSetGetStatus : 1 } checks repl set status    rs.initiate()                              { replSetInitiate : null } initiates set with default settings    rs.initiate(cfg)                           { replSetInitiate : cfg } initiates set with configuration cfg    rs.conf()                                  get the current configuration object from local.system.replset    rs.reconfig(cfg)                           updates the configuration of a running replica set with cfg (disconnects)    rs.add(hostportstr)                        add a new member to the set with default attributes (disconnects)    rs.add(membercfgobj)                       add a new member to the set with extra attributes (disconnects)    rs.addArb(hostportstr)                     add a new member which is arbiterOnly:true (disconnects)    rs.stepDown([stepdownSecs, catchUpSecs])   step down as primary (disconnects)    rs.syncFrom(hostportstr)                   make a secondary sync from the given member    rs.freeze(secs)                            make a node ineligible to become primary for the time specified    rs.remove(hostportstr)                     remove a host from the replica set (disconnects)    rs.slaveOk()                               allow queries on secondary nodes    rs.printReplicationInfo()                  check oplog size and time range    rs.printSlaveReplicationInfo()             check replica set members and replication lag    db.isMaster()                              check who is primary    reconfiguration helpers disconnect from the database so the shell will display    an error, even if the command succeeds.

 

修改節點狀態

將Primary節點降級為Secondary節點

myapp:PRIMARY> rs.stepDown()

這個命令會讓primary降級為Secondary節點,並維持60s,如果這段時間內沒有新的primary被選舉出來,這個節點可以要求重新進行選舉。

也可手動指定時間

myapp:PRIMARY> rs.stepDown(30)

在執行完該命令後,原Secondary node3:27017升級為Primary。

其日誌輸出為:   View Code

原Primary node3:27018降低為Secondary   View Code

 

凍結Secondary節點

如果需要對Primary做一下維護,但是不希望在維護的這段時間內將其它Secondary節點選舉為Primary節點,可以在每次Secondary節點上執行freeze命令,強制使它們始終處於Secondary節點狀態。

myapp:SECONDARY> rs.freeze(100)

註:只能在Secondary節點上執行

myapp:PRIMARY> rs.freeze(100){    "ok" : 0,    "errmsg" : "cannot freeze node when primary or running for election. state: Primary",    "code" : 95,    "codeName" : "NotSecondary"}

如果要解凍Secondary節點,只需執行

myapp:SECONDARY> rs.freeze()

 

強制Secondary節點進入維護模式

當Secondary節點進入到維護模式後,它的狀態即轉化為“RECOVERING”,在這個狀態的節點,用戶端不會發送讀請求給它,同時它也不能作為複製源。

進入維護模式有兩種觸發方式:

1. 自動觸發

    譬如Secondary上執行壓縮

2. 手動觸發

myapp:SECONDARY> db.adminCommand({"replSetMaintenance":true})

 

修改複本集的配置

添加節點

myapp:PRIMARY> rs.add("node3:27017")
myapp:PRIMARY> rs.add({_id: 3, host: "node3:27017", priority: 0, hidden: true})

也可通過設定檔的方式

> cfg={    "_id" : 3,    "host" : "node3:27017",    "arbiterOnly" : false,    "buildIndexes" : true,    "hidden" : true,    "priority" : 0,    "tags" : {            },    "slaveDelay" : NumberLong(0),    "votes" : 1}> rs.add(cfg)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.