MongoDB 副本集 pymongo使用

搭建沒(méi)有仲裁節(jié)點(diǎn)的副本集彤灶,推薦使用

2.清空node2的db文件夾 和 log 文件夾

 rm -rf /var/lib/mongod/*

 rm -rf /var/log/mongod/*

3.修改node2和port学搜、replSet

vim /etc/mongod.conf

replSet = arg/192.168.1.161:27017,192.168.1.162:27017

復(fù)制mongod.conf到node2

 scp /etc/mogod.conf  node2:/etc/

4.啟動(dòng)三個(gè)節(jié)點(diǎn),分別進(jìn)入 對(duì)應(yīng)的node文件夾中:

systemctl start mongod

5.連接node1節(jié)點(diǎn)(27017):

mongo --host  192.168.1.161  --port  27017

6.執(zhí)行初始化命令:

> config={"_id":"arg",members:[{"_id":1,"host":"192.168.1.161:27017"},{"_id":2,"host":"192.168.1.162:27017"}]}
{
    "_id" : "arg",
    "members" : [
        {
            "_id" : 1,
            "host" : "192.168.1.161:27017"
        },
        {
            "_id" : 2,
            "host" : "192.168.1.162:27017"
        }
    ]
}

> rs.initiate(config)
{
    "info" : "Config now saved locally.  Should come online in about a minute.",
    "ok" : 1
}

7.查看狀態(tài)凯傲,發(fā)現(xiàn)有1個(gè)主節(jié)點(diǎn)盘寡,1個(gè)從節(jié)點(diǎn)。

> rs.status()
{
    "set" : "arg",
    "date" : ISODate("2018-09-06T06:50:16Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 1,
            "name" : "192.168.1.161:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 1306,
            "optime" : Timestamp(1536216613, 2),
            "optimeDate" : ISODate("2018-09-06T06:50:13Z"),
            "electionTime" : Timestamp(1536216578, 1),
            "electionDate" : ISODate("2018-09-06T06:49:38Z"),
            "self" : true
        },
        {
            "_id" : 2,
            "name" : "192.168.1.162:27017",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 50,
            "optime" : Timestamp(1536216613, 2),
            "optimeDate" : ISODate("2018-09-06T06:50:13Z"),
            "lastHeartbeat" : ISODate("2018-09-06T06:50:16Z"),
            "lastHeartbeatRecv" : ISODate("2018-09-06T06:50:15Z"),
            "pingMs" : 0,
            "syncingTo" : "192.168.1.161:27017"
        }
    ],
    "ok" : 1
}

使用MongoDB 副本集,第1個(gè)參數(shù)是主host,第2個(gè)是replSet名,第3個(gè)是模式client = MongoReplicaSetClient(eval(mongodb_set), replicaSet=mongodb_replicaSet, read_preference=eval(mongodb_read_preference))

下面getClient函數(shù)的conf
{    
    "mongodb_host" : "192.168.1.161",
    "mongodb_set" : "192.168.1.161:27017",
    "mongodb_replicaSet" : "arg",
    "mongodb_read_preference" : "ReadPreference.SECONDARY_PREFERRED",
    "mongodb_port" : 27017,
    "mongodb_user":"ceph",
    "mongodb_passwd":"monpassword",
    "is_mongo_authenticate" : 0,
    "is_mongo_replicat" : 1,
}
pymongo連接mongodb
def getClient(conf, dbname):
    '''
        conf : json  conf objet
        conf=load_conf(configfile)
        db = getClient(conf)['ceph']
        collection =db['cluster']
        cursor=collection.find_one()
        Return  a connexion to  database specified  in  conf file
        take care with authentication
    '''
    mongodb_host = conf.get("mongodb_host", "127.0.0.1")
    mongodb_port = conf.get("mongodb_port", "27017")
    mongodb_URL = "mongodb://"+mongodb_host+":"+str(mongodb_port)
    #mongodb replication
    is_mongo_replicat = conf.get("is_mongo_replicat", 0)
    mongodb_set = "'"+conf.get("mongodb_set","")+"'"
    mongodb_replicaSet =conf.get("mongodb_replicaSet",None)
    mongodb_read_preference = conf.get("mongodb_read_preference",None)
   
 
    if is_mongo_replicat ==  1:
        # 使用MongoDB 副本集,第1個(gè)參數(shù)是主host,第2個(gè)是replSet名,第3個(gè)是模式
        client = MongoReplicaSetClient(eval(mongodb_set), replicaSet=mongodb_replicaSet, read_preference=eval(mongodb_read_preference))
    else:
        #if not replicated
        client = MongoClient(mongodb_URL)
    # mongo db  authentication
    is_mongo_authenticate = conf.get("is_mongo_authenticate", 0)
    mongodb_user = conf.get("mongodb_user", "ceph")
    mongodb_passwd = conf.get("mongodb_passwd", "empty")
    if is_mongo_authenticate == 1:
        client[dbname].authenticate(mongodb_user,mongodb_passwd)
        
    return client[dbname]

8.kill 掉node6哮兰,即端口 27021

9.然后連接到node7上:mongo --host 192.168.80.128 --port 27022,查看狀態(tài)苟弛,發(fā)現(xiàn)node7為從節(jié)點(diǎn)喝滞,node8為主節(jié)點(diǎn)了,原來(lái)的node6 不可達(dá)膏秫、不健康的右遭。

>XbqSet:SECONDARY> rs.status()
{
    "set" : "XbqSet",
    "date" : ISODate("2017-07-27T22:08:24.894Z"),
    "myState" : 2,
    "members" : [
        {
            "_id" : 1,
            "name" : "192.168.80.128:27021",
            "health" : 0,
            "state" : 8,
            "stateStr" : "(not reachable/healthy)",
            "uptime" : 0,
            "optime" : Timestamp(0, 0),
            "optimeDate" : ISODate("1970-01-01T00:00:00Z"),
            "lastHeartbeat" : ISODate("2017-07-27T22:08:23.748Z"),
            "lastHeartbeatRecv" : ISODate("2017-07-27T22:07:43.464Z"),
            "pingMs" : 0,
            "lastHeartbeatMessage" : "Failed attempt to connect to 192.168.80.128:27021; couldn't connect to server 192.168.80.128:27021 (192.168.80.128), connection attempt failed",
            "configVersion" : -1
        },
        {
            "_id" : 2,
            "name" : "192.168.80.128:27022",
            "health" : 1,
            "state" : 2,
            "stateStr" : "SECONDARY",
            "uptime" : 833,
            "optime" : Timestamp(1501192872, 1),
            "optimeDate" : ISODate("2017-07-27T22:01:12Z"),
            "configVersion" : 1,
            "self" : true
        },
        {
            "_id" : 3,
            "name" : "192.168.80.128:27023",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "uptime" : 431,
            "optime" : Timestamp(1501192872, 1),
            "optimeDate" : ISODate("2017-07-27T22:01:12Z"),
            "lastHeartbeat" : ISODate("2017-07-27T22:08:23.409Z"),
            "lastHeartbeatRecv" : ISODate("2017-07-27T22:08:23.521Z"),
            "pingMs" : 0,
            "electionTime" : Timestamp(1501193266, 1),
            "electionDate" : ISODate("2017-07-27T22:07:46Z"),
            "configVersion" : 1
        }
    ],
    "ok" : 1
}

10.重新啟動(dòng)node6:mongod --config mongodb.conf

11.繼續(xù)連接node7:mongo --host 192.168.80.128 --port 27022,查看狀態(tài),原來(lái)的node6 變?yōu)榱?從節(jié)點(diǎn)狸演。

rs.status()
{
"set" : "XbqSet",
"date" : ISODate("2017-07-27T22:12:41.275Z"),
"myState" : 2,
"members" : [
{
"_id" : 1,
"name" : "192.168.80.128:27021",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 54,
"optime" : Timestamp(1501192872, 1),
"optimeDate" : ISODate("2017-07-27T22:01:12Z"),
"lastHeartbeat" : ISODate("2017-07-27T22:12:40.382Z"),
"lastHeartbeatRecv" : ISODate("2017-07-27T22:12:41.213Z"),
"pingMs" : 0,
"configVersion" : 1
},
{
"_id" : 2,
"name" : "192.168.80.128:27022",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1090,
"optime" : Timestamp(1501192872, 1),
"optimeDate" : ISODate("2017-07-27T22:01:12Z"),
"configVersion" : 1,
"self" : true
},
{
"_id" : 3,
"name" : "192.168.80.128:27023",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 688,
"optime" : Timestamp(1501192872, 1),
"optimeDate" : ISODate("2017-07-27T22:01:12Z"),
"lastHeartbeat" : ISODate("2017-07-27T22:12:39.673Z"),
"lastHeartbeatRecv" : ISODate("2017-07-27T22:12:39.820Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1501193266, 1),
"electionDate" : ISODate("2017-07-27T22:07:46Z"),
"configVersion" : 1
}
],
"ok" : 1
}```

五言蛇、增加、刪除節(jié)點(diǎn)

1.cp -r node8 node10宵距,修改node10的datapath、logpath的port吨拗,并將port 改為 27024满哪,啟動(dòng) node10。

2.進(jìn)入到主節(jié)點(diǎn)中劝篷,mongo --host 192.168.80.128 --port 27023哨鸭,一定要在主節(jié)點(diǎn)中進(jìn)行操作。

3.增加節(jié)點(diǎn):rs.add(“192.168.80.128:27024”)

>XbqSet:PRIMARY> rs.add("192.168.80.128:27024")
{ "ok" : 1 }

4.查看狀態(tài)娇妓,rs.status()像鸡,發(fā)現(xiàn)新增加的節(jié)點(diǎn) 為從節(jié)點(diǎn),即 SECONDARY哈恰。

XbqSet:PRIMARY> rs.status()
{
"set" : "XbqSet",
"date" : ISODate("2017-07-29T14:31:44.872Z"),
"myState" : 1,
"members" : [
{
"_id" : 1,
"name" : "192.168.80.128:27021",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 630,
"optime" : Timestamp(1501338697, 1),
"optimeDate" : ISODate("2017-07-29T14:31:37Z"),
"lastHeartbeat" : ISODate("2017-07-29T14:31:43.555Z"),
"lastHeartbeatRecv" : ISODate("2017-07-29T14:31:43.457Z"),
"pingMs" : 0,
"configVersion" : 2
},
{
"_id" : 2,
"name" : "192.168.80.128:27022",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1854,
"optime" : Timestamp(1501338697, 1),
"optimeDate" : ISODate("2017-07-29T14:31:37Z"),
"lastHeartbeat" : ISODate("2017-07-29T14:31:43.555Z"),
"lastHeartbeatRecv" : ISODate("2017-07-29T14:31:43.186Z"),
"pingMs" : 0,
"configVersion" : 2
},
{
"_id" : 3,
"name" : "192.168.80.128:27023",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 1953,
"optime" : Timestamp(1501338697, 1),
"optimeDate" : ISODate("2017-07-29T14:31:37Z"),
"electionTime" : Timestamp(1501338022, 1),
"electionDate" : ISODate("2017-07-29T14:20:22Z"),
"configVersion" : 2,
"self" : true
},
{
"_id" : 4,
"name" : "192.168.80.128:27024",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 7,
"optime" : Timestamp(1501338697, 1),
"optimeDate" : ISODate("2017-07-29T14:31:37Z"),
"lastHeartbeat" : ISODate("2017-07-29T14:31:43.566Z"),
"lastHeartbeatRecv" : ISODate("2017-07-29T14:31:43.579Z"),
"pingMs" : 6,
"configVersion" : 2
}
],
"ok" : 1
}

5.刪除節(jié)點(diǎn):rs.remove(hostportstr)

XbqSet:PRIMARY> rs.remove("192.168.80.128:27024")
{ "ok" : 1 }

查看狀態(tài)只估,發(fā)現(xiàn) 端口為27024的節(jié)點(diǎn) 沒(méi)有了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末着绷,一起剝皮案震驚了整個(gè)濱河市蛔钙,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荠医,老刑警劉巖吁脱,帶你破解...
    沈念sama閱讀 212,599評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異彬向,居然都是意外死亡兼贡,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,629評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)娃胆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)遍希,“玉大人,你說(shuō)我怎么就攤上這事缕棵》醢啵” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,084評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵招驴,是天一觀的道長(zhǎng)篙程。 經(jīng)常有香客問(wèn)我,道長(zhǎng)别厘,這世上最難降的妖魔是什么虱饿? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,708評(píng)論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上氮发,老公的妹妹穿的比我還像新娘渴肉。我一直安慰自己,他們只是感情好爽冕,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,813評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布仇祭。 她就那樣靜靜地躺著,像睡著了一般颈畸。 火紅的嫁衣襯著肌膚如雪乌奇。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,021評(píng)論 1 291
  • 那天眯娱,我揣著相機(jī)與錄音礁苗,去河邊找鬼。 笑死徙缴,一個(gè)胖子當(dāng)著我的面吹牛试伙,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播于样,決...
    沈念sama閱讀 39,120評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼疏叨,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了百宇?” 一聲冷哼從身側(cè)響起考廉,我...
    開(kāi)封第一講書(shū)人閱讀 37,866評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎携御,沒(méi)想到半個(gè)月后昌粤,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,308評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡啄刹,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,633評(píng)論 2 327
  • 正文 我和宋清朗相戀三年涮坐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片誓军。...
    茶點(diǎn)故事閱讀 38,768評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡袱讹,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出昵时,到底是詐尸還是另有隱情捷雕,我是刑警寧澤,帶...
    沈念sama閱讀 34,461評(píng)論 4 333
  • 正文 年R本政府宣布壹甥,位于F島的核電站救巷,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏句柠。R本人自食惡果不足惜浦译,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,094評(píng)論 3 317
  • 文/蒙蒙 一棒假、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧精盅,春花似錦帽哑、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,850評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至她肯,卻和暖如春佳头,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背晴氨。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,082評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留碉输,地道東北人籽前。 一個(gè)月前我還...
    沈念sama閱讀 46,571評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像敷钾,于是被迫代替她去往敵國(guó)和親枝哄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,666評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • host Copyright (c) 2014-2017, racaljk. https://github.com...
    JasonStack閱讀 3,091評(píng)論 0 4
  • docker inspect --format '{{ .NetworkSettings.IPAddress }}...
    黑客不黑撒閱讀 373評(píng)論 0 0
  • MongoDB基礎(chǔ)請(qǐng)參考:http://blog.51cto.com/kaliarch/2044423 Mongo...
    kaliarch閱讀 2,014評(píng)論 0 0
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理阻荒,服務(wù)發(fā)現(xiàn)挠锥,斷路器,智...
    卡卡羅2017閱讀 134,637評(píng)論 18 139
  • 中午的時(shí)候手賤回了一條短信侨赡,而且神經(jīng)質(zhì)的回復(fù)的是:哼~ 蓖租。。羊壹。蓖宦。∮兔ǎ〕砻現(xiàn)在想起來(lái)我是奔潰的!麻痹的情妖,我的腦回路真特么...
    淺枝壓綠葉閱讀 397評(píng)論 0 0