请问集群部署版本如何定期清理无效数据,随着日常使用,数据库服务器的磁盘占用越来越大,接近 2T,如何定期瘦身呢,总数据量就那么点没有明显增加,但是数据库服务器磁盘占用却越来越高
请
登录后发表观点
冷石然(Team) 2024-04-19 23:01:58一般来说可以清理行记录日志。
https://docs-pd.mingdao.com/deployment/mongodb/command
用这个命令在 mongobd 里查下 mdworksheetlog 库里表的大小,删除比较久以前的日志即可
直接用 db.表名。drop() 就可以把空间清出来了
我去试试,多谢冷老师
一般来说可以清理行记录日志。
https://docs-pd.mingdao.com/deployment/mongodb/command
用这个命令在 mongobd 里查下 mdworksheetlog 库里表的大小,删除比较久以前的日志即可
直接用 db.表名。drop() 就可以把空间清出来了
这个单机版本的清理是否同样适用于集群部署呢
操作清理数据命令前务必提前备份数据!
清理后页面上对应时间段的工作流执行历史记录将没有!
清理时,数据量比较大,可能会比较耗时,建议请在业务空闲时进行操作!
一、清理 code_catch、hooks_catch、webhooks_catch
use mdworkflow
db.getCollection("code_catch").remove({});
db.getCollection("hooks_catch").remove({});
db.getCollection("webhooks_catch").remove({});
二、清理 wf_instance、wf_subInstanceActivity、wf_subInstanceCallback、app_multiple_catch、custom_apipackageapi_catch
清理前先额外对 app_multiple_catch 集合添加索引,已添加过可忽略
db.getCollection("app_multiple_catch").createIndex({ "instanceId": 1 }, {background: true}))
清理命令参考:
如 清理 2022-09-30 的数据
use mdworkflow
db.getCollection("wf_instance").find({ "completeDate": { $lte: ISODate("2022-09-30T16:00:00.000Z"), $gt: ISODate("2022-09-29T16:00:00.000Z") } }).forEach(
function(ref){
db.getCollection("wf_instance").remove({"_id" :ref._id});
db.getCollection("wf_subInstanceActivity").remove({"instanceId" :ref._id.valueOf()});
db.getCollection("wf_subInstanceCallback").remove({"_id" :ref._id});
db.getCollection("app_multiple_catch").remove({"instanceId" :ref._id.valueOf()});
db.getCollection("custom_apipackageapi_catch").remove({"instanceId" :ref._id.valueOf()});
}
);
如 清理 2022-09-10 至 2022-09-20 的数据
use mdworkflow
db.getCollection("wf_instance").find({ "completeDate": { $lte: ISODate("2022-09-20T16:00:00.000Z"), $gt: ISODate("2022-09-09T16:00:00.000Z") } }).forEach(
function(ref){
db.getCollection("wf_instance").remove({"_id" :ref._id});
db.getCollection("wf_subInstanceActivity").remove({"instanceId" :ref._id.valueOf()});
db.getCollection("wf_subInstanceCallback").remove({"_id" :ref._id});
db.getCollection("app_multiple_catch").remove({"instanceId" :ref._id.valueOf()});
db.getCollection("custom_apipackageapi_catch").remove({"instanceId" :ref._id.valueOf()});
}
);
如 清理 2022-09-10 及以前的所有数据
use mdworkflow
db.getCollection("wf_instance").find({ "completeDate": { $lte: ISODate("2022-09-10T16:00:00.000Z") } }).forEach(
function(ref){
db.getCollection("wf_instance").remove({"_id" :ref._id});
db.getCollection("wf_subInstanceActivity").remove({"instanceId" :ref._id.valueOf()});
db.getCollection("wf_subInstanceCallback").remove({"_id" :ref._id});
db.getCollection("app_multiple_catch").remove({"instanceId" :ref._id.valueOf()});
db.getCollection("custom_apipackageapi_catch").remove({"instanceId" :ref._id.valueOf()});
}
);
比如各种日志,修改记录这些,工作流历史什么的