MongoDB 1.8中的mongod--repair仍然是一个阻塞任务吗?
我有一个5GB的数据库,我想压缩和修复。不幸的是,我有一个活动的应用程序在该数据库上运行 我想知道使用MongoDB 1.8运行MongoDB 1.8中的mongod--repair仍然是一个阻塞任务吗?,mongodb,database,Mongodb,Database,我有一个5GB的数据库,我想压缩和修复。不幸的是,我有一个活动的应用程序在该数据库上运行 我想知道使用MongoDB 1.8运行mongod--repair任务是否会阻止数据库上的所有其他写入操作 我不想在几个小时内关闭整个应用程序…您可以查看--journal key。它为最后的操作保留二进制日志,恢复所需的时间可能比修复所需的时间少得多 是,repairDatabase是一种阻塞操作,这意味着您需要在计划维护期间执行此操作 或者,如果您使用的是副本集,则可以通过从副本集中取出一个成员,对其进
mongod--repair
任务是否会阻止数据库上的所有其他写入操作
我不想在几个小时内关闭整个应用程序…您可以查看--journal key。它为最后的操作保留二进制日志,恢复所需的时间可能比修复所需的时间少得多
是,
repairDatabase
是一种阻塞操作,这意味着您需要在计划维护期间执行此操作
或者,如果您使用的是副本集,则可以通过从副本集中取出一个成员,对其进行修复,将其重新添加到副本集中,然后重复,直到所有成员都修复完毕,从而在不停机的情况下进行修复。有关更多信息和注意事项,请参阅。如果您不想保留额外的副本集,也不想在Amazon AWS上进行良好的备份,也可以使用它。它允许从工作的mongo执行EBS快照而不受任何影响。我还应该注意,您可以在mongo shell中使用
db.repairDatabase()
执行修复,而不仅仅是使用--repair
命令行标志。然而,这仍然是一个阻塞操作,只是调用它的另一种方式。