私は Spring spring-boot-starter-batch 2.7.9 を使用し、データ ソースとして mysql DB を使用します。奇妙な問題が発生しています。バッチ ジョブはローカルで実行されますが、開発環境 (kubernetes) では次の例外を除いて開始できません:
リーリージョブは、文字列と日付時刻という 2 つのジョブ パラメーターを提供する REST API を通じてトリガーされます。
パラメータの例:
リーリーローカル データベースと開発データベースの違いの 1 つは、レプリケーション要素である可能性があります。開発データベースは 3 つのレプリカで構成されていますが、ローカルには 1 つしかありません。これがこの例外の原因でしょうか?この問題はどうすれば解決できますか?ティア。
各テーブルに主キーがあるように Spring Batch メタテーブルの定義をカスタマイズする必要があります。
デフォルトでは、MySQL は主キーのないテーブルを受け入れます。ただし、MySQL レプリケーションを使用するセットアップでは、主キーのないテーブルは (グループ レプリケーションの状況のように) まったく機能しないか、後々運用上の問題を引き起こす可能性があります。
根本的な原因は、Spring Batch アーキテクチャの DDL に含まれるインデックスの数が非常に限られていることです。インデックス作成への最適なアプローチは特定のユースケースに大きく依存するため、これは意図的なものです: https://docs.spring.io/spring-batch/docs/4.3.8/reference/html/schema -appendix.html #メタデータテーブルのインデックス作成の推奨事項