mongodb副本集无法启动的解决方案

       在《MongoDB权威指南》第172页建立副本集这一部分,跟着书上建立一个包含3个成员的副本集,但是不管我操作多少遍就无法启动副本集,刚开始我用的是和书中一样的版本mongodb-2.4.0,linux版本为centos7;前面一路跟着例子走,都正常,就在副本集这里不行;后来我以为是版本的问题,又更换了mongodb-2.6.3版本、mongodb-3.6.1版本也都不行。2.x和3.x的错误其实是一样的,只不过2.x默认的三个副本集端口分别为31000、31001、31002;3.x默认的三个副本集端口分别为20000、20001、20002.刚开始在网上搜索这个错误,都说是什么权限不够,我是用root帐户启动的,所以这个原因不成立。报这个错:

Failed to connect to 127.0.0.1:20000, in(checking socket for error after poll), reason: Connection refused
d20000| Unable to start program mongod: No such file or directory

Could not start mongo program at 20000, process ended

Error: Failed to start node 0 :

详细日志信息:

>replicaSet.startSet() //启动副本集命令
        ReplSetTest starting set
        ReplSetTest n is : 0
        {
        "useHostName" : true,
        "oplogSize" : 40,
        "keyFile" : undefined,
        "port" : 20000,
        "noprealloc" : "",
        "smallfiles" : "",
        "replSet" : "__unknown_name__",
        "dbpath" : "$set-$node",
        "restart" : undefined,
        "pathOpts" : {
        "node" : 0,
        "set" : "__unknown_name__"
        },
        "setParameter" : {
        "writePeriodicNoops" : false,
        "numInitialSyncAttempts" : 1,
        "numInitialSyncConnectAttempts" : 60
        }
        }
        ReplSetTest Starting....
        Resetting db path '/data/db/__unknown_name__-0'
        
2018-01-05T12:38:03.322+0800 I -        [thread1] shell: started program (sh3358):  mongod --oplogSize 40 --port 20000 --noprealloc --smallfiles --replSet __unknown_name__ --dbpath /data/db/__unknown_name__-0 --setParameter writePeriodicNoops=false --setParameter numInitialSyncAttempts=1 --setParameter numInitialSyncConnectAttempts=60 --bind_ip 0.0.0.0 --setParameter enableTestCommands=1 --setParameter disableLogicalSessionCacheRefresh=true --setParameter orphanCleanupDelaySecs=1 --setParameter logComponentVerbosity={"tracking":0,"replication":{"heartbeats":2,"rollback":2}}

//一下是错误详细信息
2018-01-05T12:38:03.324+0800 W NETWORK  [thread1] Failed to connect to 127.0.0.1:20000, in(checking socket for error after poll), reason: Connection refused
d20000| Unable to start program mongod: No such file or directory
        
2018-01-05T12:38:03.525+0800 W NETWORK  [thread1] Failed to connect to 127.0.0.1:20000, in(checking socket for error after poll), reason: Connection refused
Could not start mongo program at 20000, process ended
       
2018-01-05T12:38:03.525+0800 E QUERY    [thread1] Error: Failed to start node 0 :
        ReplSetTest/this.start@src/mongo/shell/replsettest.js:1786:1
        ReplSetTest/this.startSet@src/mongo/shell/replsettest.js:500:24
@(shell):1:1

          错误原因:在第172页一开始建立副本集的时候,书上开局就说使用--nodb选项启动一个mongo shell,这样就可以启动shell但是不连接到任何mongod:#./mongo --nodb  ; 紧接着就开始创建副本集>replicaSet = new ReplSetTest({"nodes" : 3})  ;你看从头到尾都没说让你先启动mongod服务,所以你可别先用#./mongod --dbpath /data/db --smallfiles启动一个mongod服务。我就是一开始就启动mongod,然后再去创建副本集,结果副本集启动不了。

          解决办法:别启动mongod服务,一开始就直接打开mongo的javascript shell直接创建副本集并运行副本集就OK了。如果你已经启动了请把进程都kill掉,重新来一遍吧。那怎样判别你有没有启动mongod服务呢,#ps -ef|grep mongo  或者查看28017端口是否有在使用;另外使用官网tgz包解压安装的,没有配置文件,得自己定义一个(如果需要的话);通过yum源安装的才有

          注意:我后来用这种方式又试了一次,结果又不行了,还是报那个错;不知道我生效的那次是怎么弄的,这是不是mongodb的bug呀,希望大神帮忙解答一下

相关文章
相关标签/搜索