CUBRID6.x, CUBRID7.x 에서 CUBRID2008로의 마이그레이션 방법입니다.
데이터베이스 재구성을 통하여 간단하게 마이그레이션하는 방법을 정리하였읍니다. 주의하실점은 버젼이 달라지면서 예약어가 추가되어 마이그레이션이 되지 않을 수도 있으니 유의하시기 바랍니다.
데이터베이스의 이름은 cub_db 로 가정하였읍니다.
또한 데이터베이스를 재구성하므로 반드시 dba의 암호를 알아야 합니다.
1. 서비스를 중지합니다.
(Windows) commdb -A
2. 사용중인 모든 데이터베이스를 unload 합니다. 임의의 디렉토리를 만들어서 수행하면 됩니다.
(Linux/UNIX/Windows) mkdir unload; cd unload; unloaddb -v cub_db
3. 정상적으로 unload 되었는지 확인합니다. 화면상에 unloaddb 종료 전에 에러 내용이 표시되는지 확인하면 됩니다.
4. 현재 사용중인 데이터베이스의 사용량을 확인하여, CUBRID2008 에서 생성할 데이터베이스의 크기를 산정합니다. 아래는 한 예로 각 용도(Purpose)별로 총 공간을 계산하고 남은 공간을 계산하여 남은 공간이 충분하지 않다면 각 용도별로 추가할 요량을 더하여 전체적으로 각 용량별 생성할 크기를 산정합니다.
(Linux/UNIX/Windows) spacedb -sa cub_db
Space description for database 'cub_db' with pagesize 4096.
Volid Purpose total_pages free_pages Vol Name
0 GENERIC 10000 9270 /home/DB/cub_db
1 DATA 500000 489486 /home/DB/cub_db_x001
2 INDEX 500000 497753 /home/DB/cub_db_x002
3 TEMP 500000 498094 /home/DB/cub_db_x003
-------------------------------------------------------------------------------
4 1510000 1494603
5. 만일을 위하여 현재 데이터베이스를 백업합니다. 데이터베이스가 위치하고 있는 디렉토리를 rename 하거나, 다른 디렉토리로 옮깁니다. 설치되어있는 디렉토리는 아래와 같이 확인할 수 있읍니다.
(Linux/UNIX) more $CUBRID_DATABASES/databases.txt
cub_db /home/DB hostname /home/DB/log
(Windows) type %CUBRID_DATABASES%ordblist.txt
cub_db c:DB hostname c:DBlog
위와 같을때 데이터베이스는 /home/DB/cub_db_vinf 나 c:DBcub_dbv 의 내용을 보면 화일들의 위치를 알수있읍니다.
6. CUBRID2008을 설치합니다. windows 의 경우 기존 제품을 제거하셔야 하며, Linux/UNIX 는 기존 제품이 설치되어있는 디렉토리를 rename 합니다. windows 의 경우 제거하기전 %CUBRID%admindbparm.ini 와 %CUBRID_BROKER%confcubrid_broker.conf 를 다른 곳에 복사하여 두기 바랍니다.
7. 복사해두었거나 변경한 디렉토리(Linux/UNIX 의 경우 CUBRID 디렉토리)의 sqlx.init(Windows의 경우 dbparm.ini) 의 내용과 새로이 설치된 CUBRID/conf/cubrid.conf 와 비교하여 다른 내용을 조정합니다. 마찬가지로 cubrid_broker.conf 의 내용도 조정합니다.
8. 산정한 데이터베이스의 크기를 기준으로 데이터베이스를 생성합니다. 생성할때 위치는 이전과 달라도 상관없읍니다. 데이터베이스 화일의 최대 크기는 2G(500,000page, page 크기 4K 기준) 이므로 산정한 크기가 이보다 크다면 2G 화일을 여러개 만들어야 합니다. 각 명령의 -F 는 데이터화일의 위치, -L은 로그화일의 위치이므로 생성할 위치를 지정하면 됩니다.
예1) generic 700,000, log 100,000
(Linux/UNIX) cubrid createdb -p 500000 -l 100000 -F /home/DB -L /home/DB/log cub_db
(Linux/UNIX) cubrid addvoldb -S -F /home/DB -p generic cub_db 200000
(Windows) cubrid createdb -p 500000 -l 100000 -F C:DB -L C:DBlog cub_db
(Windows) cubrid addvoldb -S -F C:DB -p generic cub_db 200000
예2) generic 10,000, data 700,000, index 500,000 temp 500,000
(Linux/UNIX) cubrid createdb -p 10000 -l 100000 -F /home/DB -L /home/DB/log cub_db
(Linux/UNIX) cubrid addvoldb -S -F /home/DB -p data cub_db 500000
(Linux/UNIX) cubrid addvoldb -S -F /home/DB -p data cub_db 200000
(Linux/UNIX) cubrid addvoldb -S -F /home/DB -p index cub_db 500000
(Linux/UNIX) cubrid addvoldb -S -F /home/DB -p temp cub_db 500000
(Windows) cubrid createdb -p 10000 -l 100000 -F C:DB -L C:DBlog cub_db
(Windows) cubrid addvoldb -S -F C:DB -p data cub_db 500000
(Windows) cubrid addvoldb -S -F C:DB -p data cub_db 200000
(Windows) cubrid addvoldb -S -F C:DB -p index cub_db 500000
(Windows) cubrid addvoldb -S -F C:DB -p temp cub_db 500000
9. 데이터베이스의 스키마를 등록합니다. 이전에 unload 를 수행한 디렉토리로 이동하여 작업을 진행합니다.
(Linux/UNIX) cubrid loaddb -u dba -s cub_db_schema cub_db
(Windows) cubrid loaddb -u dba -s cub_db.sch cub_db
10. 데이터베이스의 암호를 변경합니다. CUBRID7.x 와 CUBRID2008 은 인코딩방식이 변경되었으므로 convert_password 를 이용하여 암호를 변경합니다.
(Linux/UNIX) $CUBRID/compat/convert_password cub_db
(Windows) %CUBRID%convert_password cub_db
11. 데이터베이스의 데이터를 등록합니다. 만약 dba 의 암호가 설정되어있다면 다음 명령수행시 암호를 물어오면 dba 암호를 입력하면 됩니다.
단 등록할때 CUBRID2008 에서 일부 시스템 테이블이 제거되었으므로 --ignore-class-file 옵션을 사용해야 합니다. 제거된 테이블 목록은 아래와 같으며, 목록은 임의의 화일(예, iclass)로 만들어 저장합니다. 한 라인에 하나의 테이블을 기록합니다.
audio
slcaudio
agent
audio_agent
image
twod_image
threed_image
pbm
rawpbm
x11bitmap
(Linux/UNIX) cubrid loaddb -u dba --ignore-class-file=iclass -s cub_db_objects cub_db
(Windows) cubrid loaddb -u dba --ignore-class-file=iclass -s cub_db.obj cub_db
12. 데이터베이스의 인덱스를 등록합니다. 인덱스가 없으면 인덱스 화일(cub_db_indexes 또는 cub_db.idx) 이 없으므로 등록하지 않아도 됩니다.
(Linux/UNIX) cubrid loaddb -u dba -i cub_db_indexes cub_db
(Windows) cubrid loaddb -u dba -i cub_db.idx cub_db
13. 데이터베이스의 트리거를 등록합니다. 트리거가 없으면 트리거 화일(cub_db_trigger 또는 cub_db.trg) 이 없으므로 등록하지 않아도 됩니다.
(Linux/UNIX) cubrid loaddb -u dba -i cub_db_trigger cub_db
(Windows) cubrid loaddb -u dba -i cub_db.trg cub_db
14. 질의수행에 필요한 통계정보를 재구성합니다.
(Linux/UNIX/Windows) cubrid optimizedb cub_db
15. 서비스를 구동하여 사용하면 됩니다.
(Linux/UNIX/Windows) cubrid server start cub_db
데이터를 등록할때,
(Linux/UNIX) cubrid loaddb -u dba --ignore-class-file=iclass -s cub_db_objects cub_db
(Windows) cubrid loaddb -u dba --ignore-class-file=iclass -s cub_db.obj cub_db
에서, -s 가 아닌 -d 입니다.