Download as pdf or txt
Download as pdf or txt
You are on page 1of 10

INSTALL MONGO

https://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/#install-mongodb

sudo service mongodb stop


sudo mkdir -p /var/tmp/db0 /var/tmp/db1
sudo mongod --port 27017 --dbpath /var/tmp/data/db0 --replSet repl0
Open new window in terminal (CTRL+SHIFT+T)
mongo
> rs.initiate()
{"info2" : "no configuration explicitly specified -- making one",
"me" :"ALEX-WORK-AE1:27017",
"ok" : 1}

repl0:SECONDARY> rs.conf()
{
"_id" : "repl0",
"version" : 1,
"members" : [
{
"_id" : 0,
"host" : "ALEX-WORK-AE1: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
}
}
}

- sudo mongod --port 27018 --dbpath /var/tmp/db1 --replSet repl0 (in new terminal
window)
- sudo mongod --port 27019 --dbpath /var/tmp/db2 --replSet repl0 (in new terminal
window)
- mongo (монго консоль) (in new window)
- repl0:PRIMARY> rs.add("ALEX-WORK-AE1:27018")
- repl0:PRIMARY> rs.add("ALEX-WORK-AE1:27019")

repl0:PRIMARY> rs.status()
{
"set" : "repl0",
"date" : ISODate("2015-11-05T23:33:36.643Z"),
"myState" : 1,
"members" : [
{
"_id" : 0,
"name" : "ALEX-WORK-AE1:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 1750,
"optime" : Timestamp(1446766355, 1),
"optimeDate" : ISODate("2015-11-05T23:32:35Z"),
"electionTime" : Timestamp(1446765914, 1),
"electionDate" : ISODate("2015-11-05T23:25:14Z"),
"configVersion" : 3,
"self" : true
},
{
"_id" : 1,
"name" : "ALEX-WORK-AE1:27018",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 502,
"optime" : Timestamp(1446766355, 1),
"optimeDate" : ISODate("2015-11-05T23:32:35Z"),
"lastHeartbeat" : ISODate("2015-11-05T23:33:35.272Z"),
"lastHeartbeatRecv" : ISODate("2015-11-05T23:33:35.289Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "could not find member to sync from",
"configVersion" : 3
},
{
"_id" : 2,
"name" : "ALEX-WORK-AE1:27019",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 61,
"optime" : Timestamp(1446766355, 1),
"optimeDate" : ISODate("2015-11-05T23:32:35Z"),
"lastHeartbeat" : ISODate("2015-11-05T23:33:35.270Z"),
"lastHeartbeatRecv" : ISODate("2015-11-05T23:33:35.289Z"),
"pingMs" : 0,
"configVersion" : 3
}
],
"ok" : 1
}

repl0:PRIMARY> cfg = rs.conf();


repl0:PRIMARY> cfg.members[1].priority = 2;
repl0:PRIMARY> cfg.members[2].priority = 1;
repl0:PRIMARY> rs.reconfig(cfg)
{ "ok" : 1 }
repl0:PRIMARY> rs.status()
repl0:SECONDARY> rs.status()
{
"set" : "repl0",
"date" : ISODate("2015-11-05T23:38:02.889Z"),
"myState" : 2,
"members" : [
{
"_id" : 0,
"name" : "ALEX-WORK-AE1:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 327,
"optime" : Timestamp(1446766672, 1),
"optimeDate" : ISODate("2015-11-05T23:37:52Z"),
"lastHeartbeat" : ISODate("2015-11-05T23:38:02.574Z"),
"lastHeartbeatRecv" : ISODate("2015-11-05T23:38:01.868Z"),
"pingMs" : 0,
"syncingTo" : "ALEX-WORK-AE1:27019",
"configVersion" : 5
},
{
"_id" : 1,
"name" : "ALEX-WORK-AE1:27018",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 327,
"optime" : Timestamp(1446766672, 1),
"optimeDate" : ISODate("2015-11-05T23:37:52Z"),
"lastHeartbeat" : ISODate("2015-11-05T23:38:02.575Z"),
"lastHeartbeatRecv" : ISODate("2015-11-05T23:38:01.448Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1446766678, 1),
"electionDate" : ISODate("2015-11-05T23:37:58Z"),
"configVersion" : 5
},
{
"_id" : 2,
"name" : "ALEX-WORK-AE1:27019",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 339,
"optime" : Timestamp(1446766672, 1),
"optimeDate" : ISODate("2015-11-05T23:37:52Z"),
"infoMessage" : "could not find member to sync from",
"configVersion" : 5,
"self" : true
}
],
"ok" : 1
}
exit
alex@ALEX-WORK-AE1:~ > mongo --port 27018

repl0:PRIMARY> cfg = rs.conf();

rs.remove("ALEX-WORK-AE1:27017")
repl0:PRIMARY> rs.addArb("ALEX-WORK-AE1:27017")
{ "ok" : 1 }
repl0:PRIMARY> cfg = rs.conf();
{
"_id" : "repl0",
"version" : 7,
"members" : [
{
"_id" : 1,
"host" : "ALEX-WORK-AE1:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 2,
"tags" : {

},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 2,
"host" : "ALEX-WORK-AE1:27019",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {

},
"slaveDelay" : 0,
"votes" : 1
},
{
"_id" : 3,
"host" : "ALEX-WORK-AE1:27017",
"arbiterOnly" : true,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {

},
"slaveDelay" : 0,
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatTimeoutSecs" : 10,
"getLastErrorModes" : {

},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
}
}
}

RUN SCRIPT (several times) python main.py

alex@ALEX-WORK-AE1:~/Workspace/work/flask_mongo_example > python main.py


TOTAL: records 13
DOC: {'data': 24, 'name': 'Name70'}
INSERTED NEW: id=563bea3e1da653371d33b338
DATABASE: (u'alex-work-ae1', 27018)
NEW TOTAL: records 14

GO TO KONSOLE TAB WITH MONGOD ON 27018


AND STOP PROCESS WITH CTRL-C

RUN SCRIPT (several times) python main.py


alex@ALEX-WORK-AE1:~/Workspace/work/flask_mongo_example > python main.py
TOTAL: records 13
DOC: {'data': 67, 'name': 'Name52'}
INSERTED NEW: id=563bea7b1da65337eb45be24
DATABASE: (u'alex-work-ae1', 27019) - server changed
NEW TOTAL: records 14

GOT TO MONGO:
mongo

repl0:ARBITER> rs.status()
{
"set" : "repl0",
"date" : ISODate("2015-11-05T23:48:02.668Z"),
"myState" : 7,
"syncingTo" : "ALEX-WORK-AE1:27019",
"members" : [
{
"_id" : 1,
"name" : "ALEX-WORK-AE1:27018",
"health" : 0,
"state" : 8,
"stateStr" : "(not reachable/healthy)",
"uptime" : 0,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2015-11-05T23:48:00.949Z"),
"lastHeartbeatRecv" : ISODate("2015-11-05T23:46:53.975Z"),
"pingMs" : 0,
"lastHeartbeatMessage" : "Failed attempt to connect to
ALEX-WORK-AE1:27018; couldn't connect to server ALEX-WORK-AE1:27018 (127.0.1.1),
connection attempt failed",
"configVersion" : -1
},
{
"_id" : 2,
"name" : "ALEX-WORK-AE1:27019",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 57,
"optime" : Timestamp(1446767227, 1),
"optimeDate" : ISODate("2015-11-05T23:47:07Z"),
"lastHeartbeat" : ISODate("2015-11-05T23:48:00.891Z"),
"lastHeartbeatRecv" : ISODate("2015-11-05T23:48:01.946Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1446767225, 1),
"electionDate" : ISODate("2015-11-05T23:47:05Z"),
"configVersion" : 7
},
{
"_id" : 3,
"name" : "ALEX-WORK-AE1:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 299,
"syncingTo" : "ALEX-WORK-AE1:27019",
"infoMessage" : "sync producer problem: 16235 going to start syncing, but buffer
is not empty",
"configVersion" : 7,
"self" : true
}
],
"ok" : 1
}

Для интереса вырубаем на 27019 порту тоже


Запустим скритт и получим pymongo.errors.ServerSelectionTimeoutError:

Страртуем опять alex@ALEX-WORK-AE1:~ > sudo mongod --port 27018 --dbpath


/var/tmp/db1 --replSet repl0

(ПРИАМРИ БЫЛ НА 27019 порту)

и alex@ALEX-WORK-AE1:~ > sudo mongod --port 27019 --dbpath /var/tmp/db1 --replSet repl0

Смотрим в базу:
repl0:ARBITER> rs.status()
{
"set" : "repl0",
"date" : ISODate("2015-11-05T23:51:24.475Z"),
"myState" : 7,
"syncingTo" : "ALEX-WORK-AE1:27019",
"members" : [
{
"_id" : 1,
"name" : "ALEX-WORK-AE1:27018",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 81,
"optime" : Timestamp(1446767166, 1),
"optimeDate" : ISODate("2015-11-05T23:46:06Z"),
"lastHeartbeat" : ISODate("2015-11-05T23:51:23.047Z"),
"lastHeartbeatRecv" : ISODate("2015-11-05T23:51:23.524Z"),
"pingMs" : 0,
"electionTime" : Timestamp(1446767403, 1),
"electionDate" : ISODate("2015-11-05T23:50:03Z"),
"configVersion" : 7
},
{
"_id" : 2,
"name" : "ALEX-WORK-AE1:27019",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 5,
"optime" : Timestamp(1446767227, 1),
"optimeDate" : ISODate("2015-11-05T23:47:07Z"),
"lastHeartbeat" : ISODate("2015-11-05T23:51:22.998Z"),
"lastHeartbeatRecv" : ISODate("2015-11-05T23:51:23.372Z"),
"pingMs" : 0,
"configVersion" : 7
},
{
"_id" : 3,
"name" : "ALEX-WORK-AE1:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 501,
"syncingTo" : "ALEX-WORK-AE1:27019",
"infoMessage" : "sync producer problem: 16235 going to start syncing, but buffer
is not empty",
"configVersion" : 7,
"self" : true
}
],
"ok" : 1
}

ИИИ СКРИПТ
python main.py
TOTAL: records 14
DOC: {'data': 24, 'name': 'Name26'}
INSERTED NEW: id=563beb9a1da6533caa8768ba
DATABASE: (u'alex-work-ae1', 27018)
NEW TOTAL: records 15

всегда праймари

You might also like