如何在中断后在 mongodb 中重新启动/恢复 copydb()



mongodb 在执行 copyDb(( 命令时被中断。当我想重新启动时,我得到:

db.runCommand( { copydb: 1, fromhost: "<ip>", fromdb: "<collection>", todb: "<db>", slaveOk: true } );
{
    "ok" : 0,
    "errmsg" : "failed to create collection "<db>.<collection>": collection already exists"
}

有没有办法在中断后恢复数据库的副本,还是需要删除数据库并从头开始?(不是一个好的选择,因为副本需要 ~10 天并且已经运行了 2 天(。

简短的回答是否定的,没有内置的方法来恢复copydb操作,它基本上要求/假设操作期间两端都有 100% 的可用性。若要重用 copydb 命令,必须删除目标数据库并从头开始复制。

除了自己编写一些东西(这始终是一种选择(,我所知道的唯一一个提供接近简历的工具是 hydra,在这种情况下,该功能仅用于从几乎完整的副本中挑选少量落伍者。

另一个可能的选择是使用MMS Backup(完全披露:我目前在MongoDB工作,它提供MMS Backup作为付费服务(,这将为备份的数据库创建数据的定期快照,包括索引。 然后,这些快照可用于通过简单的下载/传输(而不是依赖复制命令(恢复到其他节点。

最新更新