
R3.x 마이그레이션
조회 수 3361 추천 수 0 2010.09.03 03:15:39R3.x Database Migration
기존의 CUBRID 2008 R3.x(이하 R3.x) 이하 버전에서 데이터베이스를 생성하였다면 R3.x 업그레이드 시 반드시 업그레이드를 수행하여야 한다.
업그레이드를 수행하기 위해서는 R3.x 이전 버전에서 unload를 수행하여 파일로 DB를 dump하고 R3.x 버전으로 업그레이드 후 데이터베이스를 생성하고 이전 버전에서 dump된 파일을 load하는 방법이 있으며, R3.x에서 제공하는 migration 도구를 이용하여 데이터베이스를 업그레이드 하는 방법이 있는데 이런 경우 이전 버전에서 데이터베이스백업 하는 것을 권장한다.
데이터베이스를 R3.x으로 업그레이드하는 방법은 위에서 언급한 것과 같이 2가지 방법이 있으며, 우선 migration도구를 사용하여 업그레이드를 진행을 한다. 만약 수행이 안될 경우 언로드/로드 방법을 이용하여 업그레이드를 수행하여야 한다.
마이그레이션도구를 사용하여 업그레이드가 실패할 경우는 오랜시간 데이터베이스를 운영하는 상태에서 관리가 되지 않을 경우가 대부분이다. 이런 상태일 경우 언로드/로드를 이용하여 데이터베이스 업그레이드를 권장한다.
또한, 언로드/로드방법은 데이터베이스의 경로, 크기, garbage데이터정리 등 데이터베이스정리를 할 수 있므로 CUBRID 업그레이드와 동시에 진행하는 것이 좋다.
주의사항
R3.x에서 예약어가 추가되었으므로 아래와 같이 첨부한 check_reserved.sql 스크립트를 수행하여 스키마를 확인한다.
//check_reserved.sql 파일이 있는 경로에서 수행
//demodb는 R3.x로 마이그레이션 하기 위한 데이터베이스 이름
-bash-3.2$ csql -u dba demodb -S -i check_reserved.sql
=== <Result of SELECT Command in Line 1> ===
R30_new_reversed_keyword
======================
{'database', 'day_millisecond',............
=== <Result of SELECT Command in Line 50> ===
object name from_table from_method_or_storedproc_or_trigger
===============================================================================
'table' 'duplicate' '' ''
'column' 'rollup' 'duplicate' ''
출력결과의 object항목에 위 예와 같이 duplication 테이블과 roolup 컬럼이 R3.x예약어에 포함됨을 확인 할 수 있다.
마이그레이션도구를 사용할 경우 문제는 없으나, 언로드/로드를 수행하여 데이터베이스를 업그레이드 할 경우 언로드 시 --use-delimiter 옵션을 부여하여 수행한다.
또한, 응용에서 해당 예약어가 사용되는 질의가 있을 경우 큰따옴표( " ), 대괄호( ), 그레이브 부호( ` )를 사용하여 수행하여야 한다.
※ 릴리스노트 R3.x를 참조
http://www.cubrid.com/zbxe/bbs_developer_manual/69825
※ csql사용법은 메뉴얼을 참조
http://www.cubrid.com/online_manual/cubrid_830b/csql/csql_sessioncommand.htm
마이그레이션 전 수행사항
CUBRID서비스 종료
마이그레이션을 하기 위해서는 아래와 깉아 서비스 구동을 종료하여야 한다.
//cubrid service stop 명령을 이용하여 서비스를 종료 시킨다.
-bash-3.2$ cubrid service stop
@ cubrid broker stop
++ cubrid broker stop: success
@ cubrid manager server stop
++ cubrid manager server stop: success
@ cubrid master stop
++ cubrid master stop: success
※ 큐브리드 온라인 도움말 서비스 구동 및 종료 참조
http://www.cubrid.com/online_manual/cubrid_830b/admin/admin_service_conf_start.htm
데이터베이스 백업수행
R3.x 마이그레이션 작업의 실수가 발생할 경우를 대처하기 위해 기존의 데이터베이스를 아래와 같이 백업한다.
//demodb는 마이그레이션을 하기 위한 데이터베이스 이름
-bash-3.2$ cd $HOME
//Backup_dir은 백업을 수행하는 공간으로 데이터베이스의 크기를 고려하여 여유공간에 수행
-bash-3.2$ mkdir Backup_dir
-bash-3.2$ cd Backup_dir
//backupdb 명령어를 수행하여 백업을 수행
-bash-3.2$ cubrid backupdb -D $HOME/Backup_dir -S --no-check -z demodb
Backup Volume Label: Level: 0, Unit: 0, Database demodb, Backup Time: Tue Aug ....
※ 온라인 메뉴얼 테이터베이스 백업 참조
http://www.cubrid.com/online_manual/cubrid_830b/admin/admin_br_backup.htm
데이터베이스 사용공간확인
데이터베이스 사용공간확인을 확인하는 이유는 unload/load를 사용하여 마이그레이션을 할 경우
데이터베이스의 크기를 확인하여 R3.x 데이터베이스를 생성해야 하기 때문이다.
//cubrid spacedb명령을 이용하여 demodb공간 확인
-bash-3.2$ cubrid spacedb -S demodb
Space description for database 'demodb' with pagesize 4096. (log pagesize: 4096)
Volid Purpose total_pages free_pages Vol Name
0 GENERIC 5000 4728 /home/cubrid/DB/demodb
1 DATA 50000 19577 /home/cubrid/DB/demodb_x001
2 INDEX 20000 9404 /home/cubrid/DB/demodb_x002
3 TEMP 20000 19997 /home/cubrid/DB/demodb_x003
-------------------------------------------------------------------------------
4 95000 53706
Space description for temporary volumes for database 'demodb' with pagesize 4096.
Volid Purpose total_pages free_pages Vol Name
위 예와 같이 데이터베이스 및 log page가 4Kbyte단위로 구성된 것을 확인 할 수 있다.
다음은 각볼류별 크기를 구한 것이다.
GENERIC볼륨의 크기는 5,000 page(20Mbyte)
DATA볼륨의 크기는 50,000 page(200Mbyte)
Index볼륨 20,000 page(80Mbyte)
TEMP볼륨 20,000 page(80Mbyte)
다음은 로그의 크기를 확인하는 방법이다.
//databases.txt 파일을 확인하여 log의 경로가 /log/cubrid/DB 임을 확인
-bash-3.2$ cat $CUBRID_DATABASES/databases.txt
#db-name vol-path db-host log-path
demodb /home/cubrid/DB localhost /log/cubrid/DB
//demodb의 로그크기가 20Mbyte(5,000page) 확인
-bash-3.2$ ls -l /log/cubrid/DB/demodb_lgat
-rw------- 1 cubrid cubrid 20480000 9월 1 15:23 demodb_lgat
※ 온라인 메뉴얼 테이터베이스 사용공간확인 참조
http://www.cubrid.com/online_manual/cubrid_830b/admin/admin_db_space.htm
마이그레이션도구를 사용하는 방법
CUBRID R3.x 업그레이드
마이그레이션도구를 사용하기 위해서는 R3.x 버전을 설치하여야 한다.
CUBRID 업그레이드 기술문서를 참조하여 R3.x로 업그레이드를 수행한다.
migrate_r30
마이그레이션을 하기 아래 명령어를 수행한다.
//마이그레이션 대상 데이터베이스는 demodb이다.
-bash-3.2$ migrate_r30 demodb
CUBRID 마이그레이션: 8.2.2 to 8.3.0
start to fix volume header
start to fix system classes
db_index_key class was fixed.
db_trig's query spec was changed.
BLOB, CLOB type was added.
마이그레이션 success
//R2.2버전에서 R3.x 버전으로 마이그레이션이 성공한 걸 확인 할 수 있다.
언로드/로드를 이용한 데이터베이스 업그레이드
데이터베이스 언로드
데이터베이스 언로드는 데이터베이스내의 정보들을 파일로 dump하는 방법이므로 데이터베이스의
크기확인에서 DATA영역크기 정도의 여유 disk공간이 필요할 수 있다.
또한, hash file의 생성으로 그 이상의 여유공간이 필요할 수도 있다.
R3.x에서 추가된 예약어가 존재할 수 있으므로 데이터베이스내에 정의된 스키마에 대하여 따옴표( " ) 붙이
는 옵션을 사용하여 언로드를 수행한다.
//마이그레이션을 하기 위한 디렉토리를 생성한다.
-bash-3.2$ mkdir migration
-bash-3.2$ cd migration
-bash-3.2$ cubrid unloaddb -S --use-delimiter demodb -v
-------------------------------+--------------------------------
Class Name | Total Instances
-------------------------------+--------------------------------
glo_name | 0 (100% / 0%)
glo_holder | 0 (100% / 0%)
glo | 0 (100% / 0%)
stadium | 141 (100% / 0%)
code | 6 (100% / 0%)
nation | 215 (100% / 1%)
event | 422 (100% / 4%)
athlete | 6677 (100% / 38%)
participant | 916 (100% / 43%)
이하 생략.........
데이터베이스내의 가지고 있는 정보에 의해 schema, objects, indexs, trigger, *.lo 파일이 생성된다.
demodb에 lo파일을 제외한 모든 정보가 있을 경우 생성된 예이다.
-bash-3.2$ ls -l
-rw------- 1 cubrid cubrid 63 8월 31 19:09 demodb_indexes
-rw------- 1 cubrid cubrid 883051 8월 31 19:09 demodb_objects
-rw------- 1 cubrid cubrid 5922 8월 31 19:09 demodb_schema
-rw------- 1 cubrid cubrid 188 8월 31 19:09 demodb_trigger
//demodb_unloaddb.log 파일은 언로드를 수행한 로그파일이다.
-rw------- 1 cubrid cubrid 1054 8월 31 19:09 demodb_unloaddb.log
※ 온라인 메뉴얼 테이터베이스 내보내기 참조
http://www.cubrid.com/online_manual/cubrid_830b/admin/admin_migration_unload.htm
CUBRID R3.x 업그레이드
R3.x 버전을 설치하여 새로운 데이터베이스를 생성하여야 한다.
CUBRID 업그레이드 기술문서를 참조하여 R3.x로 업그레이드를 수행한다.
데이터베이스 생성
본 문서의 선 수행항목에서 확인된 데이터베이스사용공간 확인으로 R3.x버전의 데이터베이스를 생성한다.
데이터베이스를 생성하기 위하여 데이터베이스볼륨 및 log경로를 정해야 한다.
기존 데이터베이스와 동일한 경로 및 동일 데이터베이스이름으로 생성할 경우 replcace옵션(-r)을 사용하여
생성한다.
아래 예는 동일한 경로에 동일이름으로 데이터베이스를 생성하는 예이다.
//cubrid createdb명령을 이용하여 데이터베이스를 생성(GENERIC볼륨과 log의 크기는
default로 설정되어 있으므로 별도의 옵션을 부여하지 않는다.)
-bash-3.2$ cubrid createdb -r -F /home/cubrid/DB -L /log/cubird/DB demodb
//cubrid addvoldb 명령을 이용하여 demodb의 볼륨 추가
-bash-3.2$ cubrid addvoldb -S -p data demodb 50000
-bash-3.2$ cubrid addvoldb -S -p index demodb 20000
-bash-3.2$ cubrid addvoldb -S -p temp demodb 20000
※ 온라인 메뉴얼 데이터베이스 생성 참조
http://www.cubrid.com/online_manual/cubrid_830b/admin/admin_db_create_create.htm
데이터베이스 로드 수행
위에서 언로드 수행한 dump파일을 이용하여 새로 생성한 데이터베이스에 로드를 수행한다.
아래 예와같이 스키마/오브젝트/인덱스/트리거 순으로 로드를 반드시 수행해야 한다.
//스키마로드 수행
-bash-3.2$ cubrid loaddb -u dba -s demodb_schema demodb
Start schema loading.
Total 52 statements executed.
Schema loading from demodb_schema finished.
Statistics for Catalog classes have been updated.
//objects(데이터)로드 수행
-bash-3.2$ cubrid loaddb -u dba -d demodb_objects -c 5000 demodb
Start object loading.
Total 19202 objects inserted.
//indexes로드 수행
-bash-3.2$ cubrid loaddb -u dba -i demodb_indexes demodb
Start index loading.
Total 2 statements executed.
Index loading from demodb_indexes finished.
//trigger로드 수행
-bash-3.2$ cubrid loaddb -u dba -i demodb_trigger demodb
Start index loading.
Total 3 statements executed.
Index loading from demodb_trigger finished.
※ 온라인 메뉴얼 데이터베이스 가져오기 참조
http://www.cubrid.com/online_manual/cubrid_830b/admin/admin_migration_load.htm
마이그레이션 완료 후 수행 사항 및 고려 사항
CUBRID 서비스 구동
//cubrid service start 명령을 이용하여 서비스를 구동 시킨다.
-bash-3.2$ cubrid service start
@ cubrid master start
++ cubrid master start: success
@ cubrid broker start
++ cubrid broker start: success
//demodb 구동
-bash-3.2$ cubrid server demodb start
@ cubrid server start: demodb
This may take a long time depending on the amount of recovery works to do.
CUBRID 2008 R3.0……
++ cubrid server start: success
※ 큐브리드 온라인 도움말 서비스 구동 및 종료 참조
http://www.cubrid.com/online_manual/cubrid_830b/admin/admin_service_conf_start.htm
고려사항
마이그레이션이 완료 된 후 다음과 같이 CUBRID관련 사항을 확인 및 수정하여야 한다.
* 데이터베이스 관련 파라미터 설정
* 데이터베이스 백업 정책 수립 및 설정