Mongodb 重建索引时中断
Mongodb interrupted while reindexing
我有一个包含大约 3,000,000 个条目的集合,我需要重新编制索引。当我尝试添加 2d 索引时,这整个事情就开始了。为此,我创建了一个 ssh 隧道,打开 mongo shell 并尝试使用 ensureIndex。我在一个互联网连接有点不可靠的地方,一个小时最终打破了管道。然后我返回隧道,打开 mongo shell 并尝试使用 getIndexes 查看索引的数量;我创建的新索引出现了,但我不确定它是否已经完成,所以我决定使用 reIndex。回想起来,这是愚蠢的。水管又断了。现在,当我打开 shell 并尝试发出 getIndexes 时,shell 没有响应。
那我该怎么办?我需要修复我的数据库吗?当我有一个更可靠的互联网连接时,我可以发布 reIndex 吗?有没有一种方法可以在不保持 shell 打开的情况下发出 reIndex,但又不在后台执行它并且需要花费很长时间? (我会检查 mongod shell 选项,看看我是否能找到任何东西,然后检查 node.js mongo api 这样我就可以尝试 运行 作为服务器上的服务)
此外,如果我最终将 运行 reIndex 作为服务器上的一项服务,有什么方法可以检查它是否正常工作?现在最令人沮丧的部分是我不知道我的数据库是否正常,reIndex 是否仍然是 运行,等等。任何帮助将不胜感激。谢谢
关于连接问题,请尝试使用screen
命令。
它使您能够创建一个 "persistent" 屏幕 - 不是以磁盘持久性的方式,而是以连接丢失的方式。
你没有问题。 Mongo 运行命令,并且只有在您明确终止操作时才会停止它们 (db.killOp())。
您无需等待索引操作完成!
我有一个包含大约 3,000,000 个条目的集合,我需要重新编制索引。当我尝试添加 2d 索引时,这整个事情就开始了。为此,我创建了一个 ssh 隧道,打开 mongo shell 并尝试使用 ensureIndex。我在一个互联网连接有点不可靠的地方,一个小时最终打破了管道。然后我返回隧道,打开 mongo shell 并尝试使用 getIndexes 查看索引的数量;我创建的新索引出现了,但我不确定它是否已经完成,所以我决定使用 reIndex。回想起来,这是愚蠢的。水管又断了。现在,当我打开 shell 并尝试发出 getIndexes 时,shell 没有响应。
那我该怎么办?我需要修复我的数据库吗?当我有一个更可靠的互联网连接时,我可以发布 reIndex 吗?有没有一种方法可以在不保持 shell 打开的情况下发出 reIndex,但又不在后台执行它并且需要花费很长时间? (我会检查 mongod shell 选项,看看我是否能找到任何东西,然后检查 node.js mongo api 这样我就可以尝试 运行 作为服务器上的服务)
此外,如果我最终将 运行 reIndex 作为服务器上的一项服务,有什么方法可以检查它是否正常工作?现在最令人沮丧的部分是我不知道我的数据库是否正常,reIndex 是否仍然是 运行,等等。任何帮助将不胜感激。谢谢
关于连接问题,请尝试使用screen
命令。
它使您能够创建一个 "persistent" 屏幕 - 不是以磁盘持久性的方式,而是以连接丢失的方式。
你没有问题。 Mongo 运行命令,并且只有在您明确终止操作时才会停止它们 (db.killOp())。
您无需等待索引操作完成!