개발하다보니 더 추가할사항이 있어서 추가해보겠당~!

 

1. Liquibase 란?

데이터베이스 변경관리를 체계적으로 자동화 해주는 오픈소스 (스키마 버전 관리)

 

개발하다보면 DB가 어쩔수 없이 변경되는 경우가 있을 수 있다. 이경우 갑자기 DB를 변경할 경우

각 개발자 로컬에서 수많은 버그들이 발생할것이다.. 그리고 관리도 어렵고

그래서 관리를 하기위해서 git처럼 형상관리로 하는거다 project 안에 파일이 있으니까 더 수월히 된다 

 

2. 사용법

1. maven 에 liquibase를 pom.xml에 추가해준다.

 

<dependency>
<groupId>org.liquibase</groupId>
<artifactId>liquibase-core</artifactId>
</dependency>

 

2. liquibase.xml 파일을 생성해준다.

부모가 되는 xml 파일이다. 다른 각각 테이블 별로 된 xml 파일을 여기서 include 해준다.

 

<include file="~~~.xml" relativeToChangelogFile="true" />

 

3. 각 테이블마다 xml을 만들어 주면된다. 

 

https://www.liquibase.org/documentation/xml_format.html

 

Liquibase | Database Refactoring | XML Format

XML Format Liquibase supports XML as a format for storing your changelog files. XSD Support XSD schema definitions are available for each Liquibase version. Since there are no changelog format changes in patch versions, there are only xsd files that corres

www.liquibase.org

 

<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.0.xsd http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd"> <preConditions> <runningAs username="liquibase"/> </preConditions> <changeSet id="1" author="nvoxland"> <createTable tableName="person"> <column name="id" type="int" autoIncrement="true"> <constraints primaryKey="true" nullable="false"/> </column> <column name="firstname" type="varchar(50)"/> <column name="lastname" type="varchar(50)"> <constraints nullable="false"/> </column> <column name="state" type="char(2)"/> </createTable> </changeSet> <changeSet id="2" author="nvoxland"> <addColumn tableName="person"> <column name="username" type="varchar(8)"/> </addColumn> </changeSet> <changeSet id="3" author="nvoxland"> <addLookupTable existingTableName="person" existingColumnName="state" newTableName="state" newColumnName="id" newColumnDataType="char(2)"/> </changeSet> </databaseChangeLog>

 

 

 

4. spring에 databaseConfig 파일d에 liquibase관련 내용을 Bean으로 만들어준다.

 

SpringLiquibase liq = new SpringLiquibase();

 

liq에 필요한 내용을 set해준다( datasource등..)

 

 

 

5. 그이후 서버를 기동하면 다음과 같은 테이블이 생성함을 확인 할 수 있다.

databasechangelog

databasechangeloglock

databasechangelog는 한번 돌았던 xml파일을 다시 반영하지 않기 위해 어떤파일을 database에 반영했는지

기록하는 테이블이고

 

 

databasechangeloglock은 기동하면서 xml파일이 반영될때 lock을 잡고 있을때 테이블에 데이터가 들어갔다가

lock이 해제되면 빠진다

 

 

 

 

 

'DEVELOP > DB' 카테고리의 다른 글

[MariaDB] general log 설정하기  (0) 2020.05.25
DB (mysql) 설정 변경  (0) 2020.03.13
NewSql 이란? All in one DBMS  (0) 2019.12.16
NoSql DB 종류  (0) 2019.12.13
DB(database)의 종류  (0) 2019.12.11

+ Recent posts