1

我正在尝试从 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 的人的见解或帮助都会有所帮助,即使您认为您只是在告诉我一些琐碎的事情。

4

1 回答 1

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。例如,如果您使用的是开箱即​​用-t http://localhost:8080/solr的 Solr,您可以使用 SolrDocManager 来建立正确的连接。不要在地址周围使用引号。如果目标系统不需要 URL,则不要指定。

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

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

-uor--unique-key用于指定将作为目标系统唯一键的 mongoDB 字段。默认为“_id”,可通过“-u _id”记下

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

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

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

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

附加信息

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

有关更多信息,请参阅网址

于 2013-05-22T15:33:39.190 回答