跳到主要内容

应用数据清理

应用数据主要包含:应用信息、应用分组、应用角色、工作表信息、工作表数据等。为了保证数据安全,系统中重要数据的删除操作均为逻辑删除。但随着已删除数据的逐渐增加,除了占用磁盘存储空间,也可能会对数据库性能有一定影响。所以我们提供了应用数据清理服务,根据设定的规则,定时的对已删除状态的数据进行物理删除。

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

    docker pull nocoly/hap-dataclean-app:1.0.0
  2. Docker Swarm 初始化 (已初始化可跳过此步)

    docker swarm init
  3. 任意目录下创建 dataclean.yaml 文件,内容如下:

    version: '3'

    services:
    app:
    image: nocoly/hap-dataclean-app:1.0.0
    volumes:
    - ./appsettings.json:/app/Config/appsettings.json
  4. dataclean.yaml 文件所在目录创建 appsettings.json 配置文件,内容如下:

    {
    "WorksheetConnStr": "mongodb://127.0.0.1:27017/mdworksheet",
    "MD_WSService1": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService2": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService3": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService4": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService5": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService6": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService7": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService8": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService9": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSService10": "mongodb://127.0.0.1:27017/mdwsrows",
    "MD_WSLogService1": "mongodb://127.0.0.1:27017/mdworksheetlog",
    "ApkConnStr": "mongodb://127.0.0.1:27017/mdapps",
    "AppRoleConnStr": "mongodb://127.0.0.1:27017/mdapproles",
    "MD.Worksheet.DbName": "mdworksheet",
    "MD.WorksheetRow.DbName": "mdwsrows",
    "DeleteDay": 60,
    "DeleteRowByNomal": 0,
    "DelateRowDay": 60,
    "DelateRowTotal": 10000,
    "Corn": "0 0 2 * * ? "
    }

    配置说明:

    • mongodb://127.0.0.1:27017 需要替换成实际的 MongoDB 连接地址
    • DeleteDay 删除多少天前的数据
    • DeleteRowByNomal 工作表状态正常时,是否清理是已删除状态的行记录(0:不清理,1:清理)
    • DelateRowDay DeleteRowByNomal=1 时,删除多少天前的行记录数据,DeleteRowByNomal=0 时此配置无效
    • DelateRowTotal DeleteRowByNomal=1 时,工作表行记录总数大于多少才删除,DeleteRowByNomal=0 时此配置无效
    • Corn 定时任务执行 corn 表达式,可参考:https://51tools.info/cron/ ,如:0 0 2 * * ? 的含义是每天2点执行
  5. 启动数据清理服务,dataclean.yaml 所在目录下执行

    docker stack deploy -c dataclean.yaml dataclean

    可通过 docker logs $(docker ps | grep dataclean | awk '{print $1}') 查看定时任务执行日志。

    如果需要删除服务,可执行 docker stack rm dataclean