1

我有一个副本集。

而且我的辅助实例上的磁盘空间不足。

磁盘上没有空间可以运行db.repairDatabase()

有没有其他方法可以释放一些磁盘空间?

我刚在想:

  1. 降低二级
  2. 删除所有数据
  3. 运行 db.repairDatabase()if deleting data will allow it
  4. 把它拿回来。

这行得通吗?

更新

值得一提的是,我目前无法通过 SSH 连接到服务器。现在只使用 mongo 客户端。

4

1 回答 1

4

不,那是行不通的——那里必须有一个数据库来运行 db.repairDatabase() 。但是,同样有效的方法是关闭辅助服务器,删除数据库文件,然后将其恢复。这将强制与主数据库重新同步,这实际上与 db.repairDatabase() 执行相同的操作,因为它将从头开始重新创建数据文件。

但是,为了删除数据文件,您需要通过 ssh 连接到实例。如果您无法通过 ssh 登录,那么您会遇到相当严重的问题,这些问题会干扰任何恢复辅助服务器的尝试。

于 2014-05-15T14:42:59.500 回答