Computer >> 컴퓨터 >  >> 프로그램 작성 >> 데이터 베이스

Vertica 데이터베이스 백업 및 복원

데이터 손상 또는 실수로 삭제된 경우 데이터를 복구할 수 있도록 데이터베이스 백업을 일상적인 유지 관리 작업으로 만드십시오. 이 게시물은 Vertica® 데이터베이스 백업 및 복원에 대해 설명합니다.

소개

분석 데이터베이스 관리 시스템인 Vertica는 대용량 데이터를 처리하도록 설계된 열 기반 스토리지 플랫폼으로, 리소스 집약적인 시나리오에서 빠른 쿼리 성능을 가능하게 합니다.

Vertica는 다음과 같은 이점을 제공합니다.

  • 기존 데이터베이스 관계형 데이터베이스 관리 시스템보다 쿼리 성능이 향상됩니다.
  • 고가용성을 제공합니다.
  • 일반 기업 서버에서 페타바이트 규모의 확장성을 제공합니다.

데이터베이스 백업 및 복구 메커니즘은 유지 관리 및 재해 복구 중 다운타임을 줄입니다.

데이터베이스 백업 및 복원

Vertica를 사용하면 핫 백업, 복원 지점이 무한정인 증분 복사본, 전체 데이터베이스 또는 데이터베이스의 하위 집합(스키마, 테이블 등)의 백업을 만들 수 있습니다. 다음 백업 수준을 사용할 수 있습니다.

  • 전체 수준 :이 수준에서는 전체 Vertica 데이터베이스를 백업 및 복원할 수 있습니다.
  • 증분 수준 :이 수준은 새 데이터 또는 변경된 데이터로만 구성된 후속 백업입니다.
  • 객체 수준 :이 레벨은 복원을 위한 오브젝트의 백업입니다.

Vertica는 전체 백업에서 특정 개체(예:스키마 및 테이블)를 복원할 수 있는 유연성과 세분화 수준을 제공합니다.

스냅샷

데이터베이스 스냅샷은 데이터베이스에 있는 모든 개체와 데이터의 일관된 이미지를 캡처합니다. 개체 수준 스냅샷에 포함할 데이터베이스 개체의 하위 집합을 선택할 수 있습니다. 개체 수준 스냅샷에는 스냅샷 시점에 데이터베이스의 관련 데이터와 종속성 그래프의 다른 개체가 포함되어 있습니다. 스냅샷의 이름을 원하는 대로 지정할 수 있습니다(예:snap, objectsnap1, fullsnap 등).

백업 위치

백업 위치는 스냅샷 및 관련 아카이브를 저장하는 백업 호스트의 디렉토리입니다. 스냅샷은 호환되기 때문에 전체 데이터베이스 스냅샷에서 데이터베이스를 복원한 후 동일한 백업 위치에서 모든 개체 스냅샷을 사용할 수 있습니다. 동일한 백업 위치의 모든 스냅샷은 하드 링크를 통해 데이터 파일을 공유합니다.

Vertica는 저렴하고 공간 효율적인 복사본을 제공합니다(하드 링크 로컬 백업). )로컬 클러스터 인프라의 데이터베이스 백업. 시스템이 사용자 데이터를 외부 백업 환경에 복사하지 않기 때문에 이러한 백업을 더 빨리 검색할 수 있습니다. Vertica는 카탈로그 데이터만 복사하고 파일 시스템 내에서 Linux® 기반 하드 링크를 시작합니다.

Vertica 데이터베이스 백업 및 복원

이미지 출처 :https://www.vertica.com/wp-content/uploads/2016/04/sidestep1.png

이러한 백업은 동일한 스토리지 블록 세트를 공유하고 각 백업은 해당 시점 복사본을 추적합니다. 시스템은 동일한 콘텐츠를 여러 위치에 저장하지 않습니다.

백업 및 복원 프로세스 흐름

백업 및 복원 흐름은 다음 단계로 구성됩니다.

  1. 전체, 증분 또는 개체 수준 백업과 같은 스냅샷 유형을 선택합니다.
  2. Vertica 백업 및 복구 도구를 사용하여 구성 파일을 만듭니다.
  3. 백업 파일을 저장할 백업 위치를 초기화합니다.
  4. 구성 파일을 사용하여 백업합니다.
  5. 백업 위치에서 백업을 확인합니다.
  6. 유사하거나 다른 Vertica 클러스터에서 전체 데이터베이스 또는 데이터베이스 개체를 복원합니다.
Vertica 데이터베이스 백업 및 복원

이미지 출처 :https://www.vertica.com/kb/Copy-and-Restore-Data-from-a-Vertica-Cluster-to-a-Backup/Content/BestPractices/Copy-and-Restore-Data-from-a -Vertica-Cluster-to-a-Backup.htm

구성 파일 생성

vbr.py 유틸리티는 Vertic이 전체, 증분 또는 개체 수준 스냅샷을 백업 및 복원하는 데 필요한 정보로 구성 파일을 생성합니다. 구성 파일이 없으면 데이터베이스 또는 개체를 백업하거나 복원할 수 없으며 기본 파일도 존재하지 않습니다.

필요한 만큼 백업 구성 파일을 생성할 수 있습니다(예:전체 또는 증분, 개체 또는 스키마별, 위치별 파일).

전체 백업 구성 파일

다음 단계는 전체 데이터베이스 백업을 수행하기 위한 구성 파일을 만드는 데 도움이 됩니다.

$ vbr.py --setupconfig
Snapshot name (backup_snapshot): full_bkp_snap
Backup vertica configurations? (n) [y/n]: y
Number of restore points (1):
Specify objects (no default):
Vertica user name (dbadmin): dbadmin
Save password to avoid runtime prompt? (n) [y/n]: n
Node v_testdb_node0001
Backup host name (no default): v_testdb_node0001
Backup directory (no default): /vert_backup/backup
Node v_testdb_node0002
Backup host name (no default): v_testdb_node0002
Backup directory (no default): /vert_backup/backup
Node v_testdb_node0003
Backup host name (no default): v_testdb_node0003
Backup directory (no default): /vert_backup/backup
Config file name (full_bkp_snap.ini): /vert_backup/backup_conf/full_bkp_snap.ini
Change advanced settings? (n) [y/n]: n
Saved vbr configuration to /vert_backup/backup_conf/full_bkp_snap.ini.
개체별 백업 구성 파일

개체별 구성 파일을 생성하려면 다음 단계를 수행하십시오.

  1. 데이터베이스의 개체를 나열하고 사용할 개체를 선택합니다. Vertica 데이터베이스에는 다음 개체가 있습니다.

              List of tables
      Schema | Name  | Kind  |  Owner  | Comment
     --------+-------+-------+---------+---------
      public | tab1  | table | dbadmin |
      public | tab2  | table | dbadmin |
      public | tab3  | table | dbadmin |
      (3 rows)
    
  2. 다음 명령을 실행하여 public.tab1의 백업을 수행할 구성 파일을 만듭니다. 표:

     $ vbr.py --setupconfig
     Snapshot name (backup_snapshot): tab1_bkp_snap
     Backup vertica configurations? (n) [y/n]: n
     Number of restore points (1):
     Specify objects (no default): public.tab1
     Vertica user name (dbadmin): dbadmin
     Save password to avoid runtime prompt? (n) [y/n]: n
     Node v_testdb_node0001
     Backup host name (no default): v_testdb_node0001
     Backup directory (no default): /vert_backup/backup
     Node v_testdb_node0002
     Backup host name (no default): v_testdb_node0002
     Backup directory (no default): /vert_backup/backup
     Node v_testdb_node0003
     Backup host name (no default): v_testdb_node0003
     Backup directory (no default): /vert_backup/backup
     Config file name (tab1_bkp_snap.ini): /vert_backup/backup_conf/tab1_bkp_snap.ini
     Change advanced settings? (n) [y/n]: n
     Saved vbr configuration to /vert_backup/backup_conf/tab1_bkp_snap.ini.
    
  3. 다음 명령을 실행하여 생성된 백업 구성 파일을 나열합니다.

     $ cd /vert_backup/backup_conf/
     $ ls -la
     total 20
     drwxr-xr-x. 2 dbadmin dbadmin 4096 Jan 20 14:21 .
     -rw-rw-r--. 1 dbadmin dbadmin  488 Jan 20 14:21 tab1_bkp_snap.ini
     -rw-rw-r--. 1 dbadmin dbadmin  475 Jan 20 14:04 full_bkp_snap.ini
    

백업 위치 초기화

소스 클러스터에서 전체 및 개체 수준 백업의 백업 위치를 초기화하려면 다음 init을 실행합니다. 진술:

$ /opt/vertica/bin/vbr.py -t init --config-file full_bkp_snap.ini
$ /opt/vertica/bin/vbr.py -t init --config-file tab1_bkp_snap.ini

백업하기

전체 데이터베이스 또는 개체 수준 백업을 수행합니다.

전체 데이터베이스 백업

이전에 만든 구성 파일full_bkp_snap.ini을 사용하여 전체 데이터베이스 백업을 수행합니다. :

$ vbr.py --task backup --config-file full_bkp_snap.ini
Please input vertica password:
pparing...
Found Database port:  5433
Copying...
348900 out of 348900, 100%
All child processes terminated successfully.
Committing changes on all backup sites...
backup done!
단일 개체 백업

구성 파일 tab1_bkp_snap.ini를 사용합니다. , 개체 수준 백업을 수행하려면:

$ vbr.py --task backup --config-file tab1_bkp_snap.ini
Please input vertica password:
pparing...
Found Database port:  5433
Copying...
78920 out of 78920, 100%
All child processes terminated successfully.
Committing changes on all backup sites...
backup done!

백업 위치 확인

다음 명령을 실행하여 백업 위치를 확인하십시오.

$ cd vert_backup/
$ ls -la
total 16
drwxr-xr-x.  4 dbadmin dbadmin 4096 Jan 20 13:40 .
dr-xr-xr-x. 28 root    root    4096 Jan 20 13:53 ..
drwxr-xr-x.  5 dbadmin dbadmin 4096 Jan 20 15:22 backup
drwxr-xr-x.  2 dbadmin dbadmin 4096 Jan 20 15:29 backup_conf
$ cd backup/
$ ll
total 12
drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0001
drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0002
drwxrwxr-x. 8 dbadmin dbadmin 4096 Jan 20 15:29 v_testdb_node0003
$ cd v_testdb_node0001/
$ ll
total 12
drwx------. 3 dbadmin dbadmin 4096 Jan 20 15:29 tab1_bkp_snap
drwx------. 3 dbadmin dbadmin 4096 Jan 20 15:22 full_bkp_snap

백업 복원

전체 또는 개체 수준 백업을 복원합니다.

전체 데이터베이스 백업에서 복원

참고 :전체 백업을 복원하려면 데이터베이스가 다운되어야 합니다.

전체 데이터베이스 복원을 수행하려면 다음 단계를 따르십시오.

  1. 데이터베이스의 모든 개체를 삭제하고 최근에 생성된 백업으로 복원합니다.

     cluster=> dt
                    List of tables
      Schema | Name  | Kind  |  Owner  | Comment
     --------+-------+-------+---------+---------
      public | tab1  | table | dbadmin |
      public | tab2  | table | dbadmin |
      public | tab3  | table | dbadmin |
     (3 rows)
    
     cluster=> drop table tab1,tab2,tab3;
     DROP TABLE
     cluster=> dt
     No relations found.
    
  2. 데이터베이스가 다운된 상태에서 전체 백업을 사용하여 데이터베이스를 복원합니다.

     $ vbr.py --task restore --config-file full_bkp_snap.ini
     Please input vertica password:
     Preparing...
     Found Database port:  5433
     Copying...
     248556 out of 248556, 100%
     All child processes terminated successfully.
     restore done!
    
  3. 데이터베이스를 시작하고 개체 복원이 성공했는지 확인합니다. 다음 예는 복원이 성공했음을 보여줍니다.

     cluster=> dt
                    List of tables
      Schema | Name  | Kind  |  Owner  | Comment
     --------+-------+-------+---------+---------
      public | tab1  | table | dbadmin |
      public | tab2  | table | dbadmin |
      public | tab3  | table | dbadmin |
     (3 rows)
    
개체 수준 백업 복원

참고 :개체 수준 복원을 위해서는 데이터베이스가 실행 중이어야 합니다.

개체를 복원하려면 기존 개체 수준 백업을 사용해야 합니다. 다음 코드는 tab1을 삭제합니다. 복원 준비:

cluster=> drop table tab1;
DROP TABLE
cluster=> dt
         List of tables
Schema | Name  | Kind  |  Owner  | Comment
-------+-------+-------+---------+---------
public | tab2  | table | dbadmin |
public | tab3  | table | dbadmin |
(2 rows)

개체 수준 백업에서 개체를 복원하려면 다음 단계를 수행하십시오.

  1. 개체 복원:

     $ vbr.py --task restore --config-file tab1_bkp_snap.ini
     Please input vertica password:xxxxxxxx
     Preparing...
     Found Database port:  5433
     Copying...
      out of , 100%
     All child processes terminated successfully.
     Copying...
     2970 out of 2970, 100%
     All child processes terminated successfully.
     restore done!
    
  2. 개체 복원이 성공했는지 확인합니다. 다음 예는 public.tab1의 성공적인 복원을 보여줍니다. 개체 수준 백업에서:

     $ vsql
     Password:xxxxxxx
    
     dbadmin=> dt
            List of tables
      Schema | Name  | Kind  |  Owner  | Comment
     --------+-------+-------+---------+---------
      public | tab1  | table | dbadmin |
      public | tab2  | table | dbadmin |
      public | tab3  | table | dbadmin |
     (3 rows)
    
     dbadmin=> d tab1 ;
                                 List of Fields by Tables
      Schema | Table | Column |     Type     | Size | Default | Not Null | Primary Key | Foreign Key
     --------+-------+--------+--------------+------+---------+----------+-------------+-------------
      public | tab1  | col1   | numeric(3,)  |    8 |         | f        | f           |
    

결론

이 게시물은 Vertica 데이터베이스 백업 및 복구 프로세스의 논리를 강조합니다. 또한 전체, 증분 및 개체 수준과 같은 다양한 수준에서 Vertica 데이터베이스를 백업 및 복원하는 단계를 제공합니다.

데이터베이스에 대해 자세히 알아보십시오.

www.rackspace.com을 방문하여 영업 채팅을 클릭합니다. 대화를 시작합니다.

피드백 탭을 사용하여 의견을 남기거나 질문하십시오.