Это руководство описывает пошаговую установку и настройку реплики из 3 узлов mongoDB на базе движка WiredTiger. А также несколько полезных мелочей для людей, впервые столкнувшихся с MongoDB.
Важное уточнение:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 0C49F3730359A14518585931BC711F9BA15703C6
nano /etc/apt/sources.list
deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.4 main
sudo apt-get update
sudo apt-get install -y mongodb-org
storage:
engine: wiredTiger
dbPath: /var/lib/mongodb
journal:
enabled: true
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
replSetName: replicaname
net:
port: 27017
bindIp:0.0.0.0
mongo
rs.status()
rs.initiate(
{
_id: "rs0",
version: 1
members: [ { _id : 0, host : "<Primary server ip>:27017" } ]
})
rs.conf()
rs.add("<Secondary server ip>:27017")
rs.addArb(“<arbiter server ip>:27017”)
rs.add(“<arbiter server ip>:27017”, true)
cfg = rs.conf()
cfg.members[0].priority = 2
cfg.members[1].priority = 3
cfg.members[2].priority = 1
rs.reconfig(cfg, {force : true})
rs.add({host: “<secondary server ip:27017”, priority: 1})
rs.status()
rs.status()
{
"set" : "<имя вашей реплики>",
"date" : ISODate("2017-05-05T13:57:01.538Z"),
"myState" : 2,
"term" : NumberLong(1021),
"syncingTo" : "<secondary server ip>:27017",
"heartbeatIntervalMillis" : NumberLong(2000),
"members" : [
{
"_id" : 0,
"name" : "<Secondary server ip>:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 1908285,
"optime" : {
"ts" : Timestamp(1493992502, 1),
"t" : NumberLong(1021)
},
"optimeDate" : ISODate("2017-05-05T13:55:02Z"),
"syncingTo" : ":27017",
"configVersion" : 373058,
"self" : true
},
{
"_id" : 1,
"name" : "<Primary server ip>:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 1688032,
"optime" : {
"ts" : Timestamp(1493992502, 1),
"t" : NumberLong(1021)
},
"optimeDate" : ISODate("2017-05-05T13:55:02Z"),
"lastHeartbeat" : ISODate("2017-05-05T13:57:00.108Z"),
"lastHeartbeatRecv" : ISODate("2017-05-05T13:57:00.895Z"),
"pingMs" : NumberLong(0),
"electionTime" : Timestamp(1492304555, 1),
"electionDate" : ISODate("2017-04-16T01:02:35Z"),
"configVersion" : 373058
},
{
"_id" : 2,
"name" : "<Arbiter server ip>:27017",
"health" : 1,
"state" : 7,
"stateStr" : "ARBITER",
"uptime" : 1680982,
"lastHeartbeat" : ISODate("2017-05-05T13:56:59.812Z"),
"lastHeartbeatRecv" : ISODate("2017-05-05T13:56:59.062Z"),
"pingMs" : NumberLong(0),
"configVersion" : 373058
}
],
"ok" : 1
}
rs.stepDown(60,40)
60 секунд — время, в течение которого сервер, с которого запущено выполнение команды, не может стать Primary; 40 секунд — время перевыборов нового Primary.db.adminCommand({replSetStepDown: 30, force: 1})
30 секунд — время отключения Primary и перевыборы. Выполнение команды допустимо с любого из серверов mongoDB.rs.stepDown(60)
Узел, с которого запущена команда, в течение 60 секунд не сможет стать Primary.mongorestore <Имя БД>
mongorestore ./Backup
mongorestore --collection <коллекция> --db <Имя БД> dump/
mongodump --out /Backup
mongodump --db <Имя БД> --out /Backup
mongodump --db <Имя БД> --collection <Имя коллекции>--out /Backup
sudo mongodump --db newdb --out /var/backups/mongobackups/'date +"%m-%d-%y"'
К сожалению, не доступен сервер mySQL