mongodb副本集删除方法
起因:由于要搭建一个mongodb的测试环境,所以从原来的一台服务器上克隆了一个过来,上面有三个mongodb实例,组成了一个副本集。
副本集的设置也一起copy过来了,所以要删除在重新设置,由于不知道有没有好的方法可以方便移除副本集,用了一个非常笨的方法,如下:
1 首先停调三个实例
/etc/init.d/mongodbmaster stop
/etc/init.d/mongodbslave stop
/etc/init.d/mongodbarbiter stop
2 删除三个实例的数据文件和log
3 把三个实例以单库启动 (这步应该可以省,没试)
配置文件如下:
#master.conf
dbpath=/usr/mongodb/data/master
logpath=/usr/mongodb/log/master.log
pidfilepath=/usr/mongodb/master.pid
directoryperdb=true
logappend=true
#replSet=repmongo117 注释掉了
bind_ip=192.168.1.117
port=37017
oplogSize=1000
fork=true
noprealloc=true
nojournal=true
smallfiles=true
4 以副本集方式启动三个实例
配置如下:
#master.conf
dbpath=/usr/mongodb/data/master
logpath=/usr/mongodb/log/master.log
pidfilepath=/usr/mongodb/master.pid
directoryperdb=true
logappend=true
replSet=repmongo117
bind_ip=192.168.1.117
port=37017
oplogSize=1000
fork=true
noprealloc=true
nojournal=true
smallfiles=true
5 初始化副本集
initset.sh 内容如下:
#!/bin/bash
#mongodb
cd /usr/mongodb/bin
MongoDB='./mongo 192.168.1.117:37017'
$MongoDB <<EOF
use admin
rsconf={
"_id" : "repmongo117",
"members" : [
{
"_id" : 0,
"host" : "192.168.1.117:37017"
}
]
}
rs.initiate(rsconf)
rs.add("192.168.1.117:37018")
rs.add("192.168.1.117:37019")
exit;
EOF
chmod 777 initset.sh
sh initset.sh
即可初始化副本集。
---------------------
方法二
直接修改配置,
cfg = rs.conf()
cfg.members[0].host = "你的IP 或者域名"
rs.reconfig(cfg)
---------------------
对于复杂的副本集配置,rs.reconfig函数修改比rs.add和rs.remove更有用;
如果有更好的方法删除原来的副本集,在新建副本集,请告知,多谢!!!