cle*_*p6r 6 mongodb wiredtiger
我在 4 个节点的副本集上使用 MongoDB 3.4 和 WiredTiger 存储引擎。
我通过删除占用大部分空间的属性缩小了很多文档,但文档说此操作不会减小存储大小(仅减小数据大小),我可以确认这是真的。
所以我尝试使用compact命令:释放了一些空间,但存储大小仍然比数据大小大得多。是因为它只移动文档但不会减少每个文档已经分配的空间吗?
我是否需要删除并重新创建所有文档才能真正减小存储大小?
小智 5
只是为了澄清,请小心repairDatabase在副本集节点上使用。repairDatabase旨在用于抢救可读数据,即在磁盘损坏后,因此它可以删除不可读的数据,并让 MongoDB 在面临磁盘损坏时启动。
如果此节点有未检测到的磁盘损坏并且您repairDatabase在其上运行,这可能会导致该特定节点与其他节点具有不同的数据内容,因为repairDatabase. 由于 MongoDB 假设副本集中的所有节点都包含相同的数据,这可能会导致崩溃和难以诊断的问题。由于其性质,这个问题可能会长期处于休眠状态,并突然以报复的方式表现出来,似乎没有任何明显的原因。
WiredTiger 最终将使用新数据重用空白空间,并且WiredTiger 执行的定期检查点可能会潜在地向操作系统释放空间,而无需您进行任何干预。
如果您确实需要为操作系统提供空间,那么如果您有副本集,则初始同步是最安全的选择。在独立的情况下,转储/恢复将达到相同的结果。否则,compact与repairDatabase. 请在执行任何这些操作之前备份您的数据,因为在我看来这将被视为一项重大维护。
| 归档时间: |
|
| 查看次数: |
8047 次 |
| 最近记录: |