mongo_connector.py经常需要多长时间?

时间:2013-05-22 08:55:39

标签: mongodb solr pymongo

我正在尝试从MongoDB更新Solr索引。问题是它似乎需要永远运行,我无法确定它是否超时。我可以一次离开它长达6个小时,看不到任何事情发生。我开始怀疑我做错了什么。数据大约是2Gb。所以我想知道是否有人在类似或更大量的数据上使用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的人的见解或帮助都会有所帮助,即使您认为自己只是在告诉我一些微不足道的事情。

1 个答案:

答案 0 :(得分: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连接器选项

要启动系统,只需运行" python mongo_connector.py"。但是,您可能需要指定一些命令行选项以使用您的设置。它们如下所述:

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

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

-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',不建议用于生产用途。如果在分片环境中使用此密码和其中一个密码选项,则必须在群集中每个分片的管理数据库中存在用户名/密码。否则,身份验证将失败。

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

其他信息

由于连接器进行实时同步,因此必须让MongoDB运行副本集设置。我会假设是这种情况,你只需要一个文档管理员,就像它说的那样。

有关详细信息,请参阅this网址