ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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

    댓글

Designed by Tistory.