メインコンテンツへ移動

ワークフロー実行履歴のアーカイブ

mdworkflowデータベース内のワークフロー実行履歴によるMongoDBのストレージ消費増加を緩和するため、実行履歴をアーカイブし、新しいMongoDBインスタンスに保存できます。アーカイブされた実行記録は、ページ上で閲覧することも可能です。


アーカイブ設定手順​

  1. アーカイブ先となるMongoDBインスタンスを事前に構築する
  2. イメージをダウンロードする(オフラインパッケージ ダウンロード)
    docker pull nocoly/archivetools:1.0.7
  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,
    "concurrencyLimit": 100
    },
    {
    "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,
    "concurrencyLimit": 100
    },
    {
    "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,
    "concurrencyLimit": 100
    },
    {
    "id": "4",
    "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_instanceExtends",
    "delete": true,
    "batchSize": 500,
    "retentionDays": 0,
    "concurrencyLimit": 100
    }
    ]
    • 上記のファイルフォーマットに従い、必要に応じてテーブルごとに設定内容を調整・追加してください。
    • 設定ファイル内で指定する時刻は全て協定世界時(UTC)です。
    • 例:
      • UTC: 2023-05-31 16:00:00 → UTC+8(中国標準時): 2023-06-01 00:00:00 (8時間加算)
      • UTC: 2023-06-30 16:00:00 → UTC+8: 2023-07-01 00:00:00

パラメータ説明:

"id": "タスクの識別ID",
"text": "説明文",
"start": "アーカイブ対象データの開始日時(UTC)。retentionDaysが0より大きい場合は本設定は無効になります。この日時以上のデータをアーカイブ。",
"end": "アーカイブ対象データの終了日時(UTC)。retentionDaysが0より大きい場合は本設定は無効になります。この日時未満のデータをアーカイブ。",
"src": "元データベースの接続アドレス",
"archive": "アーカイブ先のデータベース接続アドレス(未設定の場合はアーカイブ実施せず、削除のみルールに従い実行)",
"table": "データテーブル名",
"delete": "true固定。アーカイブ完了後、記録件数確認が一致すれば元DBデータを削除。",
"batchSize": "一括でのデータ移動/削除件数",
"retentionDays": "デフォルトは0。0より大きな場合は、指定日数以前のデータを削除(定期削除モード有効化)、start/end日付は自動無効化。24時間ごとに定期実行。",
"concurrencyLimit": "並列処理の上限。通常100で十分。"
  1. 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/archivetools:1.0.7

その他:

  • リソース使用量について
    プログラム実行中は、元データベース・アーカイブ先データベース・実行環境機器に一定のリソース負荷がかかります。事業の閑散期に実行を推奨します。
  • ログの参照方法
    • バックグラウンド(デフォルト): docker ps -aでコンテナIDを特定後、docker logs コンテナIDでログ参照
    • フォアグラウンド: -dパラメータ削除で、リアルタイムで進捗表示
  • config.json例では、新DB名に「元DB名_archive_日付」形式を利用しています。実行ごとにarchiveのDB名を変更してください。
  • アーカイブ完了後、ターゲットテーブル件数を確認し件数が一致しない場合は削除処理が行われません。2回目以降DB名を変更しない場合、ターゲット側に既存データが残るため削除が未実施になる可能性があります。
  • ディスクスペースの回収: アーカイブ後は元データベースの該当データが削除されますが、消去済みデータのディスクスペースはすぐには解放されず、同一テーブルで再利用されます。

アーカイブ済データの可視化設定​

  1. application-www-ext.properties 設定ファイルを作成 例:/data/hap/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:アーカイブDBの接続アドレス
  • start:アーカイブデータの開始日
  • end:アーカイブデータの終了日
  1. 設定ファイルのマウント

docker-compose.yamlのmicroservice側volumes設定に以下を追加してください。

- ./volume/workflow/application-www-ext.properties:/usr/local/MDPrivateDeployment/workflow/application-www-ext.properties
  1. microserviceを再起動