生产环境的一套MongoDB发生故障,其中一个config节点的磁盘损坏。
修复流程如下:
-
# 登录到config库,查看config的节点状态
-
# 可以看到_id为2的节点状态是不可访问的
-
[root@mongos-mq ~]# /opt/mongodb-linux-x86_64-3.2.10/bin/mongo --port 10000
-
MongoDB shell version: 3.2.10
-
connecting to: 127.0.0.1:10000/test
-
config_rs:PRIMARY> use admin
-
switched to db admin
-
config_rs:PRIMARY> db.auth("root", "xxx")
-
1
-
config_rs:PRIMARY> rs.status()
-
{
-
"set" : "config_rs",
-
"date" : ISODate("2018-05-30T04:53:21.081Z"),
-
"myState" : 1,
-
"term" : NumberLong(1),
-
"configsvr" : true,
-
"heartbeatIntervalMillis" : NumberLong(2000),
-
"members" : [
-
{
-
"_id" : 0,
-
"name" : "192.168.210.208:10000",
-
"health" : 1,
-
"state" : 1,
-
"stateStr" : "PRIMARY",
-
"uptime" : 1112804,
-
"optime" : {
-
"ts" : Timestamp(1527656000, 1),
-
"t" : NumberLong(1)
-
},
-
"optimeDate" : ISODate("2018-05-30T04:53:20Z"),
-
"electionTime" : Timestamp(1526543249, 2),
-
"electionDate" : ISODate("2018-05-17T07:47:29Z"),
-
"configVersion" : 3,
-
"self" : true
-
},
-
{
-
"_id" : 1,
-
"name" : "192.168.210.209:10000",
-
"health" : 1,
-
"state" : 2,
-
"stateStr" : "SECONDARY",
-
"uptime" : 1111358,
-
"optime" : {
-
"ts" : Timestamp(1527656000, 1),
-
"t" : NumberLong(1)
-
},
-
"optimeDate" : ISODate("2018-05-30T04:53:20Z"),
-
"lastHeartbeat" : ISODate("2018-05-30T04:53:20.836Z"),
-
"lastHeartbeatRecv" : ISODate("2018-05-30T04:53:19.329Z"),
-
"pingMs" : NumberLong(0),
-
"syncingTo" : "192.168.210.208:10000",
-
"configVersion" : 3
-
},
-
{
-
"_id" : 2,
-
"name" : "192.168.210.207:10000",
-
"health" : 0,
-
"state" : 8,
-
"stateStr" : "(not reachable/healthy)",
-
"uptime" : 0,
-
"optime" : {
-
"ts" : Timestamp(0, 0),
-
"t" : NumberLong(-1)
-
},
-
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
-
"lastHeartbeat" : ISODate("2018-05-30T04:53:20.850Z"),
-
"lastHeartbeatRecv" : ISODate("2018-05-26T09:07:27.318Z"),
-
"pingMs" : NumberLong(0),
-
"lastHeartbeatMessage" : "Connection refused",
-
"configVersion" : -1
-
}
-
],
-
"ok" : 1
-
}
-
-
# 在故障节点上面重新安装MongoDB,创建数据文件目录
-
[root@tomcat-207 opt]# tar xfz mongodb-linux-x86_64-3.2.10.tgz
-
[root@tomcat-207 opt]# mkdir -p /data/mongodb_data/config_rs1_10000
-
-
# 配置参数文件
-
[root@tomcat-207 opt]# cat /etc/mongodb/config_rs1_10000.conf
-
systemLog:
-
destination: file
-
path: /data/mongodb_data/config_rs1_10000/mongod.log
-
processManagement:
-
fork: true
-
net:
-
bindIp: 0.0.0.0
-
port: 10000
-
security:
-
keyFile: /data/mongodb_data/keyfile
-
storage:
-
dbPath: /data/mongodb_data/config_rs1_10000
-
directoryPerDB: true
-
operationProfiling:
-
slowOpThresholdMs: 100
-
mode: slowOp
-
replication:
-
replSetName: config_rs
-
sharding:
-
clusterRole: configsvr
-
-
# 从其他config节点拷贝过来keyfile文件
-
[root@mongos-mq opt]# scp /data/mongodb_data/keyfile root@192.168.210.207:/data/mongodb_data/
-
-
# 启动Mongo
-
[root@mongos-mq opt]# /opt/mongodb-linux-x86_64-3.2.10/bin/mongod -f /etc/mongodb/config_rs1_10000.conf
-
about to fork child process, waiting until server is ready for connections.
-
forked process: 3744
-
child process started successfully, parent exiting
-
-
# 查看config节点状态
-
# 所有的config节点都恢复正常
-
config_rs:PRIMARY> rs.status()
-
{
-
"set" : "config_rs",
-
"date" : ISODate("2018-05-30T05:29:40.103Z"),
-
"myState" : 1,
-
"term" : NumberLong(1),
-
"configsvr" : true,
-
"heartbeatIntervalMillis" : NumberLong(2000),
-
"members" : [
-
{
-
"_id" : 0,
-
"name" : "192.168.210.208:10000",
-
"health" : 1,
-
"state" : 1,
-
"stateStr" : "PRIMARY",
-
"uptime" : 1114983,
-
"optime" : {
-
"ts" : Timestamp(1527658178, 4),
-
"t" : NumberLong(1)
-
},
-
"optimeDate" : ISODate("2018-05-30T05:29:38Z"),
-
"electionTime" : Timestamp(1526543249, 2),
-
"electionDate" : ISODate("2018-05-17T07:47:29Z"),
-
"configVersion" : 3,
-
"self" : true
-
},
-
{
-
"_id" : 1,
-
"name" : "192.168.210.209:10000",
-
"health" : 1,
-
"state" : 2,
-
"stateStr" : "SECONDARY",
-
"uptime" : 1113537,
-
"optime" : {
-
"ts" : Timestamp(1527658178, 4),
-
"t" : NumberLong(1)
-
},
-
"optimeDate" : ISODate("2018-05-30T05:29:38Z"),
-
"lastHeartbeat" : ISODate("2018-05-30T05:29:39.535Z"),
-
"lastHeartbeatRecv" : ISODate("2018-05-30T05:29:39.941Z"),
-
"pingMs" : NumberLong(0),
-
"syncingTo" : "192.168.210.208:10000",
-
"configVersion" : 3
-
},
-
{
-
"_id" : 2,
-
"name" : "192.168.210.207:10000",
-
"health" : 1,
-
"state" : 2,
-
"stateStr" : "SECONDARY",
-
"uptime" : 1588,
-
"optime" : {
-
"ts" : Timestamp(1527658178, 4),
-
"t" : NumberLong(1)
-
},
-
"optimeDate" : ISODate("2018-05-30T05:29:38Z"),
-
"lastHeartbeat" : ISODate("2018-05-30T05:29:39.535Z"),
-
"lastHeartbeatRecv" : ISODate("2018-05-30T05:29:39.691Z"),
-
"pingMs" : NumberLong(0),
-
"syncingTo" : "192.168.210.209:10000",
-
"configVersion" : 3
-
}
-
],
-
"ok" : 1
-
}
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26506993/viewspace-2155380/
,如需转载,请注明出处,否则将追究法律责任。