2013-05-22 133 views
1

我想从MongoDB更新Solr索引。问题在于它似乎需要永久运行,我无法确定它是否超时。我可以一次保留6小时,但没有看到任何事情发生。我开始怀疑我做错了什么。数据约为2Gb。所以我想知道如果任何人在类似的或更大量的数据上使用mongo_connector.py都有类似的经验,那么正确方向上的任何一点都会很棒。mongo_connector.py通常需要多长时间?

我试过的服务器是Ubuntu 12.04。

我使用调用mongo_connector.py该生产线是:

python /usr/local/lib/python2.7/dist-packages/mongo-connector/mongo_connector.py --oplog-ts /var/log/oplog.log -m 127.0.0.1:27017 -t http://localhost:8080/solr4 

输出如下:

2012-08-19 19:24:57,950 - INFO - Beginning Mongo Connector 
2012-08-19 19:24:57,951 - INFO - No doc manager specified, using simulator. 
2012-08-19 19:24:58,956 - INFO - OplogManager: Initializing oplog thread 
2012-08-19 19:24:58,958 - INFO - MongoConnector: Starting connection thread Connection('127.0.0.1', 27017) 

任何见解或从别人谁mongo_connector.py成功使用帮助即使你认为你只是告诉我一些小事,也会有所帮助。

回答

3

你需要指定一个文档管理器,它还没有做任何事情。看起来连接正在工作,所以你应该看看下面的附加选项,以便特别注意-d--docManager,因为这是输出所说的从当前配置中丢失的。这可能会实现(我已经去除了反斜杠,只是表示这在多行为了方便)

python mongo_connector.py 
    --oplog-ts /var/log/oplog.log 
    -m 127.0.0.1:27017 
    -d /doc_managers/solr_doc_manager.py 
    -t http://localhost:8080/solr4 

蒙戈连接器选项

启动系统,只需运行“蟒蛇mongo_connector.py”。但是,您可能需要指定一些命令行选项才能使用您的设置。它们描述如下:

-m--mongos是指定主机地址,它是主机:端口对。对于分片群集,这应该是mongos地址。对于单个副本集,提供主要地址。例如,-m localhost:27217将是-m的有效参数。不要在地址周围使用引号。

-t--target-url是指定要使用的目标系统的URL。例如,如果您开箱即用Solr,则可以使用SolrDocManager的-t http://localhost:8080/solr来建立正确的连接。不要在地址附近使用引号。如果目标系统不需要URL,则不要指定。

-o--oplog-ts用于指定存储oplog进度时间戳的文件的名称。系统使用此文件来存储在特定oplog上读取的上次时间戳。这允许从故障中快速恢复。默认情况下,这是config.txt,它从空白处开始。一个空文件导致系统遍历所有mongo oplog并同步所有文档。每当集群重新启动时,oplog-timestamp配置文件必须清空 - 否则连接器将错过一些文档并且行为不正确。

-n--namespace-set用于指定我们想要考虑的名称空间。例如,如果我们希望存储来自test.test和alpha.foo命名空间的所有文档,我们可以使用-n test.test,alpha.foo。缺省情况是考虑所有命名空间,不包括系统和配置数据库,也忽略任何数据库中的“system.indexes”集合。

-u--unique-key用于指定将用作目标系统的唯一键的mongoDB字段。缺省值是“_id”,可以用“-u _id”来注明

-f是指定一个包含认证密码的文件。这个文件被mongos用来验证与分片的连接,我们将在oplog线程中使用它。此选项的主要用途是指定密码,而不在命令行中将其作为明文输入。

-p是指定用于认证的密码。如果此选项与-f一起指定,则无论密码文件的内容如何,​​都将使用此处指定的密码。对于分片群集,管理员用户名/密码必须存在于每个分片的管理数据库中,否则系统将无法进行身份验证。这是因为连接器如何对碎片进行验证,这在下面的“系统内部”部分有详细描述。

-a--admin-username用于指定要认证的管理员用户的用户名。要使用系统认证,用户必须指定此选项和密码或密码文件选项,该选项存储用户的密码。默认的用户名是'__system',不建议用于生产。如果在分片环境中使用此密码选项和其中一个密码选项,则必须在群集中每个分片的admin数据库中存在用户名/密码。否则,认证将失败。

-d--docManager用于指定将要使用的文档管理器文件。你应该发送你想要使用的文件的路径。默认情况下,它将使用doc_manager_simulator.py文件。建议将所有文档管理器文件保存在mongo-connector中的doc_managers文件夹中。有关制作自己的文档管理器的更多信息,请参阅文档管理器部分。

附加信息

由于连接器做实时同步,就必须有运行的MongoDB副本集的设置。我会假设情况是这样的,你只需要一个文档管理器就可以了。

请参阅this url的详细信息

+0

感谢您的解释。这样可行。但是,现在我得到了下一个错误:“2012-08-20 03:46:02,981 - 错误 - [原因:/ solr4/update /]”...目前正试图弄清楚。 – markashworth

+0

我可以设置一个副本集,但只有一个主节点(没有副本,换句话说,只有一个副本集的副本集)?使用mongo连接器有意义吗? –