Tibero DB를 Docker로 배포하는 방법에 대해 알아보자

# 먼저 tibero란 무엇인가?
Tibero를 간단하게 말하자면 티맥스데이터에서 개발한 Oracle과 호환성 높은 한국에서 개발한 데이터베이스이다.
장점은 오라클과 비슷하고, 오라클 유지비용의 가격이 절반이다.
단점은,, 노코멘트 하겠다.
# 배포 과정
## 라이센스 발급 및 tibero7 압축파일 다운
먼저 tibero를 쓰기 위해 license.xml을 발급 받아야한다. 처음에는 한달 정도 사용해볼 수 있는 무료 라이센스를 준다.
그 후 tibero 설치를 위한 압축파일을 다운받고, 압축을 풀어줘야 한다.
위 과정은 홈페이지에서 설명이 충분하기에 생략하겠다.
## 배포 환경
배포 환경은 아무 서버에서나 구축할 수 있도록 Docker를 활용한다.
필자는 rocky linux 기반의 Docker에서 구축을 해야 했기에, image를 rocky linux로 설정해서 docker 배포를 했다.
### 압축파일 풀기
`tibero7~~~.tar.gz`로 다운 받은 걸 아래 명령어로 압축을 푼다.
여기서 Docker volume으로 연결할 것이기에, 연결될 폴더에 압축을 풀면 좋다.
필자는 `./test/volumn/tibero/tibero`에 넣어두었다.
tar -xvzf 파일명.tar.gz
그러면 tibero7이란 폴더가 보일 텐데, 여기서 license의 폴더에 라이센스 파일 `license.xml` 을 추가한다.
### ./tibero/Dockerfile
tibero를 설정할때, java가 필요하기에 설치를 해준다.
FROM rockylinux/rockylinux:8.10
RUN dnf install -y \
gcc gcc-c++ libaio-devel \
passwd which tar make unzip wget gdb \
&& dnf clean all
RUN wget --no-cookies --no-check-certificate \
--header "Cookie: oraclelicense=accept-securebackup-cookie" \
"https://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz" \
-O /tmp/jdk-8u131-linux-x64.tar.gz
RUN mkdir -p /usr/java && \
tar -xzf /tmp/jdk-8u131-linux-x64.tar.gz -C /usr/java && \
ln -s /usr/java/jdk1.8.0_131 /usr/java/default
ENV JAVA_HOME=/usr/java/default
ENV PATH=$PATH:$JAVA_HOME/bin
EXPOSE 8629
CMD tail -f /dev/null
### ./docker-compose.yml
여기서 hostname은 license를 설정할때 세팅한 license-host 이름으로 설정하면 된다.
tibero:
build:
context: ./tibero
dockerfile: Dockerfile
image: rocky-tibero:7
container_name: db-tibero
hostname: license-host
ports:
- "19000:8629"
volumes:
- ./test/volume/tibero/db:/db
- ./test/volume/tibero/tibero:/tibero
networks:
- test-network
restart: unless-stopped
docker 배포 후 접속한다.
docker compose up -d tibero
docker exec -it db-tibero bash
### tibero 세팅
환경변수를 세팅한다
vi ~/.bash_profile
맨 아래에 이 데이터들을 추가한다.
export TB_HOME=/tibero/tibero7
export TB_SID=tibero
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib
export PATH=$PATH:$TB_HOME/bin:$TB_HOME/client/bin
export JAVA_HOME=/usr/java/default
export PATH=$PATH:$JAVA_HOME/bin
환경변수 설정 완료한다.
source ~/.bash_profile
TB config를 아래 명령어로 설정한다.
cd $TB_HOME/config
./gen_tip.sh
tbboot를 nomount로 실행한뒤 tbsql로 접속한다.
tbboot nomount
tbsql sys/tibero
아래 명령어로 SQL> 에 초기 DB를 설정해준다.
CREATE DATABASE
USER sys IDENTIFIED BY tibero
MAXDATAFILES 256
CHARACTER SET UTF8
NATIONAL CHARACTER SET UTF16
LOGFILE
GROUP 0 '/db/t1019d/redo1/redo01.log' SIZE 50M,
GROUP 1 '/db/t1019d/redo1/redo11.log' SIZE 50M,
GROUP 2 '/db/t1019d/redo1/redo21.log' SIZE 50M
MAXLOGFILES 100
MAXLOGMEMBERS 2
NOARCHIVELOG
DATAFILE '/db/t1019d/dbfile/system01.dtf' SIZE 300M
DEFAULT TEMPORARY TABLESPACE TEMP
TEMPFILE '/db/t1019d/dbfile/temp01.dtf' SIZE 300M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128k
UNDO TABLESPACE UNDO
DATAFILE '/db/t1019d/dbfile/undo01.dtf' SIZE 300M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128k
DEFAULT TABLESPACE USR
DATAFILE '/db/t1019d/dbfile/usr01.dtf' SIZE 300M
EXTENT MANAGEMENT LOCAL UNIFORM SIZE 128k
SYSSUB
DATAFILE '/db/t1019d/dbfile/syssub.dtf' SIZE 300M
;
Nomal 모드로 다시 부팅을 한다/
tbboot
tibero studio에서 제대로 확인하기 위한 아래 명령어를 수행한다.
cd $TB_HOME/script
/system.sh -p1 tibero -p2 syscat -a1 y -a2 y -a3 y -a4 y
이렇게 설정하면 DB를 접속할 수 있을 것이다.
Docker로 19000을 외부로 열어놨기에,
ID: sys, PW: tibero, Port: 19000, DB: tibero 로 접속이 가능할 것이다.
추가적으로 데이터를 덤프 뜰때, table space 설정 및 유저 추가 등은 추가로 작성하겠습니다.
---
필자는 공공기관 SI 개발을 하며 현재 신입 시절 두번째 프로젝트때 사내 테스트용 인프라 구축을 진행했는데, 회사에서 tibero에 대해 아는 사람이 없어서 혼자 끙끙 앓으며 찾아 개발해보았는데, 다른 분들은 이걸 보고 시간을 절약했으면 하는 바람에 블로깅을 한다.
'Infra' 카테고리의 다른 글
| [책] 도메인 주도 개발 시작하기(1) (1) | 2024.12.24 |
|---|