工作流执行历史
为减轻 MongoDB 中 mdworkflow
库的存储空间持续增长压力,你可以选择将工作流执行历史进行归档,存储至新的 MongoDB 实例中。同时归档了的历史执行记录也可以在页面上进行选择查看。
归档任务配置步骤
-
提前部署一套 MongoDB 实例,用与存储归档的数据。
- 我们提供了一个 单节点 MongoDB 部署文档 供参考。
-
下载镜像(离线包下载)
docker pull nocoly/hap-archivetools:1.0.3
-
创建
config.json
配置文件,示例内容如下:[
{
"id": "1",
"text": "描述",
"start": "2022-12-31 16:00:00",
"end": "2023-12-31 16:00:00",
"src": "mongodb://root:password@192.168.1.20:27017/mdworkflow?authSource=admin",
"archive": "mongodb://root:password@192.168.1.30:27017/mdworkflow_archive_2023?authSource=admin",
"table": "wf_instance",
"delete": true,
"batchSize": 500,
"retentionDays": 0
},
{
"id": "2",
"text": "描述",
"start": "2022-12-31 16:00:00",
"end": "2023-12-31 16:00:00",
"src": "mongodb://root:password@192.168.1.20:27017/mdworkflow?authSource=admin",
"archive": "mongodb://root:password@192.168.1.30:27017/mdworkflow_archive_2023?authSource=admin",
"table": "wf_subInstanceActivity",
"delete": true,
"batchSize": 500,
"retentionDays": 0
},
{
"id": "3",
"text": "描述",
"start": "2022-12-31 16:00:00",
"end": "2023-12-31 16:00:00",
"src": "mongodb://root:password@192.168.1.20:27017/mdworkflow?authSource=admin",
"archive": "mongodb://root:password@192.168.1.30:27017/mdworkflow_archive_2023?authSource=admin",
"table": "wf_subInstanceCallback",
"delete": true,
"batchSize": 500,
"retentionDays": 0
}
]- 根据上述配置文件格式,调整配置内容
参数说明:
"id": "任务标识ID",
"text": "描述",
"start": "指定归档的数据起始时间,UTC 时区(retentionDays值大于0则此配置自动失效)",
"end": "指定归档的数据结束时间,UTC 时区(retentionDays值大于0则此配置自动失效)",
"src": "来源库连接地址",
"archive": "目标库连接地址(如果值 为空,则不归档只按照设定的规则进行删除)",
"table": "数据表",
"delete": "固定为true,在当次归档任务完成后,并且校验记录数量正确时清理来源库已归档数据",
"batchSize": "单次批量插入以及批量删除条数",
"retentionDays": "默认值为0。大于0时代表删除多少天前的数据,并开启定时删除任务模式,start与end指定的日期自动失效,默认每24h执行一次" -
启动归档服务,在
config.json
文件所在目录下执行docker run -d -it -v $(pwd)/config.json:/usr/local/MDArchiveTools/config.json -v /usr/share/zoneinfo/Etc/GMT-8:/etc/localtime nocoly/hap-archivetools:1.0.3
其他事项:
-
资源占用: 程序运行期间,会对来源库、目标库及程序所在机器产生一定的资源占用压力,建议在业务空闲期间执行。
-
日志查看:
-
后台运行(默认): 使用
docker ps -a
找到容器ID,然后执行docker logs 容器ID
查看日志。 -
前台运行: 去掉
-d
参数,日志会实时输出到终端,方便观察进度。
-
-
在 config.json 配置文件示例中,以
源库名_archive_日期
格式给新库命名。每次执行时,请修改 archive 目标库名。- 因为程序在归档完成后会先统计目标表的数据量,如果不相等则不会进行删除。如果第二次运行时未修改 archive 目标库名,则可能导致目标表中数据总量比本次归档的多,导致源数据未删除。
-
回收磁盘空间:归档完成后会删除源库中的对应数据,但已删除数据所占用的磁盘空间不会立即释放,但通常会相同表被复用。
-
配置归档数据可视化
-
创建
application-www-ext.properties
配置文件如:
/data/mingdao/script/volume/workflow/application-www-ext.properties
spring.data.mongodb.archive.group[0].id=0
spring.data.mongodb.archive.group[0].text=\u5f52\u6863-2023
spring.data.mongodb.archive.group[0].uri=mongodb://root:password@192.168.1.30:27017/mdworkflow_archive_2023?authSource=admin
spring.data.mongodb.archive.group[0].start=2023-01-01
spring.data.mongodb.archive.group[0].end=2023-12-31参数说明:
- group[0]:默认0,如果有多个归档数据则递增
- id:默认0,如果有多个归档数据则递增
- text:展示在页面上的名称,如有中文需要 Unicode 编码
- uri:归档数据库的连接地址
- start:归档数据的起始日期
- end:归档数据的截至日期
-
挂载配置文件
- 单机模式
- 集群模式
在微服务应用对应的
docker-compose.yaml
volumes
中增加:- ./volume/workflow/application-www-ext.properties:/usr/local/MDPrivateDeployment/workflow/application-www-ext.properties
参考集群挂载配置文件的方法将创建好的配置文件挂载至微服务容器内
/usr/local/MDPrivateDeployment/workflow/application-www-ext.properties
路径 -
重启微服务