자바 에서 Flyway 사용 에 대한 자세 한 설명

5961 단어 자바Flyway쓰다
Flyway 사용
환경
왜 Flyway 를 써 요?
개발 자 들 은 합작 할 때 다음 과 같은 장면 을 자주 만난다.
1.개발 자 A 는 자신의 로 컬 데이터 베이스 에서 표 구 조 를 바 꾸 었 고 이 변경 에 따라 DAO 층 의 코드 를 조정 한 다음 에 svn 이나 git 등 버 전 제어 서버 에 코드 를 업로드 했다.이때 개발 자 B 가 A 의 코드 를 변경 하면 프로젝트 를 실행 할 때 오류 가 발생 할 수 있 습 니 다.B 의 로 컬 SQL 데이터 베 이 스 는 수정 되 지 않 았 기 때 문 입 니 다.
2.프로젝트 가 실 행 될 때 서버 에서 끌 어 온 버 전 관리 서버 의 최신 수정 후 SQL 데이터베이스 수정 스 크 립 트 를 동시에 실행 해 야 합 니 다.데이터베이스 스 크 립 트 를 놓 치면 심각 한 문제 가 발생 할 수 있 습 니 다.
전통 적 인 해결 방안 은 고정된 폴 더 에 달 려 야 할 SQL 스 크 립 트 를 넣 는 것 이다.개발 자가 합작 할 때 A 는 데이터 베 이 스 를 수 정 했 고 B 가 문제 가 생 겼 을 때 의사 소통 을 하고 필요 한 스 크 립 트 를 뛰 어야 할 수도 있 습 니 다.프로젝트 가 출시 되 는 과정 에서 운영 자 들 이 정 해진 폴 더 에서 뛰 어야 할 SQL 스 크 립 트 를 찾 았 습 니 다.그것들 을 운행 하 다.
Flyway 등 migration 도 구 는 개발 자 와 운영 자 를 상기 장면 의 번 거 로 운 작업 에서 해방 시 키 는 것 입 니 다.Maven 을 사용 하면 프로젝트 컴 파일(SpringBoot 실행 Application)을 할 때 SQL 데이터 베 이 스 를 변경 하면 자동 으로 데이터 베이스 에 들 어 갑 니 다.시작 에 성공 하면 개발 또는 운영 자 는 SQL 데이터 뱅 크 의 migrate 과정 에 대해 감지 하지 못 합 니 다.프로젝트 는 여전히 평소 대로 운행 할 수 있다.
Flyway 가 뭐 예요?
공식 사이트:https://flywaydb.org/
Flyway 는 간단 한 오픈 소스 데이터베이스 버 전 컨트롤 러(설정 보다 약정)로 주로 migrate,clean,info,vaidate,baseline,repair 등 명령 을 제공 합 니 다.SQL(PL/SQL,T-SQL)방식 과 Java 방식 을 지원 하고 명령 행 클 라 이언 트 등 을 지원 하 며 일련의 플러그 인 지원(Maven,Gradle,SBT,ANT 등)도 제공한다.
Flyway 의 가장 핵심 은 모든 버 전의 진화 와 상 태 를 기록 하 는 MetaData 표 입 니 다.Flyway 가 처음 시작 하면 기본 이름 인 SCHEMA 를 만 듭 니 다.VERSION 의 원소 국 표.표 에 버 전,설명,실행 할 sql 스 크 립 트 등 이 저장 되 어 있 습 니 다.
sql 스 크 립 트 형식:V+버 전 번호+더 블 밑줄()+설명+끝 문자(.sql)
예 를 들 면SpringBoot 2.0.4.RELEASEV1__INIT_DATABASE.sqlMigrate
Migrate 는 데이터 Schema 를 최신 버 전 으로 옮 기 고 Migrate 를 할 때 MetaData 메타 데이터 시트 를 검사 하 며 존재 하지 않 으 면 MetaData 시트 를 만 들 고 MetaData 는 데이터베이스 과거 기록 변경 등 정 보 를 기록 하 는 데 사 용 됩 니 다.
Migrate 는 지정 한 파일 시스템 이나 classpath 의 Migrations 를 검색 합 니 다.MetaData 의 기록 과 비교 하여 버 전 업 그 레이 드 를 진행 합 니 다.
clean
대응 하 는 데이터베이스 Schema 의 모든 대상 을 제거 합 니 다.표 구조,보기,저장 과정 등 을 포함 하여 clean 작업 은 dev 와 test 단계 에서 사용 하기 좋 습 니 다.
info
모든 Migrations 의 상세 함 과 상태 정 보 를 인쇄 하 는 데 사용 되 며,MetaData 와 Migrations 를 통 해 현재 데이터베이스 버 전 을 빠르게 찾 을 수 있 습 니 다.
validate
apply 의 Migrations 가 변경 되 었 는 지 검증 하고 기본적으로 열 렸 습 니 다.원 리 는 MetaData 표 와 로 컬 Migrations 의 checkNum 값 을 비교 하 는 것 입 니 다.값 이 같 으 면 검증 이 통과 되 고 그렇지 않 으 면 실패 합 니 다.
baseline
데이터베이스 Schema 구조 가 이미 존재 하 는 데이터베이스 에 대한 해결 방안비 어 있 는 데이터베이스 에 MetaData 표를 새로 만 들 고 Migrations 를 이 데이터베이스 에 적용 합 니 다.기 존 표 구조의 데이터베이스 에 도 적용 할 수 있 고 Metadata 표 추가 도 가능 합 니 다.
repair
repair 작업 은 metaData 표를 복구 할 수 있 습 니 다.이 작업 은 metadata 에 오류 가 발생 했 을 때 유용 합 니 다.
용도:
1):실패 한 Migration 기록 을 삭제 하고 DDL 이 지원 되 지 않 는 데이터베이스 만 을 대상 으로 합 니 다.
SpringBoot 에서 Flyway 관리 데이터베이스 버 전 사용 하기
1.maven 의존 및 플러그 인 추가

<!-- https://mvnrepository.com/artifact/org.flywaydb/flyway-core -->
<dependency>
	<groupId>org.flywaydb</groupId>
	<artifactId>flyway-core</artifactId>
	<version>5.0.7</version>
</dependency>

<plugin>
 <groupId>org.flywaydb</groupId>
 <artifactId>flyway-maven-plugin</artifactId>
</plugin>
플러그 인 을 추가 하 는 목적 은 위 에서 말 한 명령 을 사용 하기 위 한 것 입 니 다.다음 그림:
在这里插入图片描述
2.Flyway 지원,Flyway 설정

######################FlyWay#######################
#            ,    Schema             。 (   :false)
spring.flyway.baseline-on-migrate=true
#           ,      ,          
#            Schema   。(   :1)
spring.flyway.baseline-version=1
spring.flyway.enabled=true
spring.flyway.sql-migration-prefix=V
spring.flyway.locations=classpath:db/migration
3.resource 디 렉 터 리 에 db/migration 디 렉 터 리 를 만 들 고 sql 스 크 립 트 를 추가 합 니 다.
그림:
在这里插入图片描述
다음은스 크 립 트 입 니 다.

use `spring_boot_building`;

DROP TABLE IF EXISTS `table1`;

CREATE TABLE `table1` (
 `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
 `name` varchar(20) NOT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
4.567914.제 프로젝트 에 연 결 된 데이터베이스 입 니 다.
4.성공 여 부 를 검증 합 니 다.
시작 항목,시작 로그 보기:
在这里插入图片描述
데이터베이스 관리 도 구 를 열 고 데이터베이스 보기:
在这里插入图片描述
5.SQL 파일 버 전 번호 이름 의 규범
회사 마다 규범 이 다 를 것 입 니 다.개발 할 때 프로젝트 내 에서 이 규범 을 따 르 기만 하면 됩 니 다.규범 의 확정 은 잘못 되 지 않 았 습 니 다.sql 파일 의 명명 규범 을 제공 하 는 것 은 여러분 이 참고 하 시기 바 랍 니 다.
在这里插入图片描述
닥 친 문제
제 프로젝트 데이터베이스 연결 탱크 는 Druid 를 사용 하기 때문에 프로젝트 를 시작 할 때 이상 을 발 견 했 습 니 다V1.0.0.20190509.0957__flyway_test.sqlFlyway 가 SQL 스 크 립 트 를 통 해 데이터 베 이 스 를 구축 하고 업데이트 하기 때 문 입 니 다.Druid 와 Flyway 를 동시에 통합 한 후 Druid 의 wall 방화벽 은 SQL 스 크 립 트 작업 에 직접 관여 할 수 있 으 며 이 어 Flyway 실행 이 중단 되 었 습 니 다.
인터넷 튜 토리 얼 은 월 방화벽 설정 을 없 애 는 것 입 니 다.제 가 해 봤 는데 괜 찮 았 습 니 다.하지만 개인 적 으로 이런 방법 이 안전 하지 않 고 다른 방법 이 있 을 것 이 라 고 생각 합 니 다.
참고:
Spring Boot 프로젝트 Flyway 사용 하기
Spring Boot 에 서 는 데이터베이스 버 전 을 Flyway 로 관리 합 니 다.
SpringBoot 프로젝트 통합 Flyway 데이터베이스 버 전 관리
Flyway 상세 설명 및 Springboot 통합 Flyway
자바 의 Flyway 사용 에 대한 자세 한 설명 은 여기까지 입 니 다.자바 Flyway 사용 에 관 한 더 많은 내용 은 이전 글 을 검색 하거나 아래 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

좋은 웹페이지 즐겨찾기