liquibase changelog인 schema.xml과 data.xml을 생성하기 위해 아래와 같이 Shell Script를 만들 수 있다.
Shell Script 만들기
liquibase로 schema.xml을 만드는 명령어는 아래와 같다.
JDBC_DRIVER_HOME=${HOME}/.m2/repository/mysql/mysql-connector-java
JDBC_DRIVER_VERSION=8.0.12
CLASSPATH=${JDBC_DRIVER_HOME}/${JDBC_DRIVER_VERSION}/mysql-connector-java-${JDBC_DRIVER_VERSION}.jar
DRIVER=com.mysql.cj.jdbc.Driver
URL="jdbc:mysql://database 호스트명:20306/db 저장소명?useSSL=false"
USERNAME=db 유저명
PASSWORD=db password
AUTHOR=팀 명 혹은 프로젝트명
DATE_TIME=$(date +%Y%m%d%H%M%S)
CHANGELOG_SCHEMA=src/main/resources/config/liquibase/changelog/${DATE_TIME}_schema.xml
CHANGELOG_DATA=src/main/resources/config/liquibase/changelog/${DATE_TIME}_data.xml
liquibase --classpath=${CLASSPATH} \
--driver=${DRIVER} \
--url=${URL} \
--username=${USERNAME} \
--password=${PASSWORD} \
--changeSetAuthor=${AUTHOR} \
--changeLogFile=${CHANGELOG_SCHEMA} \
generateChangeLog
data.xml을 만드는 명령어는 아래와 같다.
JDBC_DRIVER_HOME=${HOME}/.m2/repository/mysql/mysql-connector-java
JDBC_DRIVER_VERSION=8.0.12
CLASSPATH=${JDBC_DRIVER_HOME}/${JDBC_DRIVER_VERSION}/mysql-connector-java-${JDBC_DRIVER_VERSION}.jar
DRIVER=com.mysql.cj.jdbc.Driver
URL="jdbc:mysql://database 호스트명:20306/db 저장소명?useSSL=false"
USERNAME=db 유저명
PASSWORD=db password
AUTHOR=팀 명 혹은 프로젝트명
DATE_TIME=$(date +%Y%m%d%H%M%S)
CHANGELOG_SCHEMA=src/main/resources/config/liquibase/changelog/${DATE_TIME}_schema.xml
CHANGELOG_DATA=src/main/resources/config/liquibase/changelog/${DATE_TIME}_data.xml
EXCLUDE_OBJECTS="빼고싶은 테이블1, 빼고싶은 테이블2. 필요하면 넣고 아니면 안넣어도 된다."
liquibase --classpath=${CLASSPATH} \
--driver=${DRIVER} \
--url=${URL} \
--username=${USERNAME} \
--password=${PASSWORD} \
--changeSetAuthor=${AUTHOR} \
--changeLogFile=${CHANGELOG_DATA} \
--diffTypes=data \
--excludeObjects=${EXCLUDE_OBJECTS} \
generateChangeLog \
아래와 같이 "&&"을 이용해 schema.xml과 data.xml을 합쳐서 명령할 수 있다.
JDBC_DRIVER_HOME=${HOME}/.m2/repository/mysql/mysql-connector-java
JDBC_DRIVER_VERSION=8.0.12
CLASSPATH=${JDBC_DRIVER_HOME}/${JDBC_DRIVER_VERSION}/mysql-connector-java-${JDBC_DRIVER_VERSION}.jar
DRIVER=com.mysql.cj.jdbc.Driver
URL="jdbc:mysql://database 호스트명:20306/db 저장소명?useSSL=false"
USERNAME=db 유저명
PASSWORD=db password
AUTHOR=팀 명 혹은 프로젝트명
DATE_TIME=$(date +%Y%m%d%H%M%S)
CHANGELOG_SCHEMA=src/main/resources/config/liquibase/changelog/${DATE_TIME}_schema.xml
CHANGELOG_DATA=src/main/resources/config/liquibase/changelog/${DATE_TIME}_data.xml
EXCLUDE_OBJECTS="빼고싶은 테이블1, 빼고싶은 테이블2. 필요하면 넣고 아니면 안넣어도 된다."
liquibase --classpath=${CLASSPATH} \
--driver=${DRIVER} \
--url=${URL} \
--username=${USERNAME} \
--password=${PASSWORD} \
--changeSetAuthor=${AUTHOR} \
--changeLogFile=${CHANGELOG_SCHEMA} \
generateChangeLog &&
liquibase --classpath=${CLASSPATH} \
--driver=${DRIVER} \
--url=${URL} \
--username=${USERNAME} \
--password=${PASSWORD} \
--changeSetAuthor=${AUTHOR} \
--changeLogFile=${CHANGELOG_DATA} \
--diffTypes=data \
--excludeObjects=${EXCLUDE_OBJECTS} \
generateChangeLog \
ShellScript를 생성해서 프로젝트 안에 넣어두면 된다.
쉘 스크립트 실행 방법
프로젝트 터미널에서 db2changelog.sh가 있는 곳으로 가서, ./db2changelog.sh를 실행시켜준다.
Liquibaese가 콘솔에 뜨면 성공이다. 참고로 작성한 db2changelog.sh에는 schema.xml과 data.xml 둘다 생성되도록 했다.
생성에 오랜 시간이 걸릴 수 있으므로 기다리면 아래와 같이 schema.xml과 data.xml이 생성 완료되었다는 것을 알 수 있다.
Project 내 changelog 폴더에 생성된 schema.xml과 data.xml이 추가된 것을 볼 수 있다.
'트러블슈팅' 카테고리의 다른 글
Jenkins나 Spring Boot에서 Test 시, liquibase 외래키 참조 에러 (1) | 2024.01.10 |
---|---|
Jenkins에서 Failed to read schema document 'http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd' liquibase 에러 (0) | 2024.01.09 |
터미널에서 liquibase 실행 시, zsh: command not found: liquibase 에러 (0) | 2024.01.09 |
Oracle 실행 계획 보기. 개발 DB와 운영 DB의 쿼리 속도가 차이나는 이유 (0) | 2023.12.11 |
Jenkins에서 SonarQube Execution Failure (0) | 2023.11.16 |