Background Image
제품 여행
2020.05.25 10:56

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

조회 수 282 추천 수 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
번호 분류 제목 글쓴이 날짜 조회 수 추천 수
127 오픈소스 이야기 ANTLR, StringTemplate를 사용해서 PL/SQL을 CUBRID Java SP로 변환하기 file 주영진 2020.12.31 214 0
126 제품 여행 [CUBRID inside] Query Process란? file 박세훈 2020.12.24 193 0
125 제품 여행 파일이 정상인가 ? file 윤준수 2020.08.29 509 1
124 제품 여행 데이터 베이스 접근 제어와 CUBRID file 윤준수 2020.08.23 554 0
123 제품 여행 가벼운 웹 프레임워크 Flask위에 CUBRID 얹기 file 윤준수 2020.08.12 1642 1
122 제품 여행 DBeaver Database Tool 큐브리드 사용하기 file 정만영 2020.07.09 2262 0
» 제품 여행 named pipe를 활용한 압축 백업하기. 1 file HiCLASS 2020.05.25 282 0
120 제품 여행 CUBRID Internal: 큐브리드의 저장공간관리 (DIsk Manager, File Manager) file 김재은 2020.03.31 576 1
119 제품 여행 linux버전 CUBRID 기본 설치 디렉터리 바꾸기 file HiCLASS 2020.01.21 536 6
118 제품 여행 LOB 데이터 경로 변경하기 허서진 2020.01.16 721 0
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 13 Next
/ 13

Contact Cubrid

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