백업 및 복원 명령
백업 및 복원 명령 (Backup and Restore commands)
관리자가 백업을 생성·복원·병합하기 위해 실행하는 커맨드라인 유틸리티에 대해 살펴볼게요. 특정 백업 세션의 세부 정보를 검사하는 도구는 다음 섹션인 Administration of Backup Images에서 다뤄요.
출처: 문서
본문
관리자가 백업을 생성·복원·병합하기 위해 실행하는 커맨드라인 유틸리티를 다뤄요. 특정 백업 세션에 대한 세부 정보를 검사하는 도구는 다음 섹션인 Administration of Backup Images에서 다뤄요.
hbase backup help <command> 명령을 실행하면 명령과 그 옵션에 대한 기본 정보를 제공하는 온라인 도움말에 접근할 수 있어요. 아래 정보는 각 명령에 대한 이 도움말 메시지에 담겨 있어요.
백업 이미지 생성하기 (Creating a Backup Image)
Apache Phoenix도 사용하는 HBase 클러스터의 경우: 백업에 SQL 시스템 카탈로그 테이블을 포함해 주세요. HBase 백업을 복원해야 하는 경우 시스템 카탈로그 테이블에 접근할 수 있으면 복원된 데이터와 Phoenix 상호 운용을 재개할 수 있어요.
백업/복원 유틸리티 실행의 첫 단계는 전체 백업을 수행하고 데이터를 소스와 분리된 별도 이미지에 저장하는 거예요. 증분 백업에 의존하기 전에 최소한 기준선(baseline)을 만들기 위해 이 작업을 해야 해요.
HBase 슈퍼유저로 다음 명령을 실행해 주세요.
hbase backup create <type> <backup_path>
명령 실행이 끝나면 콘솔이 SUCCESS 또는 FAILURE 상태 메시지를 출력해요. SUCCESS 메시지에는 백업 ID가 포함돼요. 백업 ID는 HBase 마스터가 클라이언트로부터 백업 요청을 받은 Unix 시간(Epoch time이라고도 함)이에요.
성공한 백업 끝에 나타나는 백업 ID를 기록해 두세요. 소스 클러스터가 실패해서 복원 작업으로 데이터셋을 복구해야 하는 경우, 백업 ID를 바로 사용할 수 있으면 시간을 절약할 수 있어요.
위치 인자 (Positional Command-Line Arguments)
type 실행할 백업 유형: full 또는 incremental. 참고로, 증분 백업은 전체 백업이 이미 존재해야 해요.
backup_path backup_path 인자는 백업 이미지를 저장할 파일시스템 URI 전체를 지정해요. 유효한 접두사는 hdfs:, webhdfs:, s3a: 또는 기타 호환 Hadoop File System 구현이에요.
이름 인자 (Named Command-Line Arguments)
-t <table_name[,table_name]> 백업할 테이블의 쉼표로 구분된 목록이에요. 테이블을 지정하지 않으면 모든 테이블이 백업돼요. 정규식이나 와일드카드 지원은 없으며, 모든 테이블 이름을 명시적으로 나열해야 해요. 테이블 컬렉션에 대한 연산 수행은 Backup Sets를 참고해 주세요. -s 옵션과 상호 배타적이며, 이 두 이름 옵션 중 하나는 필수예요.
-s <backup_set_name> 백업 세트를 기준으로 백업할 테이블을 식별해요. 백업 세트의 목적과 사용법은 Using Backup Sets를 참고해 주세요. -t 옵션과 상호 배타적이에요.
-w <number_workers> (선택) 백업 대상으로 데이터를 복사할 병렬 작업자 수를 지정해요. 백업은 현재 MapReduce 작업으로 실행되므로 이 값은 작업이 생성할 Mapper 수에 해당해요.
-b <bandwidth_per_worker> (선택) 각 작업자의 대역폭을 초당 MB 단위로 지정해요.
-d (선택) 백업 생성에 대한 추가 로깅을 출력하는 "DEBUG" 모드를 활성화해요.
-i (선택) 소스 스냅샷과 내보낸 스냅샷 사이의 체크섬 검증을 무시해요. 특히 소스와 대상 파일시스템 유형이 다를 때 -i 옵션을 사용해 체크섬 검사를 건너뛰어야 해요.
-q
사용 예시 (Example usage)
$ hbase backup create full hdfs://host5:9000/data/backup -t SALES2,SALES3 -w 3
이 명령은 SALES2와 SALES3 두 테이블의 전체 백업 이미지를, NameNode가 host5:9000인 HDFS 인스턴스의 /data/backup 경로에 만든다. -w 옵션은 이 작업을 완료하는 병렬 작업자가 3개를 넘지 않도록 지정해요.
백업 이미지 복원하기 (Restoring a Backup Image)
HBase 슈퍼유저로 다음 명령을 실행해 주세요. 데이터가 RegionServer에 재분배되어야 작업이 성공적으로 완료되므로, 실행 중인 HBase 클러스터에서만 백업을 복원할 수 있어요.
hbase restore <backup_path> <backup_id>
위치 인자 (Positional Command-Line Arguments)
backup_path backup_path 인자는 백업 이미지를 저장할 파일시스템 URI 전체를 지정해요. 유효한 접두사는 hdfs:, webhdfs:, s3a: 또는 기타 호환 Hadoop File System 구현이에요.
backup_id 복원할 백업 이미지를 고유하게 식별하는 백업 ID예요.
이름 인자 (Named Command-Line Arguments)
-t <table_name[,table_name]> 복원할 테이블의 쉼표로 구분된 목록이에요. 테이블 컬렉션에 대한 연산 수행은 Backup Sets를 참고해 주세요. -s 옵션과 상호 배타적이며, 이 두 이름 옵션 중 하나는 필수예요.
-s <backup_set_name> 백업 세트를 기준으로 백업할 테이블을 식별해요. 백업 세트의 목적과 사용법은 Using Backup Sets를 참고해 주세요. -t 옵션과 상호 배타적이에요.
-q
-c (선택) 복원의 드라이런(dry-run)을 수행해요. 동작은 확인되지만 실행되지는 않아요.
-m <target_tables> (선택) 복원할 대상 테이블의 쉼표로 구분된 목록이에요. 이 옵션이 제공되지 않으면 원래 테이블 이름이 사용돼요. 이 옵션이 제공되면 -t 옵션에 동일한 수의 항목이 제공되어야 해요.
-o (선택) 대상 테이블이 이미 존재하면 복원 시 대상 테이블을 덮어써요.
사용 예시 (Example of Usage)
hbase restore /tmp/backup_incremental backupId_1467823988425 -t mytable1,mytable2
이 명령은 증분 백업 이미지의 두 테이블을 복원해요. 이 예시에서: • /tmp/backup_incremental은 백업 이미지를 담고 있는 디렉터리의 경로예요. • backupId_1467823988425는 백업 ID예요. • mytable1과 mytable2는 복원할 백업 이미지 안의 테이블 이름이에요.
복원 중인 테이블의 namespace가 대상 환경에 존재하지 않으면 복원 작업 중 자동으로 생성돼요. (HBASE-25707)
증분 백업 이미지 병합하기 (Merging Incremental Backup Images)
이 명령은 두 개 이상의 증분 백업 이미지를 단일 증분 백업 이미지로 병합하는 데 사용할 수 있어요. 여러 개의 작은 증분 백업 이미지를 하나의 더 큰 증분 백업 이미지로 통합하는 데 사용할 수 있어요. 이 명령은 시간별 증분 백업을 일별 증분 백업 이미지로, 또는 일별 증분 백업을 주별 증분 백업으로 병합하는 데 사용할 수 있어요.
$ hbase backup merge <backup_ids>
위치 인자 (Positional Command-Line Arguments)
backup_ids 단일 이미지로 결합할 증분 백업 이미지 ID의 쉼표로 구분된 목록이에요.
이름 인자 (Named Command-Line Arguments)
없음.
사용 예시 (Example usage)
$ hbase backup merge backupId_1467823988425,backupId_1467827588425
백업 세트 사용하기 (Using Backup Sets)
백업 세트는 반복적인 테이블 이름 입력량을 줄여 HBase 데이터 백업/복원 관리를 쉽게 해줘요. hbase backup set add 명령으로 테이블을 이름 있는 백업 세트로 그룹화할 수 있어요. 그런 다음 hbase backup create 또는 hbase restore에서 -set 옵션을 사용해 그룹의 모든 테이블을 개별적으로 나열하는 대신 백업 세트 이름을 호출할 수 있어요. 백업 세트는 여러 개 가질 수 있어요.
hbase backup set add 명령과 -set 옵션의 차이를 주의해 주세요. 백업 세트는 다른 명령에서 -set 옵션으로 단축키처럼 사용되기 전에 이름을 붙이고 정의되어야 하므로, hbase backup set add 명령을 먼저 실행해야 해요.
hbase backup set add 명령을 실행할 때 시스템에 아직 존재하지 않는 백업 세트 이름을 지정하면 새 세트가 생성돼요. 기존 백업 세트 이름으로 명령을 실행하면 지정한 테이블이 세트에 추가돼요.
이 명령에서 백업 세트 이름은 대소문자를 구분해요.
백업 세트의 메타데이터는 HBase 내에 저장돼요. 백업 세트 메타데이터가 있는 원래 HBase 클러스터에 접근할 수 없다면, 데이터를 복원하려면 개별 테이블 이름을 지정해야 해요.
백업 세트를 만들려면 HBase 슈퍼유저로 다음 명령을 실행해 주세요.
$ hbase backup set <subcommand> <backup_set_name> <tables>
백업 세트 하위 명령 (Backup Set Subcommands)
다음 목록은 hbase backup set 명령의 하위 명령을 설명해요.
작업을 완료하려면 hbase backup set 다음에 다음 하위 명령 중 하나(하나만)를 입력해야 해요. 또한 커맨드라인 유틸리티에서 백업 세트 이름은 대소문자를 구분해요.
add 테이블을 백업 세트에 추가해요. 백업 세트를 만들려면 이 인자 다음에 backup_set_name 값을 지정해 주세요.
remove 세트에서 테이블을 제거해요. 제거할 테이블을 tables 인자에 지정해 주세요.
list 모든 백업 세트를 나열해요.
describe 백업 세트에 대한 설명을 표시해요. 정보에는 세트에 전체 또는 증분 백업이 있는지, 백업 시작·종료 시간, 세트의 테이블 목록이 포함돼요. 이 하위 명령은 backup_set_name 값의 유효한 값보다 앞에 와야 해요.
delete 백업 세트를 삭제해요. hbase backup set delete 명령 바로 다음에 backup_set_name 옵션의 값을 입력해 주세요.
위치 인자 (Positional Command-Line Arguments)
backup_set_name 백업 세트 이름을 지정하거나 호출하는 데 사용해요. 백업 세트 이름은 인쇄 가능한 문자만 포함해야 하며 공백을 가질 수 없어요.
tables 백업 세트에 포함할 테이블 목록(또는 단일 테이블)이에요. 테이블 이름을 쉼표로 구분된 목록으로 입력해 주세요. 테이블을 지정하지 않으면 모든 테이블이 세트에 포함돼요.
대소문자를 구분하는 백업 세트 이름과 각 세트의 해당 테이블에 대한 로그 또는 기타 기록을 별도 또는 원격 클러스터, 백업 전략에 유지해 주세요. 이 정보는 기본 클러스터에서 장애가 발생한 경우 도움이 될 수 있어요.
사용 예시 (Example of Usage)
$ hbase backup set add Q1Data TEAM3,TEAM_4
환경에 따라 이 명령은 다음 중 하나로 이어져요.
- Q1Data 백업 세트가 존재하지 않으면 TEAM_3와 TEAM_4 테이블을 포함하는 백업 세트가 생성돼요.
- Q1Data 백업 세트가 이미 존재하면 TEAM_3와 TEAM_4 테이블이 Q1Data 백업 세트에 추가돼요.
더 알아보기 (Learn more)
백업 이미지 관리, 추가 구성·보안 주제는 Administration of Backup Images와 Additional Topics 문서를 보시길 권해요.