1. 백업 및 복구
Introduction
Backup 및 recovery Introduction
−여러 가지 유형의 장애로부터 데이터베이스를 보호
MTBF (Mean Time Between Failure)를 증가시키고 MTTR (Mean Time Between Recover)를 감소
−시스템 장애 발생시 복원을 하거나, 시스템 작동을 유지하기 위한 절차 또는 기법
−관리자는 시스템 장애시 발생할 손실을 최소화하고 복구 가능한 상태로 데이터베이스를 운용해야 함.
최소한 한 달에 한번 데이터베이스 전체 백업
하루에 한번씩 Export 백업 권장
−데이터베이스 관리자는 백업에 대한 정책을 수립하고 꼭 필요한 데이터를 최소한의 양으로 백업
백업은 DBA의 주요 역할 중 가장 주의를 기울여야 함
−“RECOVERY에 실패한 DBA는 용서할 수 있지만, BACKUP을 실패한 DBA는 용서할 수 없다.”
−백업이 정상적으로 수행되었는지 주기적으로 검증하는 것을 권장한다.
여러 가지 유형의 장애
명령문의 실패
−테이블의 제약 조건에 위배되는 데이터를 insert
−권한의 부족
−테이블 생성시나 데이터 변경시 테이블스페이스의 공간이 부족한 경우
사용자 프로세스의 실패
−비정상적인 종료로 인한 사용자 프로세스의 실패가 대부분
−Tibero의 monitor process가 비정상적인 종료를 감지하고 수행중인 트랜잭션 등은 롤백
사용자로 인한 장애
−장애 발생 상황
DROP TABLE
TRUNCATE TABLE
DELETE FROM & COMMIT
잘못된 update & COMMIT
−해결 방안
사용자에 대한 교육 실시
백업에서 복구 Export 받은 파일에서 테이블을 import
Time-based 불완전 복구
Instance fail
−정전, CPU나 memory fault, background process의 비정상적인 종류가 대부분
−복구
특별한 복구 작업이 필요하지 않음 tbboot을 통해 DBMS를 기동하면 자동으로 복구됨
로그 등을 참고하여 원인 분석
Media fail
−데이터파일이 저장된 하드 디스크의 장애
−데이터 파일의 삭제
−정해진 복구 전략에 따라 복구 절차가 필요
Backup 및 Recovery의 전략 수립
업무적인 요구 사항
−MTBF (Mean Time Between Failure)를 증가시키고 MTTR (Mean Time To Recover)를 감소
운영 요구 사항
−24*365 운영, 백업 테스트 및 검증, 데이터베이스의 변경, 백업 데이터의 보관 장소 등
기술적 고려 사항
−하드웨어, 소프트웨어의 구성, 백업 주기 결정을 위한 트랜잭션 주기, 데이터의 양 등
경영진 합의
−경영진에서 기대하는 시스템의 가용성, 백업 및 복구 절차에 대한 이해, 백업을 위한 리소스 확보 등
Backup과 Recovery 관련 Tibero 동작 방식의 이해
Transaction Durability
−Committed Transaction MUST Survive failures (Recoverable)
Logging
−Redo Log Buffer : TSM에 redo 데이터를 저장하기 위한 영역
−Redo Log File : recovery를 위해 가장 중요한 파일
−Archive : archive log mode시 redo logfile을 별도의 위치에 backup
관련된 background process
−DBWR, RCWP ( tibero 6 FS07 ~ )
−DBWR, RECO ( tibero 6 ~ tibero 6 FS06 )
−LGWR, DBWR, CKPT, LARC ( ~ tibero 5 )
Redo 저장 대상 범위
−Physical Logging
▪ 수정이 일어날 때마다 해당 block을 통째로 남긴다.
▪ 바뀔 때마다 block size 만큼의 로그가 남아 많은 양의 유지해야 한다.
−Logical Logging
▪ update, delete 같은 operation을 log에 남기는 방법이다.
▪ 여러 physical block들에 대한 수정을 하더라도 operation만 기록되어 logging 양이 적다.
▪ 하지만, change가 반드시 순서대로 apply되야 한다. recovery 때 log apply가 어렵다.
−Physiological Logging
▪ physical logging과 logical logging의 장점을 합친 형태
▪ block의 physical change를 기록하는 change vector 들로 구성된 redo record 들로 이루어진다.
▪ change vector는 atomic block change 이며, redo record는 atomic database change
Redo 저장 시 일어나는 일들
−Page fix rule
▪ block에 대한 수정작업이 일어나기 전에 buffer에 대한 Lock을 잡는다.
▪ 실제 data buffer를 수정하기 전에 Redo Record를 Generation한다.
−WAL ( Write Ahead Logging )
▪ database buffer가 변경되기 전에 redo record 가 먼저 log buffer에 기록된다.
▪ DBWR가 dirty buffer를 disk에 write하기 전에 Redo Record가 먼저 log buffer의 필요한 redo record를 log file에먼저 기록한다.
−Log force at commit
▪ Commit 발생시 log buffer의 redo entry를 모두 log file에 write한다.
▪ Commit된 데이터의 보장.
−Online log switch
▪ Online Log중 다음의 조건을 만족하는 Log file로 Switching 된다.
Not active
Check point complete
Archiving not required
DATABASE ( Controlfile, Redolog file, Datafile ) 동기화 방식
−TSN
▪ Database의 version 또는 commit version
▪ Data Concurrency Control, Redo Ordering, Recovery 등에 사용된다.
▪ Transaction이 commit될 때 TSN이 generate된다.
−Checkpoint
▪ 주기적으로 혹은 사용자의 을 줄임. 요청에 따라 메모리에 있는 모든 변경된 (dirty) 블럭을 디스크에 쓰는 작업
▪ 복구에 필요한 logfile의 양
▪ CheckPoint 발생 상황
– 모든 로그 스위치 발생시
– 인스턴스가 NORMAL, POST_TX, IMMEDIATE 옵션으로 종료
– 사용자 요청에 따라 수동으로 발생
ALTER SYSTEM CHECKPOINT;
▪ ALTER TABLESPACE [BEGIN BACKUP | END BACKUP]
▪ Checkpoint 발생 시, DBWR가 작동하기 전에 먼저 LGWR이 현재 log buffer의 내용을 online log file에 write하고해당 dirty buffer에 mark가 되면, 이 정보를 DBWR이 받아서 모든 marked dirty buffer를 disk에 기록한다.
▪ Checkpoint는 Checkpoint TSN 이전에 발생한 Online log file내의 모든 변경 사항이 Disk에 저장되었음을 의미한다.
Backup 개요
Backup 개요
− 시스템 장애 발생시 복원을 하거나, 시스템 작동을 유지하기 위한 절차 또는 기법
− 관리자는 시스템 장애시 발생할 손실을 최소화하고 복구 가능한 상태로 데이터베이스를 운용해야 함. 최소한 한달에 한번 데이터베이스 전체 백업 하루에 한번씩 Export 백업 권장
− 데이터베이스 관리자는 백업에 대한 정책을 수립하고 꼭 필요한 데이터를 최소한의 양으로 백업
Backup 종류와 전략
Backup의 종류
− 논리적인 백업 데이터베이스의 논리적인 단위 백업.
Table, Index, Constraint, Sequence 등…
Export 툴로 백업
− 물리적인 백업
데이터베이스를 구성하는 파일을 운영체제 레벨에서 COPY 명령으로 백업 datafile, controlfile, archive logfile
Backup의 종류
구분 | 설명 |
NOARCHIVELOG 모드에서의 백업 (Offline Backup / Cold Backup) |
데이터베이스를 구성하는 전체 파일에 대해 운영을 멈춘 상태에서 백업 데이터베이스를 백업 받은 시점으로의 복구만 가능 |
ARCHIVELOG 모드에서의 백업 (Online Backup / Hot Backup) |
운영중에도 백업가능. Controlfile 생성문, Datafile, Archive logfile백업 백업된 archive logfile 의 시점에 따라 datafile 백업 시점 이전으로의 복구도 가능 |
구분 | 설명 |
Consistent 백업 | - 정상적인 Shutdown 후의 Backup |
Inconsistent 백업 | - DB 운영중에 Backup 또는 정상종료 되지 않은 상태에서의 Backup |
Backup 대상 - Controlfile & Redo logfile
Controlfile 기능
−데이터베이스의 구조를 이진 파일 형태로 저장
−데이터베이스를 mount할 때 반드시 필요
−파일이 없으면 복구를 하거나 재생성해야 한다.
−두 개 이상의 controlfile로 구성하는 것을 권장하고 서로 다른 디스크에 위치시키도록 한다.
동적뷰
−v$controlfile
다중화 방법
−데이터베이스를 down (tbdown)
−Control file을 다른 위치로 copy
−$TB_SID.tip 파일에서 CONTROL_FILES 파라미터에 추가
−데이터베이스를 기동 (tbboot)
Controlfile 백업
−Offline backup : O/S의 copy 명령을 통해 별도의 위치에 copy한다.
−Online backup : 다음과 같이 controlfile 구문을 생성하여 copy 한다.
ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS [백업할 파일 경로 및 이름] REUSE NORESETLOGS;
예) 다음과 같이 Controlfile 구문이 들어있는 파일이 생성됨
CREATE CONTROLFILE REUSE DATABASE "tibero"
LOGFILE
GROUP 0 ('/home/tibero6/tbdata/log01.log', '/home/tibero6/tbdata/log02.log') SIZE 3M,
GROUP 1 ('/home/tibero6/tbdata/log11.log', '/home/tibero6/tbdata/log12.log') SIZE 3M,
GROUP 2 ('/home/tibero6/tbdata/log21.log', '/home/tibero6/tbdata/log22.log') SIZE 3MNORESETLOGS
DATAFILE
'/home/tibero6/tbdata/system001.dtf',
'/home/tibero6/tbdata/undo001.dtf'
NOARCHIVELOG
MAXLOGFILES 100
MAXLOGMEMBERS 8
MAXDATAFILES 256;
Redo logfile이란?
−데이터베이스의 모든 변경 사항을 저장한다.
−최소한 2개 이상의 redo log group으로 구성
−각 log group은 하나 이상의 redo logfile로 구성
동적뷰
−V$LOG, V$LOGFILE
다중화
−Logfile의 손실을 대비하여 각각의 redo log group은 2개 이상의 logfile로 구성할 것을 권장
−Log group의 logfile들은 별도의 disk로 분리하도록 한다.
−Log group의 추가
ALTER DATABASE ADD LOGFILE
GROUP 4 (‘/home/tibero6/tbdata/redo41.log’, ‘/home/tibero6/tbdata/redo42.log’) SIZE 10m;
−Log group에 member 추가
ALTER DATABASE ADD LOGFILE MEMBER ‘/home/tibero6/tbdata/redo43.log’ TO GROUP 4
Backup 방식의 차이 - NOARCHIVELOG Mode VS ARCHIVELOG mode
Archive log mode에서 On-Line Redo Log 파일 사용
Archive log mode란?
−Log switch시 Redo logfile을 별도의 분리된 위치로 복사하여 저장하여 운영하는 방법
−Archive logfile은 recovery시 사용되는 매우 중요한 파일이다.
−Online backup을 하려면 반드시 archive log mode로 운영해야 한다.
관련 background process / initial parameter
−LOGA : tibero 기동시 자동으로 종료된다.
−LOG_ARCHIVE_DEST : archive logfile이 저장되는 위치
변경 방법
−데이터베이스 down
tbdown immediate
−데이터베이스를 mount 모드까지 기동
tbboot mount
−SYS 유저로 접속하여 archive log mode로 변경
tbsql sys/tibero
ALTER DATABASE ARCHIVELOG;
−데이터베이스 종료 후 재기동
tbdown immediate
tbboot
Archive log mode 확인
−V$DATABASE : LOG_MODE 컬럼을 조회한다.
Archive log 정보
− 아카이브 대상 상태 이해
- V$ARCHIVE_DEST_FILES
● LOG_ARCHIVE_DEST내의 archive log files의 정보 표시
- V$ARCHIVED_LOG
● Archive log 정보 표시
Archive log 대상 지정 ($TB_SID.tip)
− LOG_ARCHIVE_DEST
Backup 수행 방법 - Offline Backup
티베로 종료 후 백업
− Tibero를 정상 종료한 후 OS의 Copy 명령을 이용해 datafile, logfile, contrilfile, tip file등을 백업한다.
MOUNT 또는 OPEN 모드에서 v$datafile, v$logfile 뷰를 통해서 백업할 파일 정보 조회
ARCHIVELOG 모드에서는 archive 파일도 백업
−V$DATAFILE에서 백업 대상 파일 조회
SQL> select name from v$datafile;
NAME
-----------------------------------------------------------
/home/tibero6/datafile/system001.dtf
/home/tibero6/datafile/undo001.dtf
/home/tibero6/datafile/ws_data1.dtf
/home/tibero6/datafile/ws_idx1.dtf
/home/tibero6/datafile/ts_test01.dtf
− V$LOGFILE에서 백업 대상 logfile 조회
SQL> select group#, member from v$logfile;
GROUP# MEMBER
---------- --------------------------------------------------
1 /home/tibero6/datafile/log011.log
2 /home/tibero6/datafile/log021.log
3 /home/tibero6/datafile/log031.log
3 rows selected.
−V$CONTROLFILE에서 백업 대상 controlfile 조회
SQL> select name from v$controlfile;
NAME
-----------------------------------------------------------------
/home/tibero6/datafile/control01.ct
−티베로를 정상 종료
$ tbdown
Tibero instance terminated (NORMAL mode)
반드시 정상 종료를 해야 한다.
−File copy
앞에서 조회한 모든 파일을 copy한다.
$ cp /home/tibero6/datafile/*dtf /backup/
$ cp /home/tibero6/datafile/*log /backup/
$ cp /home/tibero6/datafile/*ctl /backup/
Backup 수행 방법 - Online Backup
티베로 운영 중 백업 (온라인 백업)
− ALTER TABLESPACE 명령으로 테이블스페이스의 datafile 백업한다.
ARCHIVELOG 모드에서만 사용 가능하다.
Tibero 데이터베이스에 온라인 백업 시작을 알림
SQL> ALTER TABLESPACE SYSTEM BEGIN BACKUP;
OS 명령으로 해당 테이블스페이스의 데이터파일 복사
SQL> !cp /data01/tibero/system001.tbf /backup/tibero/system001.tbf_backup
Tibero 데이터베이스에 온라인 백업 종료를 알림
SQL> ALTER TABLESPACE SYSTEM END BACKUP;
− 주의 사항
온라인 백업 중에는 데이터베이스의 변경 사항에 대한 log의 양이 늘어나기 때문에 가능하면신속하게 작업을 종료해야 함
티베로 Begin backup 이후 발생 내용.
1) begin backup 실행시 redo log 에 쌓이는 로그 차이점:
begin backup 이 일어난 후 block 변경시 해당 block 전체를 redo log 로 남기는 image logging 이 발생함에따라 log 양이 평소에 비해 증가하게 됨.
2) end backup 을 실행하지 않는 경우 문제점:
1) 에서 언급한 바와 같이 log 양이 증가함.
티베로 정상 종료가 불가하며, 만일 강제 종료할 경우 다음 부팅시 media recovery 를 해줘야 함.
3) end backup 실행시 tibero 내부적으로 처리되는 내용:
controlfile 과 datafile 에서 해당 tablespace 가 backup mode 라는 플래그를 off 하며, check point 정보를 최신으로 업데이트 합니다.
4) begin backup 실행시 datafile 의 변경사항:
(1) datafile 의 header 에 backup mode 라는 플래그가 on 됨.
(2) begin backup 과 end backup 사이에 발생하는 변경사항이 data file 과 redo log file 에 기록되지만, header 에 setting 되는 checkpoint 값, TSN 값은 고정된다.
동적 뷰
−V$BACKUP : 현재 begin backup으로 인해 backup mode인 상태를 확인한다.
SQL> alter tablespace ws_data begin backup;
Tablespace altered.
SQL> select * from v$backup;
Backup 수행 방법 - Logical Backup
tbExport 유틸리티
−tbExport 유틸리티를 이용해서 스키마 전체 혹은 일부를 추출해서 백업한다.
−문제점
서로 다른 시점의 데이터
Export 받은 시점으로의 복구만 가능하다.
Export 모드
−전체 데이터베이스 모드
DBA 유저(SYS)로만 가능
SYS를 제외한 모든 유저의 데이터를 export
FULL=Y
−사용자 모드
사용자가 소유하고 있는 테이블만 추출
USER=SCOTT
−테이블 모드
특정 테이블만 지정해서 추출
TABLE=SCOTT.EMP, SCOTT.DEPT
Recovery - 인스턴스 기동 단계 별 복구 대상
Recovery - Crash Recovery 개요
개요
− 시스템이상, shutdown abort 등 비정상적인 데이터베이스 종료 후 Tibero가 기동하는 과정에서 자동으로 수행
− Online redo log file, online data file, current control file만을 사용
− Undo 테이블스페이스를 이용하여 commit 되지 않은 데이터에 대해 복구 작업
특징
−Database에 접근 가능한 Instance에 Failure가 발생한 경우.
−Database가 기동될 때 자동 수행됨.
−redo의 roll forward and roll back
Recovery - Crash Recovery 원리
Roll Forward
−Redo log에 존재하는 redo record를 data file에 reapply하는 작업
−Redo log 적용 순서는 Checkpoint 시점의 Lowest TSN부터 recover를 시작하여 큰 값의 TSN 순으로 진행함
−Redo Record에는 rollback(undo) segment를 변경하는 내용도 포함되어 있으므로 실제 rollback(undo) data도 발생한다.−Roll forward 종료 시 committed change와 uncommitted change가 모두 data block에 반영되어 있게 된다. -> RollBack Phase
Roll Back
−rollback segments에 있는 undo information을 이용하여 uncommitted changes에 대한 undo 작업 수행(Consistency)
Recovery - Media Recovery 개요
Media Recovery란?
−티베로를 구성하는 파일에 물리적인 손상이 발생하였거나 정상 동작을 할 수 없는 경우 복구하는 과정
특징
−DBA에 의한 명령에 의해 수동으로 수행 (ALTER DATABASE RECOVER ...)
−Backup받은 datafile을 이용해서 복구
−redo logfile 이나 archive logfile로부터 redo record를 적용
−MOUNT 모드에서만 가능하다.
참고하는 동적 뷰
−V$RECOVER_FILE
−V$RECOVERY_FILE_STATUS
−V$LOGFILE, V$CONTROLFILE, V$LOG
종류
−Complete Recovery : Archive logfile 과 Online logfile 을 모두 사용해서 가장 최근 로그까지 모두 반영
−Incomplete Recovery : logfile 일부만 적용 하거나 특정시점으로 복구 가능. RESETLOGS 적용 필요
Recovery - Media Recovery 수행시 불완전 복구
Incomplete Recovery
−point-in-time recovery
−redo record 의 일부 만 적용
필요한 상황
−online redo logs are damaged
−data loss by user error
−some archived log is missing
Resetlogs
−Incomplete recovery를 하게 되면 반드시 resetlogs로 데이터베이스를 기동해야 한다.
−resetlogs 이전 datafile, logfile 과 resetlogs 이 후의 파일은 서로 호환되지 않는다
resetlogs 이전에 백업 파일이나 logfile들을 이용하여 resetlogs 이후로 복구할 수 없다.
또한 resetlogs 이후의 file들을 가지고 resetlogs 이전 상태로 incomplete 복구도 불가능하다
−resetlogs 시작한 경우, 반드시 새로운 백업을 받기를 권장한다
−Resetlogs로 데이터베이스 기동하기
$ tbboot –t RESETLOGS
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
2. 백업 및 복구 예제 1
Controlfile 백업 및 복구
Controlfile 백업
−데이터베이스의 구조에 변화가 일어난 경우 controlfile을 백업해야 한다.
−Offline Full Backup을 하거나 trace를 통한 controlfile 생성 구문을 백업한다.
−MOUNT,OPEN 모드에서 controlfile 생성 구문 백업 가능
−지정한 디렉토리에 controlfile 백업 생성
▪ 디렉토리 경로를 지정하지 않을 경우 DB_CREATE_FILE_DEST 파라미터로 설정한 디렉토리에 백업 파일 생성
Controlfile 백업 및 복구 - Controlfile 백업 ( offline backup )
Controlfile 확인 ( V$CONTROLFILE )
SQL> select name from v$controlfile;
NAME
--------------------------------------------------------------------------
/home/tibero6/tibero6/database/c1.ctl
1 row selected.
Tibero 종료 후 backup 대상 위치로 copy
$ tbdown
Tibero instance terminated (NORMAL mode).
$ cp /home/tibero6/tibero6/database/c1.ctl /home/tibero6/tbdata/bak/c1.ctl
Controlfile 백업 및 복구 - CONTROLFILE의 이중화
Controlfile의 이중화
−Tibero를 종료한 후 controlfile을 copy
$ tbdown
Tibero instance terminated (NORMAL mode).
$cp /tibero/tibero6/database/c1.ctl /tibero/tibero6/database/c2.ctl
−$TB_SID.tip 파일의 CONTROL_FILES 항목에 추가
CONTROL_FILES="/tibero/tibero6/database/c1.ctl","/tibero/tibero6/database/c2.ctl"
Controlfile 백업 및 복구 - Controlfile 백업 (Using trace)
Controlfile 백업(Online)
− Online 백업 시, Alter ~ trace 구문을 사용하여 Controlfile 생성용 SQL문장을 백업하고, 복구시 이를 사용한다.
− ALTER DATABASE BACKUP CONTROLFILE
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE
AS '백업할 파일 경로 및 이름' REUSE NORESETLOGS;
− 실행 예
SQL> ALTER DATABASE BACKUP CONTROLFILE TO TRACE AS
'/home/tibero6/tbdata/backup/create_controlfile.sql' REUSE NORESETLOGS;
'DB > Tibero' 카테고리의 다른 글
[Tibero] DB Link 가이드 (0) | 2022.12.22 |
---|---|
[Tibero] 아카이브모드 설정 방법 및 조회 방법 (0) | 2022.12.21 |
[Tibero교육] Tibero Installation (0) | 2022.12.14 |
[Tibero교육] Tibero Database Administration (0) | 2022.12.07 |
[Tibero] MVCC 기능 시나리오 따라하다가 생긴 의문점 (0) | 2022.11.28 |