이동 경로 관리 데이터베이스 버전

스타 GitHub의 수보고에서 이동 경로 및 Liquibase 흔히 볼 사용의 용이성에서, 자바 프로젝트 DB 마이그레이션 도구에 사용되는, 이동 경로 쉽게 Liquibase보다 더 인기있는 이동 경로.


============================== 
이동 경로 명령 줄 도구와 Maven 플러그인
============= =================
SpringBoot 프로젝트 개발, 사실, 다른 이동 경로 작업에. 자동으로 마이그레이션 DB 실행됩니다 작업을 시작 SpringBoot, 특별한 설치 이동 경로 명령 줄 도구와 Maven 플러그인을 필요로하지 않습니다 명령 행 도구 또는 받는다는 플러그인을 사용합니다.

이동 경로는 명령 줄 도구를 제공하며, 일반적으로 사용되는 명령은 다음과 같습니다 :
청소 : 사용자, 테이블, 뷰를 포함하여 생성 된 모든 데이터베이스 오브젝트를 제거, 그래서 생산 라이브러리에 청소 작업을 수행하지 않도록주의 .. 
이주하십시오. 버전 변경 사항 적용을 클릭 한 다음 데이터베이스 및 
정보를 : 수 현재 마이그레이션은 모든 마이그레이션의 마이그레이션 및 결과 그 출원 실행 시간을 완료 데이터베이스의 상태는 .. 
유효성 검사 : 먼저 유효성 검사의 변화, 이동 경로 마이그레이션 기본 않습니다가있는 경우 스크립트를 적용 있는지 확인합니다. 
기준 : 기존 데이터베이스 구조를 기반으로 . 마이그레이션 벤치 마크는 스크립트를 생성 
수리 : 복구 명령 수리 시나리오는 사용하지 않으려 고 : 1. 2. 이미 적용 SQL 스크립트를 수정 실패한 마이그레이션 레코드를 제거, 우리가 SQL 스크립트를 다시 적용 할.


받는다는 플러그인, 메이븐 플러그인은 최신 https://mvnrepository.com/artifact/org.flywaydb/flyway-maven-plugin 볼 수

<플러그인> 
    <의 groupId> org.flywaydb </의 groupId> 
    <artifactId를> 이동 경로 - 받는다는 - 플러그인 </ artifactId를> 
    <version>은 4.0.3 </ 버전> 
</ 플러그인>

명령, MVN 이동 경로 플러그인 받는다는 : 마이그레이션

==============================
이동 경로가 작동
================ ==============
이동 경로가 DB 테이블 (기본 테이블 이름 flyway_schema_history)에서 metdata를 작성해야, 테이블마다 이전의 기록을 유지, 기록은 이주 스크립트를 포함 체크섬 버전 번호의 값 및 SQL 스크립트. 새로운 SQL 스크립트를 스캔하는 경우, 이동 경로는 SQL 스크립트의 버전 번호를 해결 및 마이그레이션 대비 메타 데이터 테이블은 이미 적용 업데이트의 SQL 스크립트 버전,이 글은 경우 그렇지 않으면 SQL 파일을 건너, 지정된 DB의 SQL 파일을 실행합니다.

:.를 다음과 같이 0 부재의 예에 의해 대체이 이동 경로 버전 번호, 왼쪽 정렬 원칙의 비교 
. 댄 1.2.9.4 1.2.9 버전 
1.2.10보다 높은 버전 1.2.9.4 
1.2.10 및 버전 1.2.010 버전 번호의 각 부분에 0을 선도 높은 번호는 무시됩니다.


이동 경로 SQL 파일은 두 가지 범주로 나눌 수 있습니다 : v 전화 및 반복. 
업그레이드 버전 버전 지정된 마이그레이션, 각 버전에는 고유 한 버전 번호가 한 번만 적용 할 수 있습니다. 
반복 마이그레이션이 체크섬의 SQL 스크립트 일단 로딩을 반복 할 수 마이그레이션을 말한다 변화는 철새 이동 경로는 스크립트를 다시 적용됩니다.이 업데이트 된 버전없는, 항상 종류의 마이그레이션 만 버전 마이그레이션 실행 후 실행되었다.

기본적으로 명명 규칙을 마이그레이션 SQL은 아래와 같이 :

파일 이름이 기본 구성에 추가하여, 구성되지만, 상기 일부 사용자 정의 규칙이있을 수 있습니다.

접두어 : 구성 프리픽스 식별자, V의 기본값 인 버전을 나타내고, R은 반복 나타낸다
_ 버전 식별 번호 구분 번호 또는 밑줄과 하나 이상의 디지털 가능한 점 이루어지는 : 버전.
격리 판으로 구성 할 수있다 버전 식별 및 분할의 설명을 기본 두 밑줄 __ 인
설명 또는 밑줄 문자 사이의 공간으로 구분 될 수있다 : 설명
접미사 : 구성 후속 식별 기본 .SQL

 

다음과 같은 메타 데이터 테이블의 이동 경로 :   

코드를 복사
표 flyway_schema_history CREATE 
    ( 
        NULL NOT installed_rank의 INT를, 
        버전 VARCHAR (50) 
        NULL NOT 설명 VARCHAR (200), 
        NULL NOT 유형 VARCHAR (20) 
        NULL NOT 스크립트 VARCHAR (1000), 
        체크섬 INT, 
        NULL NOT VARCHAR (100) installed_by, 
        타임 스탬프의 DEFAULT CURRENT_TIMESTAMP installed_on, 
        execution_time는 NULL NOT INT 
        성공 TINYINT (1) NOT NULL, 
        PRIMARY KEY (installed_rank) 
        INDEX flyway_schema_history_s_idx (성공) 
    ) 
    ENGINE = 이노 DEFAULT CHARSET = utf8mb4;
코드를 복사

 

==============================
의 pom.xml
================= =============
봄이 - 부팅 - 초보 부모 패키지는 최신 2.0.5를 사용하지 않는, 최신 버전은 항상 HikariPool 초기화, 그래서 버전 2.0.4의 선택을 할 수없는 원인이다

    <부모> 
        <의 groupId> org.springframework.boot </의 groupId> 
        <artifactId를> 스프링 부팅 스타터 - 부모 </ artifactId를> 
        <버전> 2.0.4.RELEASE </ 버전> 
        <relativepath를 /> <! - 조회 저장소에서 부모 -> 
    </ 부모>

실제로 이동 경로 만 스프링 부팅 스타터 JDBC 패키지를 따라

코드를 복사
    <의존성> 
        <의 groupId> org.flywaydb </의 groupId> 
        <artifactId를> 이동 경로 코어 </ artifactId를> 
    </ 의존성> 
    <의존성> 
        <의 groupId> org.springframework.boot </의 groupId> 
        <artifactId를> 스프링 부팅 스타터 -jdbc </ artifactId를> 
    </ 의존성> 
    <의존성> 
        <의 groupId> MySQL의 </의 groupId> 
        <artifactId를> MySQL을 커넥터 자바 </ artifactId를> 
    </ 의존성>
코드를 복사

플러스 스프링 부팅 받는다는 - 플러그인, 지방 항아리를 생성합니다. 

코드를 복사
    <건설> 
        <플러그인> 
            <플러그인> 
                <의 groupId> org.springframework.boot </의 groupId> 
                <artifactId를> 스프링 부팅 받는다는 - 플러그인 </ artifactId를> 
            </ 플러그인> 
        </ 플러그인> 
    </ 빌드>      
코드를 복사

==============================
application.properties 매개 변수
================ ==============

코드를 복사
## dB 소스 속성 세트 
spring.datasource.url = JDBC : MySQL은 : // localhost를 : 3306 / 세계 
spring.datasource.username = 루트 
spring.datasource.password의 toor = 

## 이동 경로 속성을 설정 
spring.flyway.cleanDisabled = 참으로 
  # clean 명령의 이동 경로는 지정된 스키마에있는 모든 테이블, 잔인한, 그것은 절단해야 제거합니다. 
spring.flyway.enabled = 사실에 
  #이 철새 이동 경로의 활성화 또는 비활성화 
spring.flyway.locations을 = 클래스 경로 : dB / 마이그레이션 
  # 세트 DB / 마이그레이션, 파일 시스템 : 같은 CLASSPATH의 값으로 디렉토리 주어진 SQL 스크립트를 쉼표로 구분하여 경로의 복수 / SQL-마이그레이션 
true로 spring.flyway.baselineOnMigrate = 
  # 스키마는 다른 테이블을 포함하지만, 스키마 역사를 이동 경로하지 않는 경우 테이블은 다음 이동 경로 마이그레이션 명령을 실행하기 전에 먼저 이동 경로 기본 명령을 수행해야합니다.  
  # 세트 spring.flyway.baseline - 온 - 마이그레이션을 사실, 이동 경로 후 필요한베이스 라인이 자동으로 기준선을 수행 할 때.
spring.flyway.baselineVersion = 1 
  # 기준 버전 번호를 지정, 기본값은 SQL 파일의 버전 번호가 무시 된 마이그레이션보다. 
#의 spring.flyway.encoding = 
  SQL 마이그레이션 (기본의 # 인코딩 : . 8 UTF) 
spring.flyway.table = flyway_schema_history_myapp 
  # 메타 데이터 테이블, 기본 flyway_schema_history의 집합 철새 이동 경로 
true로 spring.flyway.outOfOrder = 
  # 개방형 개발 환경에 가장 outOfOrder, 생산 환경에 가까운 outOfOrder. 
# spring.flyway.schemas = 
  # 직접 사용에 대한 스키마 dbsource.connection는, 스키마의 복수 지정하지만 첫 번째 메타 데이터 스키마 만 기존의 테이블, 또한 첫 번째 수있는 컨트롤에 필요한 이동 경로의 스키마 목록, 디폴트의 스키마 응용 프로그램 마이그레이션 SQL 스크립트,하지만 이동 경로 청소 명령을 차례대로 스키마에 다시 수행합니다.
코드를 복사

더 많은 매개 변수가이 매개 변수는 프로젝트를 springboot2하기 위해, 당신은 봄. 접두사를 추가 할 필요가 있음을 주목해야한다, https://flywaydb.org/documentation/configfiles를 참조하십시오. 


==============================
이동 경로 모범 사례
================ ============== 
파일 1. SQL 이름
마이그레이션 SQL 개발 및 생산 환경이 공유되지 않습니다. 개발 과정 공동 개발보다 더 자주 더, DB 마이그레이션도 상대적으로 자주, 그래서 SQL 스크립트 그들 중 많은. 및 생산 환경 DB 마이그레이션이 종종 DBA에 의해 수행되고, 각각의 업그레이드는 일반적으로 SQL 스크립트를 제출해야한다.

(1). SQL 개발 환경 파일의 타임 스탬프가 버전으로 추천 번호입니다. 
개발 환경 SQL 파일 타임 스탬프는 버전 번호로 추천, 경합의 버전 번호를 가진 사람들의 발전으로 이어질하지 않습니다 함께 생산 환경의 버전 번호 반면, 이 경우, 프로덕션 환경 V1.2d 이주 스크립트에 미래의 손 병합, 또한 SQL 파일의 예를 더 편리 :
V20180317.10.59__V1.2_Unique_User_Names.sql
V20180317.14.59__V1.2_Add_SomeTables.sql

(2) 생산 환경 SQL 파일을 수동으로 할 SQL 스크립트의 개발 환경을 병합해야 정상 버전에 따라 버전 번호 등 V2.1.5_001__Unique_User_Names.sql

2. 마이그레이션 후 SQL 스크립트는 더 이상 수정 될 수 없습니다.

허위 사실의 3 spring.flyway.outOfOrder 값 /
개발 환경, 그것은 공동 개발보다 더 할 수있다, 그렇게, 다른 동료 이전 SQL 코드가 적용되지 제출 된 발견 한 후 최신 네이티브 SQL 코드를 적용 할 가능성이 있으며, = 거짓과 생산 환경 spring.flyway.outOfOrder 설정해야합니다; 개발 환경은 너무 SQL 파일의 이전 버전을 놓친로드 할 수있을 것입니다 이동 경로, spring.flyway.outOfOrder = true를 설정해야

4. DB 스키마의 복수에 공통 시스템 
, 기본 flyway_schema_history 다른 spring.flyway.table 시스템 메타 데이터 테이블의 설정을 사용하는 경우 다른 종종 여러 유틸리티에서 시스템을 DB 스키마,

 

전송 : https://www.cnblogs.com/harrychinese/p/springboot_flyway.html

추천

출처www.cnblogs.com/itplay/p/10974701.html