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更有用;

如果有更好的方法删除原来的副本集,在新建副本集,请告知,多谢!!!