Background Image
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

윈도우즈 환경에서 CUBRID 사용시 주기적인 "데이터베이스정리" 를 수행하고자 한다면 현재 큐브리드 매니져에서는 지원하지 않고 있으므로 배치화일로 작성하여 윈도우즈의 "예약작업"에 등록하여 수행할 수가 있습니다.
그러나 CUBRID 데이터베이스 서버는 명령어를 이용하여 데이터베이스 서버를 구동시 명령어 창이 닫히게 되면 데이터베이스 서버가 종료되는 문제를 가지고 있습니다. 따라서 큐브리드 매니져를 이용하여 데이터베이스 서버를 구동시켜야만 합니다
.

배치화일과 같이 명령어를 이용하여 데이터베이스 서버를 재구동하고자 한다면, CUBRID 서비스 자체를 구동시키고 종료시키는 ctrlService.exe(CUBRID 설치 디렉토리의 bin에 위치)
 를 이용해야 합니다. 이를 이용하면 배치화일로 데이터베이스 서버를 종료 시킨후 몇가지 작업을 한 후 다시 재구동을 시킬 수가 있습니다.


ctrlService 사용하기

ctrlService
CUBRID service 를 구동시키거나, 종료시키는 역활을 합니다. 데이터베이스 서버를 직접 구동시키지는 않으며, 종료시에 구동되어 있는 데이터베이스 서버를 종료시켜 줍니다. 따라서 데이터베이스 서버를 CUBRID service 구동시 자동으로 구동시키기 위하여는 한가지 설정이 필요합니다.
CUBRID
설정화일은 cubrid.conf(CUBRID 설치 디렉토리의 conf에 위치)화일에서 데이터베이스 서버를 service 구동시 같이 구동시키기 위한 설정값을 수정하면 됩니다. 기본 설정은 막혀있으므로 줄 첫부분의 #을 제거하고 아래와 같이 수정하면 됩니다. 데이터베이스 이름을 demodb로 가정하면
,
server=demodb
로 수정하여 저장하면, 이후 CUBRID service 구동시 demodb 는 자동으로 구동되게 됩니다.

또한 ctrlService CUBRID service 종료시 데이터베이스가 구동되어 있으면 데이터베이스 서버를 종료시키는데 데이터베이스 서버가 종료될때까지 기다리지는 않습니다. , 데이터베이스 서버를 종료시키는 명령만 수행시킨후 ctrlService가 종료되므로 ctrlService 가 종료되었다고 해서 바로 데이터베이스 서버가 종료된 것은 아닙니다. 데이터베이스 서버 종료시에는 수초가 소요될 수 있습니다. 따라서 정상적으로 종료되었는지를 확인 후 다음 작업을 진행시켜야 합니다
.
ctrlService
에서는 어떤 정보를 주지 않으므로 별도로 데이터베이스 서버가 종료되었는지를 확인해야 합니다. 윈도우에 있는 명령어중 구동되어 있는 프로그램을 확인하는 명령이 tasklist 라고 있습니다. 이를 이용하여 수행중인 프로그램중 CUBRID 관련 명령어를 찾아보면 됩니다. 종료시에는 CUBRID master (cub_master.exe)가 가장 나중에 종료되므로 이를 확인하면 됩니다.

따라서 tasklist 를 통해 얻어진 내용중 cub_master.exe 가 있는지를 찾아보면 되며, 이는 윈도우즈 명령중 findstr 을 사용하면 됩니다.

아래에 서비스 종료여부를 판단하는 부분에 대한 스크립트를 정리하였습니다. 참고로 ping 은 네트웤 체크를 위해서 사용하는 것은 아니고 1초 간격으로 체크하는 것을 응용하여 약 1초간의 시간 지연을 가지기 위해서 ping 을 사용하였습니다. 프로그램 상에서 계속 확인을 하게 되면 CPU 를 계속 하용하여 성능적으로는 좋지 않기 때문에, OS에서는 sleep(주어진 시간만큼 기다림) 이라는 명령을 보통 제공하는데 최근 윈도우즈에서는 이 sleep 이 없어졌습니다. 그래서 sleep 대신 사용한 것입니다.

%CUBRID%binctrlService -stop
:CHECK_STOP
ping -n 2 -w 1 localhost > null
tasklist | findstr cub_master.exe
if %ERRORLEVEL% EQU 0 goto CHECK_STOP


@echo CUBRID stopped!!!


서비스 구동시에는 가장 마지막으로 구동되는 프로그램이 매니져 서버이므로 관련 프로그램(cub_auto.exe)의 구동을 확인하면 됩니다. 그런데 데이터베이스 서버가 구동되는데는 시간이 좀더 걸릴수 있으므로, 좀 더 확실하게 확인해야 합니다. 데이터베이스 관련 명령을 실행시켜보아 정상 동작되는지를 확인하면 됩니다. 간단히 데이터베이스 사용량을 확인하는 명령을 수행해 보도록 했으며, 이 프로그램이 정상 수행되면 0 을 리턴하므로 이 값을 가지고 정상 구동 여부를 판단하도록 하였습니다.

%CUBRID%binctrlService -start

:CHECK_START
ping -n 2 -w 1 localhost > null
tasklist | findstr cub_auto.exe
if %ERRORLEVEL% NEQ 0 goto CHECK_START


:CHECK_SPACE
ping -n 2 -w 1 localhost > null
cubrid spacedb -C demodb
if %ERRORLEVEL% NEQ 0 goto CHECK_SPACE

@echo CUBRID started!!!


데이터베이스 정리 자동화 하기

데이터베이스 정리와 관련된 CUBRID 명령어는 cubrid compactdb 이며 사용 방법은 다음과 같습니다.
cubrid compactdb <
데이터베이스 이름
>

따라서 위의 명령과 앞서 언급한 ctrlService 를 이용하여 아래와 같이 배치화일을 만들면 됩니다.

 

@echo off

%CUBRID%binctrlService -stop
:CHECK_STOP
ping -n 2 -w 1 localhost > null
tasklist | findstr cub_master.exe
echo %ERRORLEVEL%
if %ERRORLEVEL% EQU 0 goto CHECK_STOP

@echo CUBRID stopped!!!


@echo cubrid compactdb demodb
cubrid compactdb demodb
@echo compactdb finished!!!


%CUBRID%binctrlService -start
:CHECK_START
ping -n 2 -w 1 localhost > null
tasklist | findstr cub_auto.exe
if %ERRORLEVEL% NEQ 0 goto CHECK_START

:CHECK_SPACE
ping -n 2 -w 1 localhost > null
cubrid spacedb -C demodb
if %ERRORLEVEL% NEQ 0 goto CHECK_SPACE

@echo CUBRID started!!!


데이터베이스 백업 자동화 하기

백업일때는 조금 복잡합니다. 이전 백업본이 있는 경우 이에 대한 처리를 해야 합니다. 이전 백업본이 존재하는 경우 이의 처리에 대하여 물어오는데 자동화 작업에서는 답변을 할 수가 없으므로 옮겨주거나 삭제해야 합니다. CM에서는 이전 백업본에 대하여 stordold 라는 디렉토리로 옮겨놓고 백업을 수행합니다. 이 작업을 배치화일 작성시 추가해 주어야 합니다. 또한 몇가지 옵션들을 부여하는데 이를 백업의 명령어 옵션으로 부여해야 합니다. 주로 사용되는 옵션은 다음과 같습니다.

-D <백업디렉토리> : 백업화일이 만들어질 디렉토리 지정

-r                         : 로그 아카이브 제거

-l <0|1|2>              : 백업 레벨 지정, 0이 풀백업, 1, 2는 증분 백업

-S                         : off-line 백업, 즉 서버 중지후 백업 수행
-z
                    : 압축 백업 수행


관련된 내용을 포함하여 배치화일을 만들면 아래와 같습니다.
주의할 점은 백업 디렉토리와 백업 디렉토리 아래 storeold 라는 디렉토리는 미리 만들어 놓아야 합니다.

 
@echo off

set BACKUP_DIR=C:backup
move %BACKUP_DIR%* %BACKUP_DIR%storeold

%CUBRID%binctrlService -stop
:CHECK_STOP
ping -n 2 -w 1 localhost > null
tasklist | findstr cub_master.exe
echo %ERRORLEVEL%
if %ERRORLEVEL% EQU 0 goto CHECK_STOP

@echo CUBRID stopped!!!

@echo
cubrid backupdb demodb
cubrid backupdb -S -r  -z -l 0 -D %BACKUP_DIR%a demodb
@echo backupdb finished!!!

%CUBRID%binctrlService -start
:CHECK_START
ping -n 2 -w 1 localhost > null
tasklist | findstr cub_auto.exe
if %ERRORLEVEL% NEQ 0 goto CHECK_START

:CHECK_SPACE
ping -n 2 -w 1 localhost > null
cubrid spacedb -C demodb
if %ERRORLEVEL% NEQ 0 goto CHECK_SPACE

@echo CUBRID started!!!

 


List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
7 Windows Windows 에 설치 된 JRE 설치 위치 확인 하기. file 성진 2015.05.28 12567
» Windows 윈도우즈 환경에서 배치화일을 이용하여 백업 또는 데이터베이스 정리 수행하기 남재우 2010.03.03 27479
5 Windows windows 환경에서 여러버젼의 CUBRID 설치하여 사용하기 4 남재우 2009.09.16 26187
4 Windows CUBRID2008R2.0 Windows BACKUP 자동화 설정하기 정만영 2009.08.17 27942
3 Windows CUBRID2008 R2.0 Tutorial (Windows) cubebridge 2009.08.17 27337
2 Windows eclipse에서 python 및 CUBRID broker_log_top 사용하기 cubebridge 2009.07.28 27271
1 Windows CUBRID 2008 사용법 admin 2008.11.21 47933
Board Pagination Prev 1 Next
/ 1

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales