Background Image
제품 여행
2020.05.25 10:56

named pipe를 활용한 압축 백업하기.

조회 수 1345 추천 수 0 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

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

작년 12월 18일에 CUBRID 10.2가 릴리즈 되었다.

자세한 링크는 다음과 같다. https://www.cubrid.com/3824761

 

이번 버전부터 backup 시 named pipe 를 활용 할 수 있다.

 

Named Pipe

| 파이프를 이용해 명령들을 연결하여 사용하거나 명령, 프로세스 치환을 사용하면 명령 실행 중에 자동으로 pipe 가 생성되어 사용된 후 사라지게 되는데요.

이때 생성되는 파이프를 이름이 없다고 해서 unnamed pipe 또는 anonymous pipe 라고 합니다. 이에 반해 named pipe 는 직접 파이프를 파일로 만들어 사용합니다.

 

자 이제 Named pipe를 생성해 보자.

 

1
2
3
$ mkfifo backup_pipe
$ ls -al backup_pipe
prw-rw-r--1 hiclass hiclass 0 May 25 10:40 backup_pipe

 

이렇게 생성해도 되고

 

1
2
3
$ mknod backup_pipe p
$ ls -al backup_pipe
prw-rw-r--1 hiclass hiclass 0 May 25 10:40 backup_pipe

 

이렇게 생성 할 수도 있다.

 

이제 생성한 파이프를 이용하여 백업을 해보자. 먼저 용량비교를 위해서 파이프를 사용하지 않은 일반 백업을 해 보겠다.

 

$ cubrid backupdb demodb --0 --D . -o bk.out
Backup Volume Label: Level: 0, Unit: 0, Database demodb, Backup Time: Mon May 25 10:30:50 2020
$ ll
total 251124
prw-rw-r--1 hiclass hiclass         0 May 25 10:29 backup_pipe
-rw-------1 hiclass hiclass      1000 May 25 10:30 bk.out
-rw-------1 hiclass hiclass 134217728 May 25 10:30 demodb
-rw-------1 hiclass hiclass   6304768 May 25 10:30 demodb_bk0v000
-rw-------1 hiclass hiclass        64 May 25 10:30 demodb_bkvinf
-rw-------1 hiclass hiclass 104857600 May 25 10:30 demodb_lgar_t
-rw-------1 hiclass hiclass 104857600 May 25 10:30 demodb_lgat
-rw-------1 hiclass hiclass       221 May 25 10:28 demodb_lginf
-rw-rw-r--1 hiclass hiclass      2414 May 25 10:28 demodb_loaddb.log
-rw-------1 hiclass hiclass       298 May 25 10:28 demodb_vinf
drwxrwxr-x. 2 hiclass hiclass         6 Mar 12 12:20 lob
 

 

-rw-------1 hiclass hiclass   6304768 May 25 10:30 demodb_bk0v000

백업 파일의 용량은 약 6.1M이다.

 

이제 생성한 Named pipe를 이용하여 압축 백업을 해 보자.

 

$ cubrid backupdb demodb --0 --D backup_pipe -o bk.out & cat backup_pipe | gzip > demodb_bk0v000.gz
[17483
Backup Volume Label: Level: 0, Unit: 0, Database demodb, Backup Time: Mon May 25 10:30:59 2020
[1]+  Done                    cubrid backupdb demodb --0 --D backup_pipe -o bk.out
$ ls -al
total 254172
drwxrwxr-x. 3 hiclass hiclass       236 May 25 10:30 .
drwxrwxr-x. 5 hiclass hiclass       103 May 25 10:28 ..
prw-rw-r--1 hiclass hiclass         0 May 25 10:30 backup_pipe
-rw-------1 hiclass hiclass      1000 May 25 10:30 bk.out
-rw-------1 hiclass hiclass 134217728 May 25 10:30 demodb
-rw-------1 hiclass hiclass   6304768 May 25 10:30 demodb_bk0v000
-rw-rw-r--1 hiclass hiclass   3117962 May 25 10:30 demodb_bk0v000.gz
-rw-------1 hiclass hiclass        61 May 25 10:30 demodb_bkvinf
-rw-------1 hiclass hiclass 104857600 May 25 10:30 demodb_lgar_t
-rw-------1 hiclass hiclass 104857600 May 25 10:30 demodb_lgat
-rw-------1 hiclass hiclass       221 May 25 10:28 demodb_lginf
-rw-rw-r--1 hiclass hiclass      2414 May 25 10:28 demodb_loaddb.log
-rw-------1 hiclass hiclass       298 May 25 10:28 demodb_vinf
drwxrwxr-x. 2 hiclass hiclass         6 Mar 12 12:20 lob
 

 

-rw-rw-r--1 hiclass hiclass   3117962 May 25 10:30 demodb_bk0v000.gz

백업 파일의 용량은 약 3M이다.

 

파이프를 이용한 백업은 위의 방법 외에도 ssh를 이용하여 다른 서버에도 다이렉트로 전송할 수 있다.

또한 위의 방법은 FIFO pipe를 이용하여 백업하기 때문에 물리적인 공간이 부족 할 때에도 활용 할 수 있다.

 

새로운 방법의 백업을 활용 하여 DBA역할에 도움이 되셨으면 한다.

 
  • ?
    주영진 2020.05.25 14:41

    Named Pipe를 사용해서 ssh로 다른 서버에 백업 파일을 생성하는 방법을 정리했습니다.

     

    Named Pipe를 생성하는 방법은 동일합니다.
    $CUBRID/databases에 backup 디렉터리를 만들고, mkfifo 명령어로 Named Pipe를 만들었습니다.

     

    1
    2
    [cubrid@youngjinj1 ~]$ mkdir -p $CUBRID /databases/backup && cd $_
    [cubrid@youngjinj1 backup]$ mkfifo youngjinj1.in
    cs

     

    이미 만들어져 있는 demodb 데이터베이스에 datetime 데이터 타입의 컬럼을 1개만 가지고 있는 t1 테이블이 있습니다.
    이 테이블에 sysdatetime 값을 입력하고, Named Pipe로 생성한 백업 파일이 복구가 잘 되는지 확인해보겠습니다.

     

    1
    2
    [cubrid@youngjinj1 databases]$ csql -u dba demodb  ---'insert into t1 values (sysdatetime); select * from t1;'
    02:10:57.854 PM 05 /25/2020
    cs

     

    youngjinj1 서버에서 아래 명령어를 실행해서 youngjinj2 서버에 백업 파일을 생성합니다.

     

    1
    2
    3
    4
    5
    [cubrid@youngjinj1 backup]$ cubrid backupdb -D youngjinj1.in  -o backup.log -z demodb  & cat youngjinj1.in | ssh cubrid@youngjinj2  'cat > /home/cubrid/demodb_bk0v000'
    [114776
    cubrid@youngjinj2's password: 
    Backup Volume Label: Level: 0, Unit: 0, Database demodb, Backup Time: Mon May 25 14:16:10 2020
    [1]+  Done                    cubrid backupdb -D youngjinj1.in -o backup.log -z demodb
    cs

     

    youngjinj2 서버에서 확인해보면 Named Pipe로 받은 백업 파일이 잘 생성되어 있습니다.

     

    1
    2
    [cubrid@youngjinj2 ~]$ ls -al demodb*
    -rw-rw -r--1 cubrid cubrid 22033408  5월 25  14:16 demodb_bk0v000
    cs

     

    youngjinj2 서버에서 백업 파일로 복구가 잘 되는지 확인해보겠습니다.
    $CUBRID/databases/databases.txt 파일에 복구할 데이터베이스에 대한 정보를 입력하고, 디렉터리를 생성합니다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    [cubrid@youngjinj2 ~]$ cat $CUBRID/databases /databases.txt
    #db-name        vol-path                db-host         log-path                lob-base-path
    demodb          /home /cubrid/CUBRID- 10.2.0.8797/databases /demodb        localhost        /home/cubrid /CUBRID-10.2. 0.8797/databases /demodb    file:/home /cubrid/CUBRID- 10.2.0.8797/databases /demodb/lob
    [cubrid@youngjinj2 ~]$ mkdir -p $CUBRID /databases/demodb && cd $_
    [cubrid@youngjinj2 demodb]$ ls -al
    total 0
    drwxrwxr-x. 2 cubrid cubrid   6  5월 25 14:18 .
    drwxrwxr-x. 3 cubrid cubrid  41  5월 25 14:15 ..
    cs

     

    restoredb 명령어로 데이터베이스를 복구하고, 시작합니다.
    csql로 t1 테이브의 데이터를 확인해보면 youngjinj1 서버에서 입력했던 값이 확인할 수 있습니다.

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    [cubrid@youngjinj2 demodb]$ cubrid restoredb -B ~ /demodb_bk0v000 -o restore.log  -u demodb
     
    CUBRID 10.2
     
    [cubrid@youngjinj2 demodb]$ cubrid server start demodb
    @ cubrid master start
    ++ cubrid master start: success
    @ cubrid server start: demodb
     
    This may take a long time depending on the amount of recovery works to do.
     
    CUBRID 10.2
     
    ++ cubrid server start: success
    [cubrid@youngjinj2 demodb]$ csql -u dba demodb  ---'select * from t1;'
    02:10:57.854 PM 05 /25/2020 
    cs

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
34 제품 여행 CM을 통해 SQL을 분석해보자. file 박동윤 2019.01.01 1289 0
33 알려요~ ‘시작하세요! 큐브리드’ 전자책 다운로드 1천건 돌파!!! file 정병주 2017.10.20 1282 0
32 오픈소스 이야기 오픈소스 DBMS 10년의 여정 file 정병주 2018.11.30 1243 0
31 시장 살펴보기 클라우드와 리눅스, 그리고 마이크로소프트 file 정병주 2017.09.06 1236 0
30 제품 여행 DB2, Informix, Sybase ASE, Postgres DBMS 데이터를 CUBRID로 이관하는 방안에 대하여... file 김창휘 2019.07.15 1206 0
29 제품 여행 [CUBRID inside] Query Process란? file 박세훈 2020.12.24 1146 1
28 나머지... JPA와 CUBRID 연동 가이드 file 김동민 2023.02.22 1118 3
27 제품 여행 CUBRID contribute의 두번째 걸음, CUBRID 디버깅 하기 file 박세훈 2018.08.09 1088 0
26 제품 여행 CUBRID Network Diagram (CUBRID Version 9.3, 10.1) file 윤준수 2019.11.02 1083 1
25 나머지... DBMS? 힐끗 다른 쪽을 바라봤다 file 조성룡 2018.12.28 995 0
Board Pagination Prev 1 ... 7 8 9 10 11 12 13 14 15 16 Next
/ 16

Contact Cubrid

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