ホームページ  >  に質問  >  本文

Springバッチジョブが開発環境で開始されない

私は Spring spring-boot-starter-batch 2.7.9 を使用し、データ ソースとして mysql DB を使用します。奇妙な問題が発生しています。バッチ ジョブはローカルで実行されますが、開発環境 (kubernetes) では次の例外を除いて開始できません:

リーリー

ジョブは、文字列と日付時刻という 2 つのジョブ パラメーターを提供する REST API を通じてトリガーされます。

パラメータの例:

リーリー

ローカル データベースと開発データベースの違いの 1 つは、レプリケーション要素である可能性があります。開発データベースは 3 つのレプリカで構成されていますが、ローカルには 1 つしかありません。これがこの例外の原因でしょうか?この問題はどうすれば解決できますか?ティア。

P粉517814372P粉517814372410日前541

全員に返信(1)返信します

  • P粉166675898

    P粉1666758982023-09-07 00:26:00

    各テーブルに主キーがあるように Spring Batch メタテーブルの定義をカスタマイズする必要があります。

    デフォルトでは、MySQL は主キーのないテーブルを受け入れます。ただし、MySQL レプリケーションを使用するセットアップでは、主キーのないテーブルは (グループ レプリケーションの状況のように) まったく機能しないか、後々運用上の問題を引き起こす可能性があります。

    根本的な原因は、Spring Batch アーキテクチャの DDL に含まれるインデックスの数が非常に限られていることです。インデックス作成への最適なアプローチは特定のユースケースに大きく依存するため、これは意図的なものです: https://docs.spring.io/spring-batch/docs/4.3.8/reference/html/schema -appendix.html #メタデータテーブルのインデックス作成の推奨事項

    返事
    0
  • キャンセル返事