在Mongodb问题上运行复制

时间:2012-03-13 13:36:25

标签: mongodb replication

我是mongo的新手,我正在尝试在Mongo网站上的tutorail中给出的代码示例,但我正面临下面的问题。根据教程,它应该相当简单。 但我得到--replSet错误,即使我在创建主机时已经给出了它。我正在使用fedora linux在独立机器上开发。 也可以告诉我如何在分配主机后重置/删除主机。

[root@localhost data]#  mongod --replSet cluster1 --port 27019 --dbpath /data/r2
Tue Mar 13 18:40:40 
Tue Mar 13 18:40:40 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Tue Mar 13 18:40:40 
Tue Mar 13 18:40:40 [initandlisten] MongoDB starting : pid=9849 port=27019 dbpath=/data/r2 32-bit host=localhost.localdomain
Tue Mar 13 18:40:40 [initandlisten] 
Tue Mar 13 18:40:40 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Tue Mar 13 18:40:40 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Tue Mar 13 18:40:40 [initandlisten] **       with --journal, the limit is lower
Tue Mar 13 18:40:40 [initandlisten] 
Tue Mar 13 18:40:40 [initandlisten] db version v2.0.3, pdfile version 4.5
Tue Mar 13 18:40:40 [initandlisten] git version: 05bb8aa793660af8fce7e36b510ad48c27439697
Tue Mar 13 18:40:40 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_41
Tue Mar 13 18:40:40 [initandlisten] options: { dbpath: "/data/r2", port: 27019, replSet: "cluster1" }
Tue Mar 13 18:40:40 [initandlisten] waiting for connections on port 27019
Tue Mar 13 18:40:40 [websvr] admin web console waiting for connections on port 28019
Tue Mar 13 18:40:40 [initandlisten] connection accepted from 127.0.0.1:56898 #1
Tue Mar 13 18:40:40 [rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)
Tue Mar 13 18:40:40 [rsStart] replSet info you may need to run replSetInitiate -- rs.initiate() in the shell -- if that is not already done
Tue Mar 13 18:40:50 [rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)
^CTue Mar 13 18:41:00 [rsStart] replSet can't get local.system.replset config from self or any seed (EMPTYCONFIG)
Tue Mar 13 18:41:00 got kill or ctrl c or hup signal 2 (Interrupt), will terminate after current cmd ends
Tue Mar 13 18:41:00 [interruptThread] now exiting
Tue Mar 13 18:41:00 dbexit: 
Tue Mar 13 18:41:00 [interruptThread] shutdown: going to close listening sockets...
Tue Mar 13 18:41:00 [interruptThread] closing listening socket: 6
Tue Mar 13 18:41:00 [interruptThread] closing listening socket: 8
Tue Mar 13 18:41:00 [interruptThread] closing listening socket: 9
Tue Mar 13 18:41:00 [interruptThread] removing socket file: /tmp/mongodb-27019.sock
Tue Mar 13 18:41:00 [interruptThread] shutdown: going to flush diaglog...
Tue Mar 13 18:41:00 [interruptThread] shutdown: going to close sockets...
Tue Mar 13 18:41:00 [interruptThread] shutdown: waiting for fs preallocator...
Tue Mar 13 18:41:00 [interruptThread] shutdown: closing all files...
Tue Mar 13 18:41:00 [interruptThread] closeAllFiles() finished
Tue Mar 13 18:41:00 [interruptThread] shutdown: removing fs lock...
Tue Mar 13 18:41:00 [conn1] end connection 127.0.0.1:56898
Tue Mar 13 18:41:00 dbexit: really exiting now
[root@localhost data]# mongo myhost:27017
MongoDB shell version: 2.0.3
connecting to: myhost:27017/test
Tue Mar 13 18:41:13 getaddrinfo("myhost") failed: Name or service not known
Tue Mar 13 18:41:13 Error shell/mongo.js:86
exception: connect failed
[root@localhost data]# mongo localhost:27017
MongoDB shell version: 2.0.3
connecting to: localhost:27017/test
> 
> 
> config = {_id: 'cluster1', members: [
...                           {_id: 0, host: 'myhost1:27017'},
...                           {_id: 1, host: 'myhost2:27018'},
...                           {_id: 2, host: 'myhost3:27019'}]
... }
{
    "_id" : "cluster1",
    "members" : [
        {
            "_id" : 0,
            "host" : "myhost1:27017"
        },
        {
            "_id" : 1,
            "host" : "myhost2:27018"
        },
        {
            "_id" : 2,
            "host" : "myhost3:27019"
        }
    ]
}
> rs.initiate(config);
{ "errmsg" : "server is not running with --replSet", "ok" : 0 }
> exit
bye

由于

3 个答案:

答案 0 :(得分:2)

启动mongod时,你必须指定其他主机,参与我们的复制集,例如。启动myhost1时,您必须添加以下参数:

--replSet cluster1/myhost2:27018,myhost3:27019

我注意到的是,/data直接位于根/下,您是否检查了权限?在测试时更好地改变~/temp/something之类的东西以避免陷阱。

答案 1 :(得分:2)

首先,您将收到有关在配置中配置的主机的警告。您确定DNS是否正确,如果没有在/ etc / hosts文件中解析它们

   127.0.0.1     myhost1:27017 
   127.0.0.1     myhost2:27018
   127.0.0.1     myhost3:27019 

另外我认为你已经强制关闭mongod进程,杀死所有进程,这将删除此错误错误shell / mongo.js:86 如果它不起作用。 您可能必须删除此文件数据/ mongodb.lock

答案 2 :(得分:0)

您需要在/ etc / hosts

链接两个主机

服务器“host1”

  • 127.0.0.1 localhost
  • 0.0.0.0 host1
  • 1.1.1.1 host2

服务器“host2”

  • 127.0.0.1 localhost

  • 1.1.1.1 host2

  • 0.0.0.0 host1