-
MySQL 환경 - Spring Batch🌱 spring/🚛 spring batch 2022. 12. 16. 00:47
📍 MySQL 환경에서 Spring Batch 실행
실제로 Spring Batch 는 어플리케이션 코드만 작성하면 되는 것이 아니다!!
- 메타 데이터 테이블 들이 필요하다
메타 데이터
데이터를 설명하는 데이터
- 데이터에 관한 구조화된 데이터로, 다른 데이터를 설명해 주는 데이터
Spring Batch의 메타데이터
- 이전에 실행한 Job이 어떤 것들이 있는지
- 최근 실패한 Batch Parameter에는 어떤 것들이 있는지
- 최근 성공한 Job은 어떤 것들이 있는지
- 다시 실행하면 어디서 부터 시작하면 될지
- 어떤 Job에 어떤 Step들이 있는지
- Step들 중 성공한 Stpe과 실패한 Step들은 어떤 것들이 있는지
- 등등
Batch 어플리케이션을 운영하기 위한 메타데이터가 여러 테이블에 나눠져 있다.
메타 데이터의 구조
출처 : https://docs.spring.io/spring-batch/docs/3.0.x/reference/html/metaDataSchema.html 이 테이블들이 있어야만 Spring Batch 가 정상적으로 작동한다.
H2 DB를 사용할 경우 기본적으로 해당 테이블들을 Boot가 실행될 때 자동으로 생성해주지만,
MySQL 이나 Oracle 같은 DB는 개발자가 직접 생성해주어야 한다.
Spring Batch에 이미 테이블들의 스키마가 존재한다.
- 따라서, 이를 복사해 create 해주면 된다.
IDE에서 파일 검색을 통해 schema- 를 검색
→ 메타 테이블들의 스키마가 DBMS에 맞춰 존재한다.
MySQL에 연결하기
application.yml
spring: profiles: active: local --- spring: profiles: local datasource: hikari: jdbc-url: jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE username: sa password: driver-class-name: org.h2.Driver --- spring: profiles: mysql jpa: database: mysql show-sql: true open-in-view: false hibernate: ddl-auto: create properties: hibernate.dialect: org.hibernate.dialect.MySQL5Dialect datasource: hikari: jdbc-url: jdbc:mysql://localhost:3306/spring_batch username: ${name} password: ${pwd} driver-class-name: com.mysql.cj.jdbc.Driver
MySQL 환경으로 실행
기본 생성된 실행 환경을 복사 후 → Active profiles 를 mysql로 변경
새롭게 생성된 환경으로 실행
- 프로젝트의 profile이 mysql로 실행
메타 테이블 데이터인 BATCH_JOB_INSTANCE가 존재하지 않는다는 에러가 발생
메타 데이터 테이블을 생성하자
schema-mysql.sql 파일 검색
해당 파일에 있는 스키마를 모두 복사하여 자신의 MySQL 환경에서 실행
⇒ 생성 완료❗
다시 실행
에러 없이 정상적으로 배치가 실행된다.
참고자료
https://jojoldu.tistory.com/326
https://velog.io/@ililil9482/Spring-Batch-Mysql-연동과-Meta-Table의-개념
https://docs.spring.io/spring-batch/docs/3.0.x/reference/html/metaDataSchema.html
'🌱 spring > 🚛 spring batch' 카테고리의 다른 글
Spring Batch - Chunk 지향 처리 (1) 2022.12.16 Spring Batch - Scope (0) 2022.12.16 Spring Batch - Job Flow (0) 2022.12.16 메타데이터 테이블 (0) 2022.12.16 Spring Batch (0) 2022.12.16