• 검색 결과가 없습니다.

제9장 복구 Recovery

N/A
N/A
Protected

Academic year: 2022

Share "제9장 복구 Recovery "

Copied!
30
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

제9장 복구 Recovery

2013. 09. 06

가천대학교 IT대학

컴퓨터미디어융합학과

(2)

목 차

9.1 개요 9.2 복구전략 9.3 로그 기법 9.4 그림자 페이지

익힘문제

(3)

9.1 개요

Database System 고장 시 문제점 1) 서비스 중단: 단기적.

ex. 은행 프로그램 고장 입출금 불가 2) 업무 마비: 장기적

ex. 은행 데이터베이스 붕괴  은행 기능 마비 대책

1) 수작업 서비스 제공

2) 데이터베이스의 고장 이전 상태로 복구:

backup

서비스 개시:

backup

이후

(4)

제9.1장 복구 개요

복구관리기의 책임

트랜잭션의 원자성의 지속성 확보.

대책

WAL Write-Ahead-Logging 미완료 트랜잭션들: undo 완료한 트랜잭션들: redo Shadow paging

old page와 new page로 나누어 관리 Checkpointing

주기적으로 저장

(5)

9.2 복구전략

9.2.1 시스템 고장 고 장

전원 고장, 하드웨어 고장, 소프트웨어 고장 기억장치

휘발성: RAM 비휘발성:

1차 기억장치: cache, ROM, 2차: HDD on-line, 3차: Tape, CD off-line

안전 기억장치: ??

duplicate

(6)

고장의 분류

시스템 고장 : 주기억장치의 소멸 미디어 고장 : 2차 기억장치 오류 응용 프로그램 고장 :

트랜잭션의 논리적 오류 자연 재앙 :

화재, 홍수, 지진, 정전,, 부주의 :

운영자, 사용자의 실수,,,

태업, hacking :

악의적인 접근에 의한 손상

복구:

고장 시 database를 고장 이전의 상태로 돌려놓는 것

제9.2장 자료처리 구조

(7)

9.2.1 자료처리 절차

다중 제어: 모든 컴퓨터에는 두 개 이상의 처리기 존재 - CPU: Main Memory 제어, 응용 프로그램,

- PPU: I/O 프로그램, DISK 등의 보조기억장치 제어.

응용 프로그램이 정상 종료해도(read, write는 정상), I/O에서 고장이면 오류(get, put에서 고장) 가능.

즉, 메인 메모리에서는 이상이 없어도, 보조기억장치에서 이상 발생 가능.

Read A A = A -100 Write A Read B

B = B + 100 Write B

(8)

메인 메모리: program I/O area, buffer 디스크: 제어장치 메모리, 블록

Read A A = A - 100 Write A Read B

B = B + 100 Write B

제9.2장 자료처리 구조

Main Memory

Database read

write

get

put load

store

Disk

record Block

- page - control

CPU

PPU

block block Transaction

program I/O area

버 퍼

block

(9)

트랜잭션의 읽기/쓰기와 블록 이동

(10)

Get(A), Put(A) : 물리 레코드 입출력

Read(A, a), Write(A, a) : 논리 레코드 입출력

제9.2장 자료처리 구조

(11)

트랜잭션의 원자성을 유지하는 갱신 절차

(12)

9.3 로그 기법

Log ?

Database 접근에 대한 모든 내용을 로그에 기록.

ex. DB 접근 시간, 접근한 사람, 프로그램, 접근 내용,,,, 고장 발생 시 로그를 이용하여 Database를 복원

WAL

write-ahead-log: 복구의 원칙 로그 엔트리

- 트랜잭션 ID, 동작 이름, 참조된 객체(option),

동작 전의 객체의 값(option), 동작 후의 객체의 값

제9.3장 시스템 로그 기법

(13)

9.3 시스템 로그 기법

Log 구조

LSN: log sequence number. 로그 레코드의 식별자 prevLSN: 앞 레코드 연결용

transaction ID: 로그 레코드 생성 T type: 로그 레코드의 종류

pageID: T에 의하여 수정된 페이지의 id

offset, length: 수정된 부분의 오프셋과 길이

prevLSN transID type pageID length offset before image

after

image

모든 레코드 공통 type에 따라 추가되는 필드

(14)

제9.3장 시스템 로그 기법

로그의 기본 개념

(15)

고장 발생과 로그 정보

read A

A = A – 500 write A

read D T

1

read B

B = B + 500 write B

T

2

read C

C = C – 500 write C

read B

B = B + 500 write B

T

3

<T

1

,A,1000,500>

<T

2

,B,2000,2500>

<T

2

,commit>

<T

3

,C,3000,2500>

<T

3

,B,2500,3000>

<crash>

Log redo

undo

A = 1000 B = 2000 C = 3000

(16)

9.3.1 지연갱신 로그

고장이 많을 것이라는 가정에서,

트랜잭션이 정상 완료될 때까지 로그만 기록하고, Database 갱신을 지연하는 기법.

지연갱신 로그의 처리 절차 트랜잭션 실행 시

로그만 기록 정상 완료 시:

로그 정보로 DB 갱신 미 완료 시:

로그를 무시하고, 트랜잭션 재 실행

제9.3장 시스템 로그 기법

(17)

redo(Ti):

트랜잭션의 정상 완료 시,

트랜잭션 Ti가 갱신하려는 자료의 값들을 새로운 값으로 갱신

(18)

18

지연갱신 로그와 데이터베이스 상태

제9.3장 시스템 로그 기법

read A

A = A – 500 write A

T1

read B

B = B – 700 write B

read C

C = C + 700 write C

T2

A = 1000, B = 2000, C = 3000

<T2, start>

<T1, start>

<T2, B, 1300>

<T1, A, 500>

<T1, commit>

<T2, C, 3700>

<T2, commit>

지연 갱신 Log1

<T2, start>

<T1, start>

<T2, B, 1300>

<T1, A, 500>

<T1, commit>

<T2, C, 3700>

<T2, commit>

<crash>

지연 갱신 Log2

<T2, start>

<T1, start>

<T2, B, 1300>

<T1, A, 500>

<T1, commit>

<T2, C, 3700>

<crash>

지연 갱신 Log3

<T

2

, start>

<T

1

, start>

<T

2

, B, 1300>

<T

1

, A, 500>

<T

1

, commit>

<T

2

, C, 3700>

<T

2

, commit>

.

지연 갱신 Log

1

A=1000, B=2000, C=3000 .

. . A=500

B=1300, C=3700

데이터베이스 상태

(19)

9.3.2 즉시갱신 로그

고장이 적을 것이라는 가정

일단 로그와 DataBase를 갱신한 후,

고장이 발생하면 로그의 정보를 이용하여 DataBase를 복 구.

(20)

20

즉시 갱신 로그와 데이터베이스 상태

제9.3장 시스템 로그 기법

<T2, start>

<T2, B, 2000, 1300>

<T2, C, 3000, 3700>

<crash>

즉시 갱신 Log1

<T2, start>

<T2, B, 2000, 1300>

<T2, C, 3000, 3700>

<T2, commit>

<T1, start>

<T1, A, 1000, 500>

<crash>

즉시 갱신 Log2

<T2, start>

<T2, B, 2000, 1300>

<T2, C, 3000, 3700>

<T2, commit>

<T1, start>

<T1, A, 1000, 500>

<T1, commit>

<crash>

즉시 갱신 Log3

<T

2

, start>

<T

1

, start>

<T

2

, B, 2000, 1300>

<T

1

, A, 1000, 500>

<T

1

, commit>

<T

2

, C, 3000, 3700>

. .

즉시 갱신 Log

2

A=1000, B=2000, C=3000 .

B=1300 A=500

. C=3700

.

데이터베이스 상태

(21)

undo(Ti):

Ti가 갱신하려는 자료의 값들을 옛 값으로 복원.

redo(Ti):

Ti가 갱신하려는 자료의 값들을 새로운 값으로 갱신.

프로그램

지역변수

버 퍼 블록 A

블록 B 블록 C

물리 블록 a b

900 2100

A=1000 B=2000 A: 1000,900

B: 2000,2100

undo(T1)

2800

C: 3000,2800 C=2800 c

redo(T2)

(22)

9.3.3 Checkpoint/Restart

전체 로그 파일을 탐색: 시간 대량 소요.

redo()할 트랜잭션들은 대부분은 이미 데이터베이스를 갱 신.

또 redo()를 실행하는 것은 대부분 낭비.

제9.4장 Checkpoint

[표 9.1)] 검사점에서 수행하는 작업

번호 자료 항목 내 역

1 트랜잭션 정시 검사점에서 실행 중인 모든 트랜잭션을 일시 정지

2 로그 출력 모든 로그 레코드들을 안전 기억장치에 출력

3 버퍼 출력 주기억장치의 모든 버퍼 블록들을 디스크에 출력

4 검사점 출력 검사점 레코드를 로그에 저장하고 안전기억장치에 출력

5 트랜잭션 재실행 다시 트랜잭션들을 정상적으로 가동

(23)

Backup:

- 특정한 시간에 DB 내용의 충분한 복사.

- 백업시의 DB와 동일하게 복구 가능 Checkpoint:

- 디스크의 DB 상태를 강제적으로 모든 완료된 트랜잭션들 과 일치하도록 하는 연산.

- 디스크를 최신 상태로 유지하려는 것.

DBS는 파일들을 메모리에 두고 필요할 때 디스크를 갱신 하려,,

(24)

검사점에 의한 재 시작 절차

제9.4장 Checkpoint

<T

5

, start>

<T

5

, B, 2000, 1000>

<T

5

, A, 2000, 8000>

<checkpoint>

<T

5

, C, 3000, 2000>

<T

5

, commit>

<T

6

, start>

<T

6

, A, 8000, 5000>

<T

6

, commit>

<T

7

, start>

<T

7

, C, 2000, 3000>

<crash>

즉시 갱신 Log

2

후진 탐색 분석 Redo(T

i

) Undo(T

i

)

(25)

[표 9.2)] 고장 시점에서 수행하는 복구 작업

복구 작업 내역

1 로그 파일을 후진 탐색하여 검사점 <checkpoint> 레코드 탐색

2 검사점 이전에 시작한 트랜잭션의 첫 로그 레코드의 <Ti, start> 탐색 3 검사점부터 로그의 끝까지 복구를 위한 분석 시작

4 검사점에서 로그 파일의 끝까지 redo(Ti) 실행

5 로그 파일을 후진 탐색하여 검사점까지 undo(Ti) 실행

(26)

DBMS 고장 시 복구:

- 백업과 체크포인트 이용 디스크 고장 시:

- 백업 상태에서 다시 가동.

복구의 목표

- 시스템이 손상되었을 때의 상태로 복구. 또는 - 완료된 트랜잭션들의 갱신들을 디스크에 반영.

제9.4장 Checkpoint

(27)

검사점이 있는 로그 파일

<T

5

, start>

<T

5

, B, 1000>

<T

5

, A, 8000>

<checkpoint>

<T

5

, C, 2000>

<T

5

, commit>

<T

6

, start>

<T

6

, A, 5000>

<T

6

, commit>

<T

7

, start>

<T

7

, C, 3000>

<crash>

Log

1

<T

5

, start>

<T

5

, A, 2000, 1000>

<T

5

, B, 2000, 8000>

<T

5

, C, 3000, 2000>

<checkpoint>

<T

5

, commit>

<T

6

, start>

<T

6

, B, 8000, 5000>

<T

6

, commit>

<T

7

, start>

<T

7

, D, 2000, 3000>

<crash>

Log

2

(28)

9.4 Shadow Page

제9.4장 Checkpoint

(29)

그림자 페이지 및 현행 페이지 테이블

(30)

30

9.5 익힘 문제

1) 데이터베이스에서 고장 발생 시 반드시 복구시킬 수 있는 방법이 존재하는가? 있으면 방법을 설명하시오.

2) 안전 기억장치는 어떤 기능을 하며, 어떻게 만들 수 있는가?

3) WAL의 개념을 설명하시오.

4) log의 목적은 무엇인가?

5) 트랜잭션은 정상적으로 처리되었는데 입출력장치의 회로 고장으로 디스크에 반영이 되지 않았다면 어떻게 복구할 수 있는가?

6) 로그 파일의 구조를 설명하시오. 어떤 자료를 로그에 저장해야 하는 가?

7) 지연갱신 로그와 즉시갱신 로그의 개념 상의 차이점을 기술하시오.

8) 두 기법이 가장 잘 적용되는 응용분야를 설명하시오.

9) redo()와 undo()의 기능을 설명하시오.

10) Checkpoint의 개념을 설명하시오.

11) Checkpoint에서 수행하는 작업을 설명하시오.

12) Backup이 복구에 어떤 도움이 되는지 설명하시오.

13) 그림자 페이지 기법과 로그 기법의 장단점을 비교하시오.

각각 가장 적합한 응용분야를 설명하시오.

제9.5장 익힘 문제

참조

관련 문서

실험 방법은 기존 지도와 신규 지도에 포함된 객체를 비교하여 갱신 객체 를 추출하여 갱신 유형별로 갱신 객체를 분류한 후 갱신 유형별 파일을 생성하였다...

상기 참조 MMTP 패킷 헤더의 타임스탬프 필드 값 및 패킷 시퀀스 번호 필드 값에 체크섬 알고리즘을 적용함으로 써 산출된 값이 상기 MMTP 패킷 헤더에 포함된

웹 페이지

영화 : 홈페이지 개인화 음악 : 재생목록 개인화 상품 페이지

Display는 가능하나 저자의 이름과 성을 구분하기 곤란  복잡한 문서들의 교환에 부적합... 너무 복잡해서

• PlayMemories Home: 컴퓨터로 이미지를 가져와서 다양한 방법 으로 이미지를 사용할 수 있습니다 (22 페이지 ).. • Image Data Converter:

Die Mitarbeiter waren zehn Jahre hier tätig. Wir gedenken heute ihrer. / Wir gedenken heute der Mitarbeiter. 2격의 관계대명사는 또한 소유대명사나 부가어로

¡ Diese Frucht kann von Menschen nicht gegessen werden 비교: Diese Frucht ist nicht zu essen.. 비교: Diese Frucht ist für