기술 정보
home
채널 소개
home

AWS s3를 이용한 백업본 보관 방법

문서 유형
기술 정보
분야
백업/복구
키워드
AWS
Cloud
CLI
적용 제품 버전
6FS07

개요

AWS S3를 이용한 백업본 보관 방법에 대해 설명합니다.
AWS S3는 object storage로, AWS CLI를 이용하여 s3에 DB 백업본을 업로드 및 다운로드를 진행할 수 있습니다.

방법

AWS CLI를 이용하여 s3에 저장한 백업본을 이용해 복구하는 시나리오입니다.

[AWS S3를 이용한 Hot Backup 시나리오]

1. 테스트용 데이터 생성

테이블 스페이스 생성
테스트 유저 및 테이블 생성
SQL>tbsql sys/tibero SQL>CREATE TABLESPACE TS_TEST DATAFILE 'test001.dtf' SIZE 16M AUTOEXTEND ON NEXT 16M MAXSIZE 1G, 'test002.dtf' SIZE 16M AUTOEXTEND ON NEXT 16M MAXSIZE 1G EXTENT MANAGEMENT LOCAL AUTOALLOCATE;Tablespace 'TS_TEST' created. SQL>CREATE TABLESPACE TS_TEST_IDX DATAFILE 'test_idx_001.dtf' SIZE 8M AUTOEXTEND ON NEXT 8M MAXSIZE 1G EXTENT MANAGEMENT LOCAL AUTOALLOCATE; Tablespace 'TS_TEST_IDX' created. SQL>CREATE USER TEST IDENTIFIED BY TEST DEFAULT TABLESPACE TS_TEST; User 'TEST' created. SQL>GRANT DBA TO TEST; Granted. SQL>CONN TEST/TEST Connected to Tibero. SQL>CREATE TABLE TEST.T1 (ID NUMBER, ANAME VARCHAR2(32), BNAME VARCHAR2(32), ID2 NUMBER) TABLESPACE TS_TEST; Table 'TEST.T1' created. SQL>CREATE INDEX IDX_T1 ON T1(ID, ANAME) TABLESPACE TS_TEST_IDX; Index 'IDX_T1' created.
SQL
복사

2. 사전 확인

테이블 건수 조회
테이블 스페이스 확인
데이터 파일 확인
SQL>SELECT COUNT(*) FROM TEST.T1; COUNT(*) ---------- 0 1 row selected. SQL>SELECT TABLESPACE_NAME FROM DBA_TABLESPACES; TABLESPACE_NAME -------------------------------------------------------------------------------- SYSTEM UNDO0 TEMP USR UNDO1 SYSSUB 6 rows selected. SQL>SELECT FILE_NAME FROM DBA_DATA_FILES; FILE_NAME -------------------------------------------------------------------------------- /dev/raw/raw51 /dev/raw/raw53 /dev/raw/raw55 /dev/raw/raw54 /dev/raw/raw56 5 rows selected.
SQL
복사

3. Begin Backup 수행 및 확인

SQL>ALTER DATABASE BEGIN BACKUP; Database altered. SQL>SELECT * FROM V$BACKUP; FILE# STATUS CHANGE# TIME ---------- ---------- ---------- -------------------------------- 0 ACTIVE 247475 2017/05/31 1 ACTIVE 247475 2017/05/31 2 ACTIVE 247475 2017/05/31 3 ACTIVE 247475 2017/05/31 4 ACTIVE 247475 2017/05/31 5 rows selected. SQL>exit Disconnected.
SQL
복사

4. 핫 백업 진행 (데이터 파일 복제)

$ls -al /dev/raw $mkdir -p $TB_HOME/${TB_SID}_hot $dd if=/dev/raw/raw51 of=$TB_HOME/${TB_SID}_hot/raw51 bs=8M $dd if=/dev/raw/raw53 of=$TB_HOME/${TB_SID}_hot/raw53 bs=8M $dd if=/dev/raw/raw54 of=$TB_HOME/${TB_SID}_hot/raw54 bs=8M $dd if=/dev/raw/raw55 of=$TB_HOME/${TB_SID}_hot/raw55 bs=8M $dd if=/dev/raw/raw56 of=$TB_HOME/${TB_SID}_hot/raw56 bs=8M $ls -al $TB_HOME/${TB_SID}_hot total 52428800 drwxr-xr-x 2 tta01 dba 66 May 31 17:19 . drwxr-xr-x 11 tta01 dba 120 May 31 16:46 .. -rw-r--r-- 1 tta01 dba 10737418240 May 31 16:50 raw51 -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:05 raw53 -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:08 raw54 -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:12 raw55 -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:22 raw56
SQL
복사
AWS S3에 업로드
$aws configure AWS Access Key ID [None]: xxxxxxxxxxxxxxxxxxxx #IAM 사용자 access key 설정 값 입력 AWS Secret Access Key [None]: xxxxxxxxxxxxxxxxxxxxxxxxx #access key 생성 시 확인 및 다운로드 가능 Default region name [None]: ap-northeast-2 Default output format [None]: $ aws s3 ls #bucket list 확인 $ls -al $TB_HOME/${TB_SID}_hot total 52428800 drwxr-xr-x 2 tta01 dba 66 May 31 17:19 . drwxr-xr-x 11 tta01 dba 120 May 31 16:46 .. -rw-r--r-- 1 tta01 dba 10737418240 May 31 16:50 raw51 -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:05 raw53 -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:08 raw54 -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:12 raw55 -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:22 raw56 $aws s3 cp raw51 s3://tiberobackup2/raw51_20200618 upload: ./raw51 to s3://tiberobackup2/raw51_20200618 #s3://버킷명/오브젝트명 $aws s3 cp raw53 s3://tiberobackup2/raw53_20200618 upload: ./raw53 to s3://tiberobackup2/raw53_20200618 $aws s3 cp raw54 s3://tiberobackup2/raw54_20200618 upload: ./raw54 to s3://tiberobackup2/raw54_20200618 $aws s3 cp raw55 s3://tiberobackup2/raw55_20200618 upload: ./raw55 to s3://tiberobackup2/raw55_20200618 $aws s3 cp raw56 s3://tiberobackup2/raw56_20200618 upload: ./raw56 to s3://tiberobackup2/raw56_20200618 또는 $ aws s3 sync ./ s3://tiberobackup2 # 현재 디렉터리와 bucket 동기화 하여 현재 디렉터리 내에 있는 파일 모두 업로드 --참고-- $ aws s3 cp ./ s3://[bucketname] --recursive #--recursive : 지정한 디렉토리의 모든 파일을 선택
SQL
복사

5. End Backup 수행 및 로그 스위치 수행

SQL>tbsql sys/tibero SQL>ALTER DATABASE END BACKUP; Database altered. SQL>SELECT * FROM V$BACKUP; FILE# STATUS CHANGE# TIME ---------- ---------- ---------- -------------------------------- 0 NOT ACTIVE 247475 2017/05/31 1 NOT ACTIVE 247475 2017/05/31 2 NOT ACTIVE 247475 2017/05/31 3 NOT ACTIVE 247475 2017/05/31 4 NOT ACTIVE 247475 2017/05/31 5 rows selected. SQL>ALTER SYSTEM SWITCH LOGFILE; System altered.
SQL
복사

6. 데이터 입력

SQL>INSERT INTO TEST.T1 SELECT ROWNUM, 'A'||TO_CHAR(ROWNUM), 'B'||TO_CHAR(ROWNUM), ROUND(ROWNUM/50) FROM DUAL CONNECT BY ROWNUM<=50000; 50000 rows inserted. SQL>COMMIT; Commit completed.
SQL
복사

7. 데이터 조회

SQL>SELECT COUNT(*) FROM TEST.T1; COUNT(*) ---------- 50000 1 row selected. SQL>exit Disconnected.
SQL
복사

8. 티베로 종료 및 데이터 파일 전체 삭제

Node 1
$tbdown Tibero instance terminated (NORMAL mode).
SQL
복사
Node 2
$tbdown Tibero instance terminated (NORMAL mode). $dd if=/dev/zero of=/dev/raw/raw51 count=1 $dd if=/dev/zero of=/dev/raw/raw53 count=1 $dd if=/dev/zero of=/dev/raw/raw54 count=1 $dd if=/dev/zero of=/dev/raw/raw55 count=1 $dd if=/dev/zero of=/dev/raw/raw56 count=1
SQL
복사

9. 티베로 기동하여 마운트 모드 및 장애 상황 확인

$tbboot Change core dump dir to /data/tta01/tibero6/bin/prof. Listener port = 8629 ******************************************************** * Critical Warning : Raise svmode failed. The reason is * TBR-1024 : Database needs media recovery: wrong database file(/dev/raw/raw51). * Current server mode is MOUNT. ******************************************************** Tibero 6 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Tibero instance started suspended at MOUNT mode.
SQL
복사

10. 티베로 종료 및 핫 백업 원복

$tbdown Tibero instance terminated (NORMAL mode). S3에서 백업본 다운로드 $aws s3 cp s3://tiberobackup2/raw51_20200618 raw51_bak download: s3://tiberobackup2/raw51_20200618 to ./raw51_bak $aws s3 cp s3://tiberobackup2/raw53_20200618 raw53_bak download: s3://tiberobackup2/raw53_20200618 to ./raw53_bak $aws s3 cp s3://tiberobackup2/raw54_20200618 raw54_bak download: s3://tiberobackup2/raw54_20200618 to ./raw54_bak $aws s3 cp s3://tiberobackup2/raw55_20200618 raw55_bak download: s3://tiberobackup2/raw55_20200618 to ./raw55_bak $aws s3 cp s3://tiberobackup2/raw56_20200618 raw56_bak download: s3://tiberobackup2/raw56_20200618 to ./raw56_bak 또는 $ aws s3 sync s3://tiberobackup2 ./bak #bucket에 있는 백업본 전체를 bak 경로에 다운로드 진행 --참고-- $ aws s3 cp s3://[bucketname] [디렉터리 경로] --recursive --include "[filtering 하고자하는 string]" #--recursive : 지정한 버킷의 모든 파일 선택 #--include : 해당 string이 포함된 객체 name을 filtering download: s3://tiberobackup2/etcfile to bak/etcfile download: s3://tiberobackup2/raw55 to bak/raw56 download: s3://tiberobackup2/raw55 to bak/raw55 download: s3://tiberobackup2/raw54 to bak/raw54 download: s3://tiberobackup2/raw53 to bak/raw53 download: s3://tiberobackup2/raw51 to bak/raw51 $ls -al $TB_HOME/${TB_SID}_hot/ total 52428800 drwxr-xr-x 2 tta01 dba 66 May 31 17:19 . drwxr-xr-x 11 tta01 dba 120 May 31 16:46 .. -rw-r--r-- 1 tta01 dba 10737418240 May 31 16:50 raw51_bak -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:05 raw53_bak -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:08 raw54_bak -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:12 raw55_bak -rw-r--r-- 1 tta01 dba 10737418240 May 31 17:22 raw56_bak $dd if=$TB_HOME/${TB_SID}_hot/raw51_bak of=/dev/raw/raw51 bs=8M $dd if=$TB_HOME/${TB_SID}_hot/raw53_bak of=/dev/raw/raw53 bs=8M $dd if=$TB_HOME/${TB_SID}_hot/raw54_bak of=/dev/raw/raw54 bs=8M $dd if=$TB_HOME/${TB_SID}_hot/raw55_bak of=/dev/raw/raw55 bs=8M $dd if=$TB_HOME/${TB_SID}_hot/raw56_bak of=/dev/raw/raw56 bs=8M
SQL
복사

11. NODE2의 archivelog 파일을 NODE1로 복사

--NODE2 $scp /data/tta02/tbarch/*.arc tta01@192.168.53.186:/data/tta01/tbarch tta01@192.168.53.186's password: log-t1-r0-s1.arc 100% 82MB 10.3MB/s 00:08
SQL
복사

12. 티베로 마운트 모트 기동 및 복구 수행

$tbboot mount Change core dump dir to /home/tibero6/tibero6/bin/prof. Listener port = 8629 Tibero 6 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Tibero instance started up (MOUNT mode). SQL>tbsql sys/tibero tbSQL 6 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Connected to Tibero. SQL>ALTER DATABASE RECOVER AUTOMATIC; Database altered.
SQL
복사

13. 티베로 종료 및 티베로 기동

--NODE1 $tbdown Tibero instance terminated (NORMAL mode). $tbboot Change core dump dir to /home/tibero6/tibero6/bin/prof. Listener port = 8629 Tibero 6 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Tibero instance started up (NORMAL mode). --NODE2 $tbboot Change core dump dir to /home/tibero6/tibero6/bin/prof. Listener port = 8629 Tibero 6 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Tibero instance started up (NORMAL mode).
SQL
복사

14. 테이블 건수 조회

SQL>tbsql sys/tibero tbSQL 6 TmaxData Corporation Copyright (c) 2008-. All rights reserved. Connected to Tibero. SQL>SELECT COUNT(*) FROM TEST.T1; COUNT(*) ---------- 50000 1 row selected. SQL>exit Disconnected.
SQL
복사