在MongoDB中进行数据清理和维护主要有以下几种方式:
- 使用删除操作清理不需要的数据记录。
- db.collection.deleteMany()可以批量删除数据。
- 使用除了删除之外的其他方式清理数据。
- 如将不需要的字段值更新为null或空字符串等。
- 这可以防止在MongoDB中产生太多删除后空间。
- 创建TTL索引自动过期清理数据。
- db.collection.createIndex({time: 1}, {expireAfterSeconds: 60})
- 这可以基于字段值过期清理数据,非常 useful。
- 使用文档和资源的垃圾收集器清理不再使用的数据。
- 设置storage.journal.commitInterval和storage.journal.debugFlags来运行垃圾收集器。
- 重构索引来释放未使用的空间并提高查询性能。
- db.collection.reIndex()重构集合所有索引。
- db.collection.dropIndex()删除不需要的索引。
- 使用mongofiles工具删除GridFS存储的大文件。
- 可以指定文件查询条件进行删除,清理未使用文件。
- 使用MapReduce工具统计并清理不符合业务规则的数据。
- 这需要我们编写MapReduce脚本进行自定义清理。
- 在高可用环境下使用滚动发布及黑屏维护时间段执行清理。
- 这可以最大限度减少对业务的影响。
- 定期使用mongodump和mongorestore工具进行数据备份与恢复。
- 在恢复前可以选择只恢复需要的集合与数据,作为一种清理方式。