* 背景
现有一个单节点启动的mongodb实例,版本:3.4.3。带账号密码。目标是将该单节点转换成复制集结构,同时带账号密码登录复制集。
单节点的mongodb的配置文件为:
mongo.conf
dbpath=/usr/local/mongodb/data/db
logpath=/usr/local/mongodb/data/logs/mongodb.log
logappend=true
journal=true
quiet=true
port=27017
fork=true
auth=true
链接字符串为:
mongodb://user:passed@10.1.161.94:27017/dbName
* 步骤
- 1 修改原先的配置文件为:mongod.yml
systemLog:
destination: file
path: "/usr/local/mongodb/data/logs/mongodb.log"
logAppend: true
quiet: true
storage:
dbPath: "/usr/local/mongodb/data/db"
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: localhost,10.1.161.94
port: 27017
security:
keyFile: "/usr/local/mongodb/keyFile"
replication:
replSetName: "rs0"
- 2 生成一个为replica set 成员准备的SSL KEY文件
> touch keyFile
> openssl rand -base64 741 > keyFile
> chmod 600 keyFile
这里keyFile的权限给600就够了,不要给777,否则mongodb实例启动不起来,会报权限too open。
- 3 以新配置文件重新启动该实例。
> ./bin/mongod --config mongod.yml
- 4 登录该实例,初始化复制集
> ./bin/mongo
MongoDB shell version v3.4.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.4.3
> use admin
switched to db admin
> db.auth("user","passed")
1
> rs.initiate()
- 5 目前该复制集只有一个节点,在另外一台机器上部署另外两个节点:10.1.161.95:27017 10.1.161.95:28017
将keyFile复制过去,配置文件分别为:
mongod_2.yml
systemLog:
destination: file
path: "/usr/local/mongodb/data_2/logs/mongodb.log"
logAppend: true
quiet: true
storage:
dbPath: "/usr/local/mongodb/data_2/db"
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: localhost,10.1.161.95
port: 27017
security:
keyFile: "/usr/local/mongodb/keyFile"
replication:
replSetName: "rs0"
mongod_3.yml
systemLog:
destination: file
path: "/usr/local/mongodb/data_3/logs/mongodb.log"
logAppend: true
quiet: true
storage:
dbPath: "/usr/local/mongodb/data_3/db"
journal:
enabled: true
processManagement:
fork: true
net:
bindIp: localhost,10.1.161.95
port: 28017
security:
keyFile: "/usr/local/mongodb/keyFile"
replication:
replSetName: "rs0"
- 6 启动另外2个节点,登录主节点10.1.161.94:27017,将这2个几点添加进复制集。
> rs.add("10.1.161.95:27017")
> rs.add("10.1.161.95:28017")
- 7 查看复制集状态
> rs.status()
{
"set" : "rs0",
"date" : ISODate("2017-12-12T02:01:31.751Z"),
"myState" : 2,
"term" : NumberLong(7),
"syncingTo" : "10.1.161.95:27017",
"heartbeatIntervalMillis" : NumberLong(2000),
"optimes" : {
"lastCommittedOpTime" : {
"ts" : Timestamp(1513044128, 1),
"t" : NumberLong(7)
},
"appliedOpTime" : {
"ts" : Timestamp(1513044128, 1),
"t" : NumberLong(7)
},
"durableOpTime" : {
"ts" : Timestamp(1513044128, 1),
"t" : NumberLong(7)
}
},
"members" : [
{
"_id" : 0,
"name" : "10.1.161.94:27017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 59968,
"optime" : {
"ts" : Timestamp(1513044128, 1),
"t" : NumberLong(7)
},
"optimeDate" : ISODate("2017-12-12T02:02:08Z"),
"syncingTo" : "10.1.161.95:27017",
"configVersion" : 3,
"self" : true
},
{
"_id" : 1,
"name" : "10.1.161.95:27017",
"health" : 1,
"state" : 1,
"stateStr" : "PRIMARY",
"uptime" : 59966,
"optime" : {
"ts" : Timestamp(1513044128, 1),
"t" : NumberLong(7)
},
"optimeDurable" : {
"ts" : Timestamp(1513044128, 1),
"t" : NumberLong(7)
},
"optimeDate" : ISODate("2017-12-12T02:02:08Z"),
"optimeDurableDate" : ISODate("2017-12-12T02:02:08Z"),
"lastHeartbeat" : ISODate("2017-12-12T02:01:29.913Z"),
"lastHeartbeatRecv" : ISODate("2017-12-12T02:01:30.306Z"),
"pingMs" : NumberLong(0),
"electionTime" : Timestamp(1512983310, 1),
"electionDate" : ISODate("2017-12-11T09:08:30Z"),
"configVersion" : 3
},
{
"_id" : 2,
"name" : "10.1.161.95:28017",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 59966,
"optime" : {
"ts" : Timestamp(1513044128, 1),
"t" : NumberLong(7)
},
"optimeDurable" : {
"ts" : Timestamp(1513044128, 1),
"t" : NumberLong(7)
},
"optimeDate" : ISODate("2017-12-12T02:02:08Z"),
"optimeDurableDate" : ISODate("2017-12-12T02:02:08Z"),
"lastHeartbeat" : ISODate("2017-12-12T02:01:29.913Z"),
"lastHeartbeatRecv" : ISODate("2017-12-12T02:01:30.021Z"),
"pingMs" : NumberLong(0),
"syncingTo" : "10.1.161.95:27017",
"configVersion" : 3
}
],
"ok" : 1
}
- 8 复制集的链接字符串为:
mongodb://user:passed@10.1.161.94:27017,10.1.161.95:27017,10.1.161.95:28017/dbName?replicaSet=rs0
1582

被折叠的 条评论
为什么被折叠?



