Contents ...
udn網路城邦
Mongodb之replica set運維篇
2015/10/27 14:23
瀏覽168
迴響0
推薦0
引用0
由於在我們的Mongodb一項目中,訪問量會突然暴增兩倍,故需要進行一系列的擴容,並且由於我們使用的是1.8.3-pre版本,還需要把他升級為1.8.3,所以在這次調整中,涉及到Mongodb的擴容、升級、主庫切換等等一系列運維工作,也幸好有這樣的機會,才讓我更能掌握Mongodb,下面貼出操作的一些命令及一些步驟,以做後續查看!


1、利用另外一臺secondary機器傳送數據


2、在新機器上中配置文件中添加fastsync=true配置(當需要從有數據中啟動節點,那麽必須加上fastsync=true,否則啟動會報錯,如果是從主庫直接同步所有數據,那麽就不需要添加這個參數)


3、啟動後,在primary節點中添加節點

如:rs.add("10.73.24.171:9005")  當我們看到變為secondary後,就一切正常,可以正常提供線上服務了


4、通過rs.conf()命令查看現在的節點信息(需要admin庫密碼權限)


5、rs.remove()刪除節點


6、添加arbiter節點:rs.addArb("10.73.24.171:19003")


7、添加延時備份機器:rs.add({_id:4,host:"10.55.22.176:9004",priority:0,slaveDelay:3600});


8、當出現這個錯誤時:replSet error RS102 too stale to catch up,我們可以db.printReplicationInfo() 查看主庫、從庫的oplog信息;


以上為我切換過程中用到的大部分命令,主要還是replica set管理工具,如果能掌握,那麽升級、擴容、主庫切換都能快速進行!


這次在運維中,由於機器不夠,去掉了延時備份角色,只做了主-->備-->2arbiter的一個高可用集群,當主庫失效時候,基本能在10秒中切換到備上!


附:http://www.mongodb.org/display/DOCS/Replica+Set+Commands

rs.help()                       show help

rs.status()                     { replSetGetStatus : 1 }

rs.initiate()                   { replSetInitiate : null } initiate

                                    with default settings

rs.initiate(cfg)                { replSetInitiate : cfg }

rs.add(hostportstr)             add a new member to the set

rs.add(membercfgobj)            add a new member to the set

rs.addArb(hostportstr)          add a new member which is arbiterOnly:true

rs.remove(hostportstr)          remove a member from the set

rs.stepDown()                   { replSetStepDown : true }

rs.conf()                       return configuration from local.system.replset

db.isMaster()                   check who is primary

關於mongodb replica set 的安裝,請參考http://hi.baidu.com/ytjwt/blog/item/7ffbf79849782e106f068c17.html



 修改優先級


shard0:PRIMARY> cfg = rs.conf()

{

        "_id" : "shard0",

        "version" : 2,

        "members" : [

                {

                        "_id" : 0,

                        "host" : "172.16.1.1:29017"

                },

                {

                        "_id" : 1,

                        "host" : "172.16.1.2:29017",

                        "priority" : 2

                },

                {

                        "_id" : 2,

                        "host" : "172.16.1.3:29017",

                        "priority" : 3

                }

        ]

}

shard0:PRIMARY> cfg.members[0].priority = 10

10

shard0:PRIMARY> rs.reconfig(cfg)


增加一個只能備份的復制集!


newrs={_id: 5, host: "Weibo02:27017", priority: 0}

rs.add(newrs)

再增加一個只能備份且隱藏的復制集

rs.add({_id:5,host:"db2:27017",priority:0,hidden:true})

使用rs.conf()查看是發現多出一些屬性


  {

                        "_id" : 5,

                        "host" : "db2:27017",

                        "priority" : 0,

                        "hidden" : true

                }


 增加一下延時備份的復制集

 rs.add({_id:5,host:"db2:27017",priority:0,hidden:true,slaveDelay:3600})
全站分類:知識學習 科學百科
自訂分類:不分類
上一則: 嵌入式基础知识
下一則: C/C++內存的理解

限會員,要發表迴響,請先登入