mysql DB를 데이터 소스로 사용하는 spring spring-boot-starter-batch 2.7.9를 사용하고 있습니다. 이상한 문제가 있습니다. 일괄 작업이 내 로컬에서 실행되지만 다음 예외를 제외하고 개발 환경(kubernetes)에서 시작되지 않습니다.
으아악작업은 문자열과 날짜/시간이라는 두 가지 작업 매개변수를 제공하는 나머지 API를 통해 트리거됩니다.
예제 매개변수:
으아악내 로컬 데이터베이스와 개발 데이터베이스의 한 가지 차이점은 복제 요소일 수 있습니다. 개발 데이터베이스는 3개의 복제본으로 구성되어 있지만 로컬에서는 하나만 있습니다. 이것이 이 예외의 원인이 될 수 있습니까? 이 문제를 어떻게 해결할 수 있나요? 티아.
각 테이블이 기본 키를 갖도록 Spring Batch 메타테이블의 정의를 사용자 정의해야 합니다.
기본적으로 MySQL은 기본 키가 없는 테이블을 허용합니다. 그러나 MySQL 복제를 사용하는 모든 설정에서 기본 키가 없는 테이블은 그룹 복제 상황에서와 같이 전혀 작동하지 않거나 나중에 운영상 문제를 일으킬 수 있습니다.
근본적인 이유는 Spring Batch 아키텍처의 DDL에 매우 제한된 수의 인덱스가 포함되어 있기 때문입니다. 인덱싱에 대한 최선의 접근 방식은 특정 사용 사례에 크게 좌우되므로 이는 의도적인 것입니다. https://docs.spring.io/spring-batch/docs/4.3.8/reference/html/schema-appendix .html#recommendationsForIndexingMetaDataTables