• 워드프레스 → 라이믹스 블로그 이전 완료 일주일 동안 열지 않기
  • 목록
  • 아래로
  • 위로
  • 검색

Cubrid Linux에서 CUBRID 10.1 설치

키큰난쟁이 키큰난쟁이
47 0 0

CUBRID.jpeg

 


 

들어가며

 

💡CUBRID는 관계형 데이터베이스 관리 시스템의 이름이며, 오픈 소스 소프트웨어이다. DBMS 엔진 부분은 아파치 라이선스 2.0 라이선스가 적용되고 인터페이스 부분은 BSD 라이선스가 적용되었으며, 국제 표준화 기구의 표준 구조화 조회 언어를 지원한다. 2008년 11월 CUBRID 2008 (CUBRID 8)이 출시되면서 오픈소스 DBMS로 전환되었으며, 최신 안정화 버전은 CUBRID 11.0이다.

 


 

CUBRID 설치하기

 

설치 전 사전 점검

  • JRE 또는 JDK 1.6 이상 및 Linux 계열 64 Bit(Linux kernel 2.4 및 glibc 2.3.4 이상)

  • glibc 버전 
    glibc 2.3.4 버전 이상만 지원한다. glibc 버전은 다음과 같은 방법으로 확인
rpm -q glibc
  • 32비트 또는 64비트

    10.0 이후 CUBRID는 64비트 버전만 지원한다. Linux버전은 다음과 같은 방법으로 확인
uname -a
Linux host_name 2.6.18-53.1.14.el5xen #1 SMP Wed Mar 5 12:08:17 EST 2008 x86_64 x86_64 x86_64 GNU/Linux
  • 추가로 설치할 라이브러리

    1. Curses Library (rpm -q ncurses)
    2. gcrypt Library (rpm -q libgcrypt)
    3. stdc++ Library (rpm -q libstdc++)

  • /etc/hosts 파일에 호스트 이름과 IP 주소 매핑이 정상인지 확인하기
    호스트 이름과 이에 맞는 IP 주소가 비정상적으로 매핑되어 있으면 DB 서버를 구동할 수 없으므로, 정상적으로 매핑되어 있는지 확인

vi /etc/hosts
  • 서버 호스트명을 확인 후 호스트 이름을 등록 해줍니다. 차후 HA (Master,Slave)  구성 시 설정할때 필요합니다.
hostname
cubrid

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.0.179 cubrid
  • java8 설치 진행
yum list java*jdk-devel // 자바 패키지 목록 확인
java-1.8.0-openjdk-devel.x86_64                        1:1.8.0.402.b06-2.el9                        appstream
java-11-openjdk-devel.x86_64                           1:11.0.22.0.7-2.el9                          appstream 
java-17-openjdk-devel.x86_64                           1:17.0.10.0.7-2.el9                          appstream 
java-21-openjdk-devel.x86_64                           1:21.0.2.0.13-1.el9                          appstream

yum install java-1.8.0-openjdk-devel.x86_64 // 자바 1.8 설치

 

큐브리드 다운로드 및 설치

  • https://ftp.cubrid.org/CUBRID_Engine/ 다운로드 링크로 가서 자신이 설치 할 버전에 맞는 CUBRID를 다운로드
  • 설치하는 방법은 다양하게 있지만 쉘스크립트를 통해 설치 진행 궁금한사항은 큐브리드 매뉴얼 참고
  • CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh 로 다운로드

  • 필자는 wget을 이용해 직접 서버에 다운로드
wget https://ftp.cubrid.org/CUBRID_Engine/10.1_latest/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh

# 파일 위치 (리눅스계정 : cubrid)
/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh
  • CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh 파일 실행 권한 부여 및 실행
# .sh 파일 실행 권한 부여
chmod 755 CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh

# .sh 실행
/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64.sh
  • 실행 후 아래 내용 확인 후 진행
# 라이센스 동의
Do you accept the license? [yN]: y

# 설치될 디렉토리 선택 Y 선택 시 "/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64" 위치에 설치, N 선택 시 "/home/cubrid" 위치에 설치하게된다.
By default the CUBRID will be installed in:
  "/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64"
Do you want to include the subdirectory CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64?
Saying no will install in: "/home/cubrid" [Yn]: Y

Using target directory: /home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64
# 동의하기
Since CUBRID broker and server versions should match, please make sure that you are running the same version if you operate them in separate machines.
Do you want to continue? [Yn] : Y
  • 설치가 완료되면 /home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64 경로에 폴더에 설치됨

 

큐브리드 환경변수 설정

  • 설치가 완료됬다면 /home/cubrid 내에 .cubrid.sh 파일이 생성됬는지 확인
cd $HOME
ls -al
-rw-r--r--.  1 cubrid cubrid      339 Mar 19 11:27 .cubrid.csh
-rw-r--r--.  1 cubrid cubrid      370 Mar 19 12:35 .cubrid.sh
  • CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64 폴더명을 CUBRID 로 변경
mv CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64 CUBRID
  • 폴더명 변경으로 .cubrid.sh 텍스트 편집기로 열어 아래 내용 수정
vi /home/cubrid/.cubrid.sh
# 아래 CUBRID 경로 수정
#CUBRID=/home/cubrid/CUBRID-10.1.8.7823-fa7db6b-Linux.x86_64
CUBRID=/home/cubrid/CUBRID
CUBRID_DATABASES=$CUBRID/databases
if [ "x${LD_LIBRARY_PATH}x" = xx ]; then
  LD_LIBRARY_PATH=$CUBRID/lib
else
  LD_LIBRARY_PATH=$CUBRID/lib:$LD_LIBRARY_PATH
fi
SHLIB_PATH=$LD_LIBRARY_PATH
LIBPATH=$LD_LIBRARY_PATH
PATH=$CUBRID/bin:$PATH
export CUBRID
export CUBRID_DATABASES
export LD_LIBRARY_PATH
export SHLIB_PATH
export LIBPATH
export PATH
  • cubrid.sh 수정이 완료 되고 설치 계정의 셸 로그인 스크립트에서 자동으로 호출하도록 .bash_profile를 수정
vi /home/cubrid/.bash_profile
# .bash_profile

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

# User specific environment and startup programs
# 맨 아래에 추가
. /home/cubrid/.cubrid.sh
  • source 명령어를통해 수정된 내용을 적용
source ~/.bash_profile
  • echo 명령어를 이용해 적용됬는지 확인
echo $CUBRID
/home/cubrid/CUBRID

 


 

CUBRID 실행하기

 

큐브리드 실행

  • 큐브리드를 실행 해준다.
cubrid service start
@ cubrid master start
++ cubrid master start: success
@ cubrid broker start
++ cubrid broker start: success
@ cubrid manager server start
++ cubrid manager server start: success
  • 정상적으로 실행되는지 확인
cubrid service status
  • cubrid service를 구동시킨 후 정상적으로 구동되었는지 grep으로 cub_* 프로세스들이 구동되어 있는지를 확인
ps -ef | grep cub_
cubrid     33239       1  0 09:30 pts/0    00:00:00 cub_master
cubrid     33242       1  0 09:30 ?        00:00:00 cub_broker
cubrid     33243       1  0 09:30 ?        00:00:00 query_editor_cub_cas_1
cubrid     33244       1  0 09:30 ?        00:00:00 query_editor_cub_cas_2
cubrid     33245       1  0 09:30 ?        00:00:00 query_editor_cub_cas_3
cubrid     33246       1  0 09:30 ?        00:00:00 query_editor_cub_cas_4
cubrid     33247       1  0 09:30 ?        00:00:00 query_editor_cub_cas_5
cubrid     33253       1  0 09:30 ?        00:00:00 cub_broker
cubrid     33254       1  0 09:30 ?        00:00:00 broker1_cub_cas_1
cubrid     33255       1  0 09:30 ?        00:00:00 broker1_cub_cas_2
cubrid     33256       1  0 09:30 ?        00:00:00 broker1_cub_cas_3
cubrid     33257       1  0 09:30 ?        00:00:00 broker1_cub_cas_4
cubrid     33258       1  0 09:30 ?        00:00:00 broker1_cub_cas_5
cubrid     33267       1  0 09:30 ?        00:00:00 cub_manager start
cubrid     33297   33145  0 09:30 pts/0    00:00:00 grep --color=auto cub_
  • DB 별 큐브리드 실행/종료
#실행
cubrid server start [디비명]
#종료
cubrid server stop [디비명]

 

 

큐브리드 오류 발생 시

  • 큐브리드 실행 시 "cubrid: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory" 메세지가 뜨면 오류가 날 경우
    1. CUBRID는 ncurses library를 필요로하고 현재 빌드 환경에서 ncurses5를 사용하기 때문에 ncurses6를 사용하는 시스템에서는 symbolic link를 생성 필요
    2. 보통은 $CUBRID/lib에 symbolic link를 만듭니다. 아래 명령어를 사용해 $CUBRID/lib 폴더에 symbolic link 생성
ln -s /lib64/libncurses.so.6 $CUBRID/lib/libncurses.so.5
ln -s /lib64/libform.so.6 $CUBRID/lib/libform.so.5
ln -s /lib64/libtinfo.so.6 $CUBRID/lib/libtinfo.so.5
  • $CUBRID/lib 폴더에 심볼릭 링크가 제대로 만들어졌는지 확인
cd $CUBRID/lib
ls -al
lrwxrwxrwx.  1 cubrid cubrid       19 Mar 19 14:05 libform.so.5 -> /lib64/libform.so.6
lrwxrwxrwx.  1 cubrid cubrid       22 Mar 19 14:05 libncurses.so.5 -> /lib64/libncurses.so.6
lrwxrwxrwx.  1 cubrid cubrid       20 Mar 19 14:05 libtinfo.so.5 -> /lib64/libtinfo.so.6

 

큐브리드 사용 포트

  • 큐브리드 외부 접근 시 포트 개방 필요
  • 큐브리드 사용 포트 표
구분 대상 장비 Linux 포트 Window 포트 방화벽
Single DB WEB/WAS Server 33000(TCP) 33000~33040(TCP) 개방
CUBRID Manager 30000(TCP)
8001(TCP)
30000~30040(TCP)
8001(TCP)
개방
CUBRID CMT 30000(TCP) 30000~30040(TCP) 개방
CUBRID HA WEB/WAS Server 33000(TCP) 33000~33040(TCP) 개방
CUBRID Manager 30000(TCP)
8001(TCP)
30000~30040(TCP)
8001(TCP)
개방
CUBRID CMT 30000(TCP) 30000~30040(TCP) 개방
Master/Slave
Server 양방향
1523(TCP)
7(TCP)
59901(UDP)
HA 기능 미지원 Linux : 개방
Window : 불필요
CUBRID Manager
사용자/관리자 PC
CUBRID Manager 30000(TCP)
8001(TCP)
30000~30040(TCP)
8001(TCP)
개방
CUBRID Migration Toolkit
사용자/관리자 PC
CUBRID CMT 30000(TCP) 30000~30040(TCP) 개방

 


 

CUBRID DB 생성

 

큐브리드 DB 생성

  •  DB를 생성할 디렉터리로 이동해서 DB를 직접 생성
cd $CUBRID_DATABASES
mkdir testdb
cd testdb
cubrid createdb --db-volume-size=128M --log-volume-size=128M testdb en_US
  • 생성하게되면 해당 디렉토리에 파일이 생성되고  databasess.txt 파일 내용에 추가 됨
cd $CUBRID_DATABASES/testdb
ls -al
drwxr-xr-x. 2 cubrid cubrid         6 Mar 20 12:31 lob
-rw-------. 1 cubrid cubrid 134217728 Mar 20 12:31 testdb
-rw-------. 1 cubrid cubrid 134217728 Mar 20 12:31 testdb_lgar_t
-rw-------. 1 cubrid cubrid 134217728 Mar 20 12:31 testdb_lgat
-rw-------. 1 cubrid cubrid       209 Mar 20 12:31 testdb_lginf
-rw-------. 1 cubrid cubrid       268 Mar 20 12:31 testdb_vinf

vi $CUBRID_DATABASES/databases.txt
#db-name        vol-path                db-host         log-path                lob-base-path
testdb          /home/cubrid/CUBRID/databases/testdb    localhost       /home/cubrid/CUBRID/databases/testdb    file:/home/cubrid/CUBRID/databases/testdb/lob

 


 

DB 자동 구동 및 큐브리드 자동 시작

 

DB 자동 구동

  • 부팅 시 생성한 DB가 구동되게 하려면 $CUBRID/conf/cubrid.conf 에서 다음을 수정
[service]
service=server, broker, manager
server=testdb #DB명

 

큐브리드 rc.local 자동 실행 설정

  • 부팅 시 rc.local로 자동 실행 설정
  • rc-local 데몬이 실행되어있는지 확인
systemctl status rc-local.service
○ rc-local.service - /etc/rc.d/rc.local Compatibility
     Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static)
     Active: inactive (dead)
       Docs: man:systemd-rc-local-generator(8)
  • 다음 2개(/etc/rc.local, /etc/rc.d/rc.local)의 파일 실행 권한 설정
# 권한 확인
ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 Jan 23 19:22 /etc/rc.local -> rc.d/rc.local
ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 474 Jan 23 19:22 /etc/rc.d/rc.local

# 권한 설정
chmod 777 /etc/rc.d/rc.local
ll /etc/rc.d/rc.local
-rwxrwxrwx. 1 root root 474 Jan 23 19:22 /etc/rc.d/rc.local
  • rc-local 데몬 enable
systemctl enable rc-local.service
  • WantedBy 설정이 안되있어 아래 내용과 함께 실행이 되지 않습니다.
e unit files have no installation config (WantedBy=, RequiredBy=, Also=,
Alias= settings in the [Install] section, and DefaultInstance= for template
units). This means they are not meant to be enabled or disabled using systemctl.
 
Possible reasons for having this kind of units are:
• A unit may be statically enabled by being symlinked from another unit's
  .wants/ or .requires/ directory.
• A unit's purpose may be to act as a helper for some other unit which has
  a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
  D-Bus, udev, scripted systemctl call, ...).
• In case of template units, the unit is meant to be enabled with some
  instance name specified.
  • vi 텍스트 편집기를 이용해 /usr/lib/systemd/system/rc-local.service 아래 내용을 추가
# 추가할 내용
[Install]
WantedBy=multi-user.target

# vi 텍스트 편집기 통해서 수정해줍니다.
vi /usr/lib/systemd/system/rc-local.service
#  SPDX-License-Identifier: LGPL-2.1-or-later
#
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# This unit gets pulled automatically into multi-user.target by
# systemd-rc-local-generator if /etc/rc.d/rc.local is executable.
[Unit]
Description=/etc/rc.d/rc.local Compatibility
Documentation=man:systemd-rc-local-generator(8)
ConditionFileIsExecutable=/etc/rc.d/rc.local
After=network-online.target
Wants=network-online.target

[Service]
Type=forking
ExecStart=/etc/rc.d/rc.local start
TimeoutSec=infinity
RemainAfterExit=yes
GuessMainPID=no

# 추가 내용
[Install]
WantedBy=multi-user.target
  • 다시 rc-local 데몬 enable
systemctl enable rc-local.service
Created symlink /etc/systemd/system/multi-user.target.wants/rc-local.service → /usr/lib/systemd/system/rc-local.service.

systemctl list-unit-files |grep rc.local
rc-local.service                             enabled         disabled
  • 정상적으로 등록되어 재부팅 시 rc.local 파일에 등록된 스크립트가 실행

 

자동 실행 될 수 있도록 rc.local 등록할 스크립트 작성

  • 큐브리드가 부팅 후 자동 실행 될 수 있도록 스크립트를 작성 스크립트파일을 생성해 작성해도되지만 필자는 rc.local에 직접 작성
  • 큐브리드가 설치된 계정을 통해 실행 스크립트 작성
vi /etc/rc.d/rc.local

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local

# cubrid 자동 실행
# su - [큐브리드 설치된 계정]
su - cubrid << EOF
cubrid service start
  • 설정이 완료되면 재부팅 후 제대로 실행됬는지 확인
cubrid service status
@ cubrid master status
++ cubrid master is running.
@ cubrid server status
 Server testdb (rel 10.1, pid 1476)
@ cubrid broker status
  NAME                   PID  PORT    AS   JQ                  TPS                  QPS   SELECT   INSERT   UPDATE   DELETE   OTHERS     LONG-T     LONG-Q         ERR-Q  UNIQUE-ERR-Q  #CONNECT   #REJECT 
===========================================================================================================================================================================================================
* query_editor          1747 30000     5    0                    0                    0        0        0        0        0        0     0/60.0     0/60.0             0             0         0         0 
* broker1               1758 33000     5    0                    0                    0        0        0        0        0        0     0/60.0     0/60.0             0             0         0         0 
@ cubrid manager server status
++ cubrid manager server is running.

 


 

마치며

 

큐브리드 자동 실행 관련해서 공식 문서보고 했지만 잘안되는 부분이있어 재부팅 시 스크립트로 자동실행되게 작업 했습니다.

 

[CUBRID 공식 문서]

 

 


 

신고공유스크랩

댓글 0

댓글 쓰기
에디터 모드

신고

"님의 댓글"

이 댓글을 신고하시겠습니까?

댓글 삭제

"님의 댓글"

이 댓글을 삭제하시겠습니까?

공유

퍼머링크