我正在尝试从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的人的见解或帮助都会有所帮助,即使您认为自己只是在告诉我一些微不足道的事情。
答案 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
要启动系统,只需运行" 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网址