Tibero/설치

Tibero TAC 설치

havy 2023. 1. 19. 09:57
TAC를 설치하는 가이드를 작성해보겠다.

 

필자의 기본 환경 정보는 다음과 같다.

OS : Linux 64bit

IP : 192.168.76.144 / 192.168.76.145

VIP : 192.168.76.134 / 192.168.76.135

Tibero version : Tibero6 FS07

 

TAC를 설치에 쓰인 Raw Device 매핑 정보는 다음과 같다.

 

ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_ctl01",RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_ctl02",RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_redo101",RUN+="/bin/raw /dev/raw/raw3 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_redo102",RUN+="/bin/raw /dev/raw/raw4 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_redo103",RUN+="/bin/raw /dev/raw/raw5 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_redo201",RUN+="/bin/raw /dev/raw/raw6 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_redo202",RUN+="/bin/raw /dev/raw/raw7 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_redo203",RUN+="/bin/raw /dev/raw/raw8 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_usr",RUN+="/bin/raw /dev/raw/raw9 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_temp",RUN+="/bin/raw /dev/raw/raw10 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_tpr",RUN+="/bin/raw /dev/raw/raw11 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_cm1",RUN+="/bin/raw /dev/raw/raw12 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_cm2",RUN+="/bin/raw /dev/raw/raw13 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_cfile",RUN+="/bin/raw /dev/raw/raw14 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_undo001",RUN+="/bin/raw /dev/raw/raw15 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_undo002",RUN+="/bin/raw /dev/raw/raw16 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_test01",RUN+="/bin/raw /dev/raw/raw17 %N"
ACTION=="add|change",ENV{DM_VG_NAME}=="tibero_vg",ENV{DM_LV_NAME}=="tb_system",RUN+="/bin/raw /dev/raw/raw18 %N"

3.1 설치 전 준비사항

3.1.1 바이너리 업로드 및 압축해제

티베로 엔진 파일을 다운받아서 압축 해제한다. (tar -xzvf tibero6-bin.....)

 

3.1.2 라이선스 설정

Technet을 통해 데모 라이선스(Enterprise)를 다운받은 후 $TB_HOME/license/ 위치에 업로드 한다.

$ mv license.xml $TB_HOME/license/

 

3.1.3 OS 커널 파라미터 설정

 

$ vi /etc/sysctl.conf

kernel.shmall = 2097152
kernel.shmmax = [물리메모리의 1/2]
kernel.shmmni = 4096
kernel.sem = 10000 32000 10000 10000
fs.file-max = 6815744
net.ipv4.ip_local_port_range=1024 65000

$ sysctl -p

 

 

3.1.4 ulimit 설정

vi /etc/security/limits.conf

tibero soft nofile 65536
tibero hard nofile 65536
tibero soft nproc 16384
tibero hard nproc 16384

 

 

 

3.1.5 RemoveIPC 설정

vi /etc/systemd/logind.conf

RemoveIPC=no 주석 해제

 

 

 

 

 

메뉴얼에 나와있는 정보와 거의 일치하나, Hostname만 1번 노드는 tac1, 2번 노드는 tac2로 다르다.

 

3.2.2 1번 Node 환경변수 설정

 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH


set -o vi
stty erase ^?H

######## Profile ENV Config ###############
export PS1=`uname -n`'@$LOGNAME:$PWD $ '
export TERM=vt100
umask 022
export EDITOR=vi


### Tibero6 ENV ###
export TB_HOME=/tibero/tibero6
export TB_SID=expert0
export PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:$PATH
### Linux, Solaris ###
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH

### Tibero Cluster Manager ENV ###
export CM_HOME=$TB_HOME
export CM_SID=cm0

### Alias For Tibero ###
alias tbhome='cd $TB_HOME'
alias tbcfg='cd $TB_HOME/config'
alias tbcfgv='vi $TB_HOME/config/$TB_SID.tip'
alias tbcli='cd $TB_HOME/client/config'
alias tbcliv='vi $TB_HOME/client/config/tbdsn.tbr'
alias tblog='cd /tblog'
alias tbi='cd ~/tbinary'
alias tm='cd ~/tbinary/monitor;./monitor;cd -'

### Alias For tbcm ###
alias cmcfgv='vi $CM_HOME/config/$CM_SID.tip'
alias cmlog='cd $CM_HOME/instance/$CM_SID/log'
alias show='cmrctl show'

 

 

 

 

3.2.3 2번 Node 환경변수 설정

 

# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/bin

export PATH


set -o vi
stty erase ^?H

######## Profile ENV Config ###############
export PS1=`uname -n`'@$LOGNAME:$PWD $ '
export TERM=vt100
umask 022
export EDITOR=vi


### Tibero6 ENV ###
export TB_HOME=/tibero/tibero6
export TB_SID=expert1
export PATH=.:$TB_HOME/bin:$TB_HOME/client/bin:$PATH
### Linux, Solaris ###
export LD_LIBRARY_PATH=$TB_HOME/lib:$TB_HOME/client/lib:$LD_LIBRARY_PATH

### Tibero Cluster Manager ENV ###
export CM_HOME=$TB_HOME
export CM_SID=cm1

### Alias For Tibero ###
alias tbhome='cd $TB_HOME'
alias tbcfg='cd $TB_HOME/config'
alias tbcfgv='vi $TB_HOME/config/$TB_SID.tip'
alias tbcli='cd $TB_HOME/client/config'
alias tbcliv='vi $TB_HOME/client/config/tbdsn.tbr'
alias tblog='cd /tblog'
alias tbi='cd /tibero/tbinary'
alias tm='cd ~/tbinary/monitor;./monitor;cd -'

### Alias For tbcm ###
alias cmcfgv='vi $CM_HOME/config/$CM_SID.tip'
alias cmlog='cd $CM_HOME/instance/$CM_SID/log'
alias show='cmrctl show'

 



3.2.4 1번 node tip파일 생성 및 수정

1번 node에서 $TB_HOME의 config로 이동해 gen_tip.sh를 실행한다.

그러면 expert0.tip 문서가 생성된다.

이 문서는 다음과 같이 설정한다.

 

# tip file generated from /tibero/tibero6/config/tip.template (Mon Jan 16 11:04:30 KST 2023)

DB_NAME=expert
LISTENER_PORT=8629
CONTROL_FILES="/dev/raw/raw1","/dev/raw/raw2"
DB_CREATE_FILE_DEST="/tbdata"
MAX_SESSION_COUNT=20

TOTAL_SHM_SIZE=2G

MEMORY_TARGET=4G
THREAD=0
UNDO_TABLESPACE=UNDO0
CLUSTER_DATABASE=Y
LOCAL_CLUSTER_ADDR=10.10.10.186
LOCAL_CLUSTER_PORT=11029
CM_PORT=11039

 

2번 node도 마찬가지로 위와 같은 절차를 거친 후

expert1.tip 문서를 수정해준다.

 

# tip file generated from /tibero/tibero6/config/tip.template (Tue Jan 17 13:47:44 KST 2023)



DB_NAME=expert
LISTENER_PORT=8629
CONTROL_FILES="/dev/raw/raw1","/dev/raw/raw2"

DB_CREATE_FILE_DEST="/tbdata"
MAX_SESSION_COUNT=20
TOTAL_SHM_SIZE=2G
MEMORY_TARGET=4G
THREAD=1
UNDO_TABLESPACE=UNDO1
CLUSTER_DATABASE=Y
LOCAL_CLUSTER_ADDR=10.10.10.187
LOCAL_CLUSTER_PORT=11029
CM_PORT=11039

 

 

3.2.5 CM tip파일 생성

 

$TB_HOME/config/cm.template 파일을 참조하여 동일한 위치에 $CM_SID.tip 형태로 설정 파일을 생성한다.

※ $TB_SID.tip 의 CM_PORT 와 $CM_SID.tip 의 CM_UI_PORT 는 동일하게 설정해야 한다.

 

 

1번 node

$ vi cm0.tip
CM_NAME=cm0
CM_UI_PORT=11039
CM_RESOURCE_FILE=/tbdata/cm0_res.crf

2번 node

$ vi cm1.tip
CM_NAME=cm1
CM_UI_PORT=11039
CM_RESOURCE_FILE=/tbdata/cm1_res.crf

 

 

 

3.2.6 tbdsn.tbr 수정

1번 node

# /tibero/tibero6/client/config/tbdsn.tbr
# Network Configuration File.
expert0=(
    (INSTANCE=(HOST=localhost)
              (PORT=8629)
              (DB_NAME=expert)
    )
)

expert=(
 (INSTANCE=(HOST=192.168.76.144)
  (PORT=8629)
  (DB_NAME=expert)
 )
 (INSTANCE=(HOST=192.168.76.145)
  (PORT=8629)
  (DB_NAME= expert)
 )
)

 

2번 노드

 

# /tibero/tibero6/client/config/tbdsn.tbr
# Network Configuration File.
expert1=(
    (INSTANCE=(HOST=localhost)
              (PORT=8629)
              (DB_NAME=expert1)
    )
)

expert=(
 (INSTANCE=(HOST=192.168.76.145)
  (PORT=8629)
  (DB_NAME=expert)
 )
 (INSTANCE=(HOST=192.168.76.144)
  (PORT=8629)
  (DB_NAME= expert)
 )
)

 

 

3.2.7 1번 Node - tbcm 기동

이후부터 나오는 절차는 필자가 별도로 말하지 않으면 1번 노드에서만 행해지는 절차이다.

$ tbcm –b

 

3.2.8 network 등록

--ifname은 ifconfig -a를 했을 시 실제 IP주소를 가지고 있는 이더넷 이름을 기입하면 된다.

필자같은 경우는 ens32로 확인된다.

 

- Private Network add command
$ cmrctl add network --name <network_name> --nettype <public/private> --ipaddr <inter-connect IP> --portno <CM 통신 port>

- Private Network add ex
$ cmrctl add network --name expert_inter0 --nettype private --ipaddr 10.10.10.186 --portno 11019

- Public Network add command
$ cmrctl add network --name <network_name> --nettype <public/provate> --ifname <NIC_NAME>

- Public Network add ex
$ cmrctl add network --name expert_pub0 --nettype public --ifname ens32

 

 

결과 확인

 

 

3.2.9 Cluster 등록

 

- Cluster add command
$ cmrctl add cluster --name <cluster_name> --incnet <private_network_name> 
--pubnet <public_network_name> --cfile "<cfile_name>"

- Cluster add ex
$ cmrctl add cluster --name expert_cls --incnet expert_inter0 --pubnet expert_pub0 --cfile "/dev/raw/raw12,/dev/raw/raw13"

$ cmrctl start cluster –name expert_cls

 

 

 

결과 확인

 

3.2.10 1번 Node – DB 등록

 

- Service add command
$ cmrctl add service --name <database_name> --cname <cluster_name>

- Service add ex
$ cmrctl add service --name expert --cname expert_cls

- Database add command$ cmrctl add db --name <instance_name> --svcname <database_name> 
--dbhome <tibero_home_directory>

- Database add ex
$ cmrctl add db --name expert0 --svcname expert --dbhome $TB_HOME

 

 

결과 확인

 

이 후 tbboot nomount를 입력해 db를 가동시킨다.

 

이후 tbsql로 sys계정에 접속해 database를 생성한다.

create database
user sys identified by tibero
character set UTF8
logfile group 0 ('/dev/raw/raw3') size 100M,
         group 1 ('/dev/raw/raw4') size 100M,
         group 2 ('/dev/raw/raw5') size 100M
maxdatafiles 1024
maxlogfiles 100
maxlogmembers 8
noarchivelog
 datafile '/dev/raw/raw18' size 100M
default tablespace USR
 datafile '/dev/raw/raw9' size 100M
default temporary tablespace TEMP
 tempfile '/dev/raw/raw10' size 400M
 extent management local AUTOALLOCATE
undo tablespace UNDO0
 datafile '/dev/raw/raw15' size 400M
 extent management local AUTOALLOCATE;

 

이 후 tbboot를 normal모드로 기동해 결과를 확인한다.

 

3.2.11 1번 Node – 2번 Node에서 사용할 Undo Tablespace 생성 및 Redo Log 추가

 

tbsql로 sys계정에 접속해

create undo tablespace UNDO1
datafile '/dev/raw/raw16' size 400M
extent management local AUTOALLOCATE;

 

로 Undo tablespace를 생성한다.

 

alter database add logfile thread 1 group 3 '/dev/raw/raw6' size 100M;
alter database add logfile thread 1 group 4 '/dev/raw/raw7' size 100M;
alter database add logfile thread 1 group 5 '/dev/raw/raw8' size 100M;

 

로 Redo Log를 추가한다.

 

alter database enable public thread 1;

 

로 thread enable 처리를 해준다.

 

create tablespace syssub datafile '/dev/raw/raw11' size 10m reuse autoextend off;

 

로 TRP용 Tablespace를 생성한다.

 

 

3.2.12 system 쉘 수행

$ cd $TB_HOME/scripts
$ ./system.sh -p1 tibero -p2 syscat -a1 y -a2 y -a3 y -a4 y

 

 

 

 

 

3.2.13 2번 노드 tbcm 기동

이후부터 필자가 특별한 말이 없다면 2번 노드에서만 작업을 해준다.

$ tbcm –b

 

3.2.14 network 등록

마찬가지로 여기서도 실제 IP주소를 가지고 있는 이더넷의 이름이 ens32이다.

 

$ cmrctl add network --name expert_inter1 --nettype private --ipaddr 10.10.10.187 --portno 11019
$ cmrctl add network --name expert_pub1 --nettype public --ifname ens32

 

 

 

3.2.16 Cluster 등록

$ cmrctl add cluster --name expert_cls --incnet expert_inter1 --pubnet expert_pub1 --cfile "/dev/raw/raw12,/dev/raw/raw13"
$ cmrctl start cluster --name expert_cls

 

 

 

 

※ 1번 Node에서 등록했던 service 항목이 있어야 정상적으로 처리된 것이다. 만약 service 항목이 보이지 않는다면 설정을 확인 후 cluster를 재등록 해야한다.

 

3.2.17 DB 등록 및 기동

$ cmrctl add db --name expert1 --svcname expert --dbhome $TB_HOME

tbboot 수행

 

 

 

 

 

 

 

 

 

 

 

3.3 VIP 설정

 

Tibero의 VIP는 FS05버젼부터 tbcm이 아닌 DB Instance에 종속된다.
따라서 DB가 boot/down되냐에 따라 VIP도 up/down/failover가 결정된다.

 

 

VIP는 new cm이 OS의 root 유저로 실행해야 추가할 수 있다.
위에서 설정한 new cm 은 root 가 아닌 계정으로 실행되어 조건에 충족하지 않는다.
이에 따라 DB의 모든 instance down 후 tbcm을 root 유저로 실행 후 VIP를 추가해야 한다.

 

tbdown immediate
tbcm -d

 

실행 후 root로 접속한다.

 

이후 Tibero의 환경변수를 적용하고(tibero 유저의 .bash_profile)

root에서

tbcm -b 

하여 cm을 부팅시킨다.

 

 

3.3.1 1번 노드 VIP Resource 등록

 

- vip add command
$ cmrctl add vip --name <vip_name> --node <cm_sid> --svcname <database_name> --ipaddr <virtual_IP>

- vip add ex
$ cmrctl add vip --name expert_vip0 --node cm0 --svcname expert --ipaddr 192.168.76.134

 

 

 

 

이후 tibero 유저로 접속하여

tbboot를 실행한다.

그리고 ifconfig -a를 해보면

저렇게 가상 IP가 붙은 모습을 확인할 수 있다.

 

3.3.3 2번 Node VIP Resource 등

 

$ cmrctl add vip --name expert_vip1 --node cm1 --svcname expert --ipaddr 192.168.76.135

위와 같은 방법을 거치게 되면

가상 IP가 붙은 모습을 확인할 수 있다.

 

 

 

 

 

여기까지 성공적으로 따라왔다면 TAC 설치가 완료된 것이다.
그렇다면 실제로 성능 테스트를 해보자.

 

 

 

1번 노드를 의도적으로 failover상태로 만들 것이다. 

1번 노드의 db를 내리자.

1번 노드에 붙어있던 1번 노드의 VIP가 db를 내리자 Remote 상태로 전환되었다. (즉, 1번 노드가 현재 VIP를 가지고 있지 않다는 것을 의미한다.)

 

2번 노드를 확인해보자.

 

 

1번 노드의 VIP가 2번 노드에 붙어있음을 확인할 수 있다.

 

 

 

이러한 시스템 덕에 어떤 노드가 장애가 발생하여 DB가 죽는 등 치명적인 상황이 발생해도
정상적으로 서비스를 운영할 수 있는 것이다.

'Tibero > 설치' 카테고리의 다른 글

설치 완료 후 반출할 목록들  (0) 2023.02.10
Create Database문 정리 (Single)  (0) 2023.01.19
TB_HOME내 디렉토리 의미 정리  (0) 2022.12.22
sysctl.conf, limits.conf 정리  (0) 2022.12.22
TB_SID.tip 정리  (0) 2022.12.22