mongodb 复制集添加新节点:
向已有的replica set 添加新成员,新加的成员可以是空的,当然也可以是从其他节点的数据拷贝,
添加新成员时,必须在新的机器上先起来一个mongodb服务,必须指出要加入的replica set 集群的名字基本语法如下(其他是默认的),然后再在replica set的master 库上执行添加操作,
删除原数据,该新成员是空的
cd /opt/mongodb/data
rm -rf *
[root@gewa37 data]# more /etc/mongod.conf
storage:
dbPath: "/opt/mongodb/data"
journal:
enabled: true
directoryPerDB: true
engine: "wiredTiger"
wiredTiger:
engineConfig:
cacheSizeGB: 30
systemLog:
logAppend: true
destination: file
path: "/opt/mongodb/log/mongodb.log"
processManagement:
pidFilePath: "/opt/mongodb/log/mongo.pid"
fork: true
net:
port: 40001
maxIncomingConnections: 5000
security:
keyFile: "/opt/mongodb/mykey"
authorization: "enabled"
replication:
replSetName: "xxxxdb"
oplogSizeMB: 1024
operationProfiling:
slowOpThresholdMs: 200
mode: "slowOp"
启动:
/usr/bin/mongod -f /etc/mongod.conf
新加入节点状态:
rs.add("xxxxx.xxxxx.cn:40001");
rs.status();
"_id" : 7,
"name" : "xxxx.xxxx.cn:40001",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2",
"uptime" : 4,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2015-12-04T05:42:10.511Z"),
"lastHeartbeatRecv" : ISODate("2015-12-04T05:42:10.920Z"),
"pingMs" : 17,
"configVersion" : 24
}
],
"stateStr" : "STARTUP2":不是正常的SECONDARY,同步完成后:
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),日期也是最初的日期
"state" : 5,
同步完成后状态:
"_id" : 7,
"name" : "xxxx.xxxx.cn:40001",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 2557,
"optime" : Timestamp(1449210279, 2),
"optimeDate" : ISODate("2015-12-04T06:24:39Z"),
"lastHeartbeat" : ISODate("2015-12-04T06:24:42.279Z"),
"lastHeartbeatRecv" : ISODate("2015-12-04T06:24:43.524Z"),
"pingMs" : 6,
"syncingTo" : "xxx39.xxxx.cn:40001",
"configVersion" : 24
日志中:重新同步数据过程:
2015-12-04T13:44:16.327+0800 I INDEX [rsSync] build index done. scanned 61 total records. 0 secs
2015-12-04T13:44:16.524+0800 I INDEX [rsSync] build index on: gewampi.com.gewara.json.mpi.PlayItem_130376373 properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "gewampi.com.gewara.json.mpi.PlayItem_130376373" }
2015-12-04T13:44:16.524+0800 I INDEX [rsSync] building index using bulk method
2015-12-04T13:44:16.591+0800 I INDEX [rsSync] build index done. scanned 42 total records. 0 secs
2015-12-04T13:44:16.814+0800 I INDEX [rsSync] build index on: gewampi.com.gewara.json.mpi.PlayItem_130376567 properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "gewampi.com.gewara.json.mpi.PlayItem_130376567" }
2015-12-04T13:44:16.814+0800 I INDEX [rsSync] building index using bulk method
2015-12-04T13:44:16.855+0800 I INDEX [rsSync] build index done. scanned 69 total records. 0 secs
2015-12-04T13:44:17.064+0800 I INDEX [rsSync] build index on: gewampi.com.gewara.json.mpi.PlayItem_130377470 properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "gewampi.com.gewara.json.mpi.PlayItem_130377470" }
2015-12-04T13:44:17.064+0800 I INDEX [rsSync] building index using bulk method
2015-12-04T13:44:17.107+0800 I INDEX [rsSync] build index done. scanned 40 total records. 0 secs
2015-12-04T13:44:17.314+0800 I INDEX [rsSync] build index on: gewampi.com.gewara.json.mpi.PlayItem_130377634 properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "gewampi.com.gewara.json.mpi.PlayItem_130377634" }
2015-12-04T13:44:17.314+0800 I INDEX [rsSync] building index using bulk method
2015-12-04T13:44:17.364+0800 I INDEX [rsSync] build index done. scanned 56 total records. 0 secs
如何删除一个节点:
rs.remove("gewa37.gewara.cn:40001");
除之后,如果退出再次进入gewa37上的mongodb,会发现提示符变为 STARTUP,已经停止应用日志但是不可写入:
STARTUP>
mongodb 复制集主节点切换方法
1。冻结其中的一个从节点,使其不参与到与primary 的内部选举工作
进入客户端,执行(单位:秒)
rs.freeze(30);
2.对原主节点进行降级
进入客户端,执行下面代码 (单位:秒)
rs.stepDown(15);
3.经过冻结和降级之后查看复制集状态
rs.status();
复制集顺利切换
向已有的replica set 添加新成员,新加的成员可以是空的,当然也可以是从其他节点的数据拷贝,
添加新成员时,必须在新的机器上先起来一个mongodb服务,必须指出要加入的replica set 集群的名字基本语法如下(其他是默认的),然后再在replica set的master 库上执行添加操作,
删除原数据,该新成员是空的
cd /opt/mongodb/data
rm -rf *
[root@gewa37 data]# more /etc/mongod.conf
storage:
dbPath: "/opt/mongodb/data"
journal:
enabled: true
directoryPerDB: true
engine: "wiredTiger"
wiredTiger:
engineConfig:
cacheSizeGB: 30
systemLog:
logAppend: true
destination: file
path: "/opt/mongodb/log/mongodb.log"
processManagement:
pidFilePath: "/opt/mongodb/log/mongo.pid"
fork: true
net:
port: 40001
maxIncomingConnections: 5000
security:
keyFile: "/opt/mongodb/mykey"
authorization: "enabled"
replication:
replSetName: "xxxxdb"
oplogSizeMB: 1024
operationProfiling:
slowOpThresholdMs: 200
mode: "slowOp"
启动:
/usr/bin/mongod -f /etc/mongod.conf
新加入节点状态:
rs.add("xxxxx.xxxxx.cn:40001");
rs.status();
"_id" : 7,
"name" : "xxxx.xxxx.cn:40001",
"health" : 1,
"state" : 5,
"stateStr" : "STARTUP2",
"uptime" : 4,
"optime" : Timestamp(0, 0),
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),
"lastHeartbeat" : ISODate("2015-12-04T05:42:10.511Z"),
"lastHeartbeatRecv" : ISODate("2015-12-04T05:42:10.920Z"),
"pingMs" : 17,
"configVersion" : 24
}
],
"stateStr" : "STARTUP2":不是正常的SECONDARY,同步完成后:
"optimeDate" : ISODate("1970-01-01T00:00:00Z"),日期也是最初的日期
"state" : 5,
同步完成后状态:
"_id" : 7,
"name" : "xxxx.xxxx.cn:40001",
"health" : 1,
"state" : 2,
"stateStr" : "SECONDARY",
"uptime" : 2557,
"optime" : Timestamp(1449210279, 2),
"optimeDate" : ISODate("2015-12-04T06:24:39Z"),
"lastHeartbeat" : ISODate("2015-12-04T06:24:42.279Z"),
"lastHeartbeatRecv" : ISODate("2015-12-04T06:24:43.524Z"),
"pingMs" : 6,
"syncingTo" : "xxx39.xxxx.cn:40001",
"configVersion" : 24
日志中:重新同步数据过程:
2015-12-04T13:44:16.327+0800 I INDEX [rsSync] build index done. scanned 61 total records. 0 secs
2015-12-04T13:44:16.524+0800 I INDEX [rsSync] build index on: gewampi.com.gewara.json.mpi.PlayItem_130376373 properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "gewampi.com.gewara.json.mpi.PlayItem_130376373" }
2015-12-04T13:44:16.524+0800 I INDEX [rsSync] building index using bulk method
2015-12-04T13:44:16.591+0800 I INDEX [rsSync] build index done. scanned 42 total records. 0 secs
2015-12-04T13:44:16.814+0800 I INDEX [rsSync] build index on: gewampi.com.gewara.json.mpi.PlayItem_130376567 properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "gewampi.com.gewara.json.mpi.PlayItem_130376567" }
2015-12-04T13:44:16.814+0800 I INDEX [rsSync] building index using bulk method
2015-12-04T13:44:16.855+0800 I INDEX [rsSync] build index done. scanned 69 total records. 0 secs
2015-12-04T13:44:17.064+0800 I INDEX [rsSync] build index on: gewampi.com.gewara.json.mpi.PlayItem_130377470 properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "gewampi.com.gewara.json.mpi.PlayItem_130377470" }
2015-12-04T13:44:17.064+0800 I INDEX [rsSync] building index using bulk method
2015-12-04T13:44:17.107+0800 I INDEX [rsSync] build index done. scanned 40 total records. 0 secs
2015-12-04T13:44:17.314+0800 I INDEX [rsSync] build index on: gewampi.com.gewara.json.mpi.PlayItem_130377634 properties: { v: 1, key: { _id: 1 }, name: "_id_", ns: "gewampi.com.gewara.json.mpi.PlayItem_130377634" }
2015-12-04T13:44:17.314+0800 I INDEX [rsSync] building index using bulk method
2015-12-04T13:44:17.364+0800 I INDEX [rsSync] build index done. scanned 56 total records. 0 secs
如何删除一个节点:
rs.remove("gewa37.gewara.cn:40001");
除之后,如果退出再次进入gewa37上的mongodb,会发现提示符变为 STARTUP,已经停止应用日志但是不可写入:
STARTUP>
mongodb 复制集主节点切换方法
1。冻结其中的一个从节点,使其不参与到与primary 的内部选举工作
进入客户端,执行(单位:秒)
rs.freeze(30);
2.对原主节点进行降级
进入客户端,执行下面代码 (单位:秒)
rs.stepDown(15);
3.经过冻结和降级之后查看复制集状态
rs.status();
复制集顺利切换
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/91975/viewspace-1853420/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/91975/viewspace-1853420/