제품 여행

LOB 데이터 경로 변경하기

by 허서진 posted Jan 16, 2020

운영을 하다 보면 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