跳到主要内容

工作流执行历史

为减轻 MongoDB 中 mdworkflow 库的存储空间持续增长压力,你可以选择将工作流执行历史进行归档,存储至新的 MongoDB 实例中。同时归档了的历史执行记录也可以在页面上进行选择查看。

归档任务配置步骤

  1. 提前部署一套 MongoDB 实例,用与存储归档的数据。

  2. 下载镜像(离线包下载

    docker pull nocoly/hap-archivetools:1.0.3
  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执行一次"
  4. 启动归档服务,在 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 目标库名,则可能导致目标表中数据总量比本次归档的多,导致源数据未删除。
    • 回收磁盘空间:归档完成后会删除源库中的对应数据,但已删除数据所占用的磁盘空间不会立即释放,但通常会相同表被复用。

配置归档数据可视化

  1. 创建 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:归档数据的截至日期
  2. 挂载配置文件

    在微服务应用对应的 docker-compose.yaml volumes 中增加:

    - ./volume/workflow/application-www-ext.properties:/usr/local/MDPrivateDeployment/workflow/application-www-ext.properties
  3. 重启微服务