운영을 하다 보면 DB 데이터의 경로를 변경해야 하는 경우가 있는데요, CUBRID의 경우 DB 백업/복구를 통해 DB 데이터의 경로 변경을 지원하고 있습니다.
하지만 LOB 데이터는 DB 내부에 저장되지 않고, 외부 파일 시스템에 파일 형태로 저장되고 DB 내부에는 해당 파일의 위치정보만 저장되기 때문에 DB 백업/복구 시에는 LOB 데이터 파일에 대한 별도 관리가 필요합니다.
이 글에서는 DB 데이터 경로변경에 더불어 LOB 데이터의 경로를 변경할 수 있도록 가이드하려고 합니다.(9.3기준)
1. 테스트 정보
- DB 명 : testdb
- 기존 경로 : /home/cubrid/CUBRID/databases/testdb
- 변경 경로 : /disk/testdb
2. 경로 변경 절차
1) 서비스 종료
$ cubrid service stop
@ cubrid server stop: testdb
Server testdb notified of shutdown.
This may take several minutes. Please wait.
++ cubrid server stop: success
@ cubrid broker stop
++ cubrid broker stop: success
@ cubrid manager server stop
++ cubrid manager server stop: success
@ cubrid master stop
++ cubrid master stop: success
2) DB 백업 (백업 옵션은 매뉴얼 참조)
$ cubrid backupdb -D /disk/BACKUP/ -o backup.log -z --no-check testdb -S
Backup Volume Label: Level: 0, Unit: 0, Database testdb, Backup Time: Thu Jan 16 15:18:31 2020
3) $CUBRID/databases/databases.txt 파일 수정
- 변경될 경로로 vol-path(데이터 볼륨 경로), log-path(로그 볼륨 경로), lob-base-path(lob데이터 저장 경로)를 수정합니다.
$ vi $CUBRID/databases/databases.txt
#db-name vol-path db-host log-path lob-base-path
testdb /disk/testdb localhost /disk/testdb file:/disk/testdb/lob
4) DB 복구 (복구 옵션은 매뉴얼 참조)
- 복구 전 해당 경로를 미리 생성
- LOB 디렉터리도 미리 생성
- u 옵션을 필수적으로 사용(u옵션 : databases.txt 파일을 읽어서 해당 경로에 복구하도록 하는 옵션)
$ mkdir /disk/testdb
$ mkdir /disk/testdb/lob
$ cubrid restoredb -B /disk/BACKUP/ -u -o restore.txt testdb
CUBRID 9.3
5) 데이터 경로 확인
- DB 데이터 파일 및 LOB 경로 변경 확인
$ cubrid spacedb -S testdb
Space description for database 'testdb' with pagesize 16.0K. (log pagesize: 16.0K)
Volid Purpose total_size free_size Vol Name
0 GENERIC 512.0 M 509.6 M /disk/testdb/testdb
Space description for temporary volumes for database 'testdb' with pagesize 16.0K.
Volid Purpose total_size free_size Vol Name
LOB space description file:/disk/testdb/lob
6) DB 기동
$ cubrid server start testdb
@ cubrid master start
++ cubrid master start: success
@ cubrid server start: testdb
This may take a long time depending on the amount of recovery works to do.
CUBRID 9.3
++ cubrid server start: success
7) DB 내부에 저장되어 있는 기존 LOB 데이터 경로 확인
$ csql -u dba testdb@localhost
CUBRID SQL Interpreter
Type `;help' for help messages.
csql> select * from test_tbl;
=== <Result of SELECT Command in Line 1> ===
i j
===================================
1 file:/home/cubrid/CUBRID/databases/testdb/lob/ces_658/test_tbl.00001579155238194895_7622
2 file:/home/cubrid/CUBRID/databases/testdb/lob/ces_043/test_tbl.00001579155241496030_9788
3 file:/home/cubrid/CUBRID/databases/testdb/lob/ces_051/test_tbl.00001579155244055456_9598
3 rows selected. (0.284038 sec) Committed.
1 command(s) successfully processed.
8) LOB 데이터 경로 변경
- 기존 LOB 경로에 저장되어 있던 LOB 데이터 파일들이 반드시 존재해야 됨
- CLOB의 경우 clob_to_char 함수를, BLOB의 경우 blob_to_bit 함수를 사용
csql> update test_tbl set j=clob_to_char(j);
3 rows affected. (0.195812 sec) Committed.
csql> update test_tbl2 set j=blob_to_bit(j);
3 rows affected. (0.008269 sec) Committed.
9) LOB 데이터 경로 변경 확인
csql> select * from test_tbl;
=== <Result of SELECT Command in Line 1> ===
i j
===================================
1 file:/disk/testdb/lob/ces_401/test_tbl.00001579156454712630_8701
2 file:/disk/testdb/lob/ces_520/test_tbl.00001579156454713722_8117
3 file:/disk/testdb/lob/ces_541/test_tbl.00001579156454714721_4275
3 rows selected. (0.007592 sec) Committed.
1 command(s) successfully processed.
10) 변경된 경로에 실제로 LOB데이터가 생성되었는지 확인
$ ls -l /disk/testdb/lob/*
/disk/testdb/lob/ces_002:
total 4
-rw-------. 1 cubrid cubrid 3 Jan 16 15:34 abc.00001579156443619562_9498
/disk/testdb/lob/ces_092:
total 4
-rw-------. 1 cubrid cubrid 6 Jan 16 15:35 test_tbl2.00001579156554249465_0008
/disk/testdb/lob/ces_310:
total 4
-rw-------. 1 cubrid cubrid 6 Jan 16 15:35 test_tbl2.00001579156554247635_2273
/disk/testdb/lob/ces_401:
total 4
-rw-------. 1 cubrid cubrid 4 Jan 16 15:34 test_tbl.00001579156454712630_8701
/disk/testdb/lob/ces_520:
total 4
-rw-------. 1 cubrid cubrid 4 Jan 16 15:34 test_tbl.00001579156454713722_8117
/disk/testdb/lob/ces_541:
total 4
-rw-------. 1 cubrid cubrid 4 Jan 16 15:34 test_tbl.00001579156454714721_4275
/disk/testdb/lob/ces_633:
total 4
-rw-------. 1 cubrid cubrid 6 Jan 16 15:35 test_tbl2.00001579156554248844_8435