λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’» Computer Science/λ°μ΄ν„°λ² μ΄μŠ€

λ°μ΄ν„°λ² μ΄μŠ€(DataBase) 회볡(Recovery)λž€?

by Jay Din 2023. 9. 4.
728x90
λ°˜μ‘ν˜•

λ°μ΄ν„°λ² μ΄μŠ€(DataBase) νšŒλ³΅(Recovery)

νŠΈλžœμž­μ…˜λ“€μ„ μˆ˜ν–‰ν•˜λŠ” 도쀑 μž₯μ• λ‘œ 인해 μ†μƒλœ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ†μƒλ˜κΈ° μ΄μ „μ˜ 정상적인 μƒνƒœλ‘œ λ³΅κ΅¬μ‹œν‚€λŠ” μž‘μ—…μ„ λ§ν•©λ‹ˆλ‹€.

* νŠΈλžœμž­μ…˜(Transaction)
λ°μ΄ν„°λ² μ΄μŠ€μ˜ μƒνƒœλ₯Ό λ³€ν™”μ‹œν‚€κΈ° ν•΄μ„œ μˆ˜ν–‰ν•˜λŠ” μž‘μ—…μ˜ λ‹¨μœ„λ₯Ό λœ»ν•œλ‹€.

 

μž₯μ• μ˜ μ›μΈμœΌλ‘œλŠ” λ””μŠ€ν¬ λΆ•κ΄΄, 전원 κ³ μž₯으둜 μΈν•œ ν•˜λ“œμ›¨μ–΄ 결함, μ†Œν”„νŠΈμ›¨μ–΄μ˜ 논리 였λ₯˜λ‘œ μΈν•œ μ†Œν”„νŠΈμ›¨μ–΄ 결함, μ‚¬λžŒμ˜ μ‹€μˆ˜(휴먼 μ—λŸ¬) λ“± μ—¬λŸ¬κ°€μ§€κ°€ μžˆμŠ΅λ‹ˆλ‹€.

이와 같은 μ›μΈμœΌλ‘œ λ°œμƒλ˜λŠ” μž₯μ• λŠ” λ‹€μŒκ³Ό 같이 크게 3가지 μœ ν˜•μœΌλ‘œ ꡬ뢄할 수 있으며 μ΄λŸ¬ν•œ μž₯애에 λŒ€ν•΄ νšŒλ³΅μ„ μœ„ν•΄ DBMSλŠ” νšŒλ³΅κ΄€λ¦¬μž(recovery manager)λ₯Ό 두고 λŒ€λΉ„ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

νŠΈλžœμž­μ…˜ μž₯μ•  νŠΈλžœμž­μ…˜ λ‚΄μ˜ 논리적 였λ₯˜λ‚˜ λ‚΄λΆ€ 쑰건 즉, μž…λ ₯ λ°μ΄ν„°μ˜ λΆˆλŸ‰, λ°μ΄ν„°μ˜ 뢈λͺ…, μ‹œμŠ€ν…œ μžμ›μ˜ κ³Όλ‹€ μ‚¬μš© μš”κ΅¬ λ“±μœΌλ‘œ 정상적인 싀행을 계속할 수 μ—†λŠ” μƒνƒœ
μ‹œμŠ€ν…œ μž₯μ•  ν•˜λ“œμ›¨μ–΄μ˜ μ˜€λ™μž‘μœΌλ‘œ 메인 λ©”λͺ¨λ¦¬μ— μžˆλŠ” μ •λ³΄μ˜ μ†μ‹€μ΄λ‚˜ ꡐ착 μƒνƒœκ°€ λ°œμƒν•˜μ—¬ 더 이상 싀행을 계속할 수 μ—†λŠ” μƒνƒœ
λ―Έλ””μ–΄ μž₯μ•  λ””μŠ€ν¬ ν—€λ“œ λΆ•κ΄΄λ‚˜ κ³ μž₯으둜 인해 μ €μž₯μž₯치의 λ°μ΄ν„°λ² μ΄μŠ€ 일뢀 λ˜λŠ” μ „λΆ€κ°€ μ†μƒλœ μƒνƒœ

 

 

λ°μ΄ν„°λ² μ΄μŠ€ 회볡의 κΈ°λ³Έ μ›λ¦¬λŠ” 데이터 쀑볡에 μžˆμŠ΅λ‹ˆλ‹€.

즉, λ°μ΄ν„°λ² μ΄μŠ€μ— ν¬ν•¨λœ 정보λ₯Ό μ‹œμŠ€ν…œμ˜ μ–΄λ”˜κ°€μ— λ³„λ„λ‘œ μ€‘λ³΅ν•΄μ„œ μ €μž₯ν•΄ λ‘μ—ˆλ‹€κ°€ μž₯μ• μ‹œ 이λ₯Ό λ‹€μ‹œ λ³΅μ›ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€.

데이터 쀑볡 기법

이 쀑볡 κΈ°λ²•μ—λŠ” λ₯ν”„(dump)와 둜그(log)κ°€ μžˆμŠ΅λ‹ˆλ‹€.

덀프(dump) λ€ν”„λŠ” 주기적으둜 λ°μ΄ν„°λ² μ΄μŠ€ 전체λ₯Ό λ‹€λ₯Έ μ €μž₯ μž₯μΉ˜μ— λ³΅μ œν•˜λŠ” 것
둜그(log) λ‘œκ·ΈλŠ” λ°μ΄ν„°λ² μ΄μŠ€κ°€ 변경될 λ•Œλ§ˆλ‹€ λ³€κ²½λ˜λŠ” λ°μ΄ν„°μ˜ λ³€κ²½ μ „/ν›„μ˜ 값을 λ³„λ„μ˜ νŒŒμΌμ— κΈ°λ‘ν•΄λ‘λŠ” 것
λ°˜μ‘ν˜•

 

Redo, Undo

μž₯μ• κ°€ λ°œμƒν–ˆμ„ λ•Œ νšŒλ³΅μ„ μœ„ν•΄ μ·¨ν•  수 μžˆλŠ” μ‘°μΉ˜λŠ” 일반적으둜 λ‹€μŒκ³Ό 같이 두가지 μœ ν˜•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

Redo: μž¬μ‹€ν–‰

μ˜μ†μ„± 보μž₯, λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μš© μžμ²΄κ°€ 손상이 된 경우 κ°€μž₯ 졜근의 λ³΅μ œλ³Έμ„ μ μž¬μ‹œν‚¨ λ’€ 이 볡제본 이후에 μΌμ–΄λ‚œ λ³€κ²½λ§Œμ„ 둜그λ₯Ό μ΄μš©ν•˜μ—¬ μž¬μ‹€ν–‰ν•¨μœΌλ‘œμ¨ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ³΅μ›ν•˜λŠ” 것

* μ˜μ†μ„±(Persistence)
데이터λ₯Ό μƒμ„±ν•œ ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜λ”λΌλ„ 데이터가 사라지지 μ•ŠλŠ” νŠΉμ„±μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

Undo: μ·¨μ†Œ

μ›μžμ„± 보μž₯, λ°μ΄ν„°λ² μ΄μŠ€ λ‚΄μš© μžμ²΄λŠ” μ†μƒλ˜μ§€ μ•Šμ•˜μ§€λ§Œ λ³€κ²½ μ€‘μ΄κ±°λ‚˜ λ³€κ²½λœ λ‚΄μš©μ— λŒ€ν•œ 신뒰성을 μžƒμ–΄λ²„λ¦° 경우 둜그λ₯Ό μ΄μš©ν•˜μ—¬ λͺ¨λ“  변경듀을 μ·¨μ†Œμ‹œν‚΄μœΌλ‘œμ¨ μ›λž˜μ˜ λ°μ΄ν„°λ² μ΄μŠ€ μƒνƒœλ‘œ λ³΅μ›ν•˜λŠ” 것

* μ›μžμ„±(atomicity)
μ‹œμŠ€ν…œμ—μ„œ ν•œ νŠΈλžœμž­μ…˜μ˜ 연산듀이 λͺ¨λ‘ μ„±κ³΅ν•˜κ±°λ‚˜, λ°˜λŒ€λ‘œ μ „λΆ€ μ‹€νŒ¨λ˜λŠ” μ„±μ§ˆμ„ μ˜λ―Έν•©λ‹ˆ.

 

둜그λ₯Ό μ΄μš©ν•œ 회볡

둜그λ₯Ό μ΄μš©ν•œ 회볡 기법은 데이터λ₯Ό λ³€κ²½ν•œ μ—°μ‚° κ²°κ³Όλ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— λ°˜μ˜ν•˜λŠ” μ‹œμ μ— 따라 두 κ°€μ§€λ‘œ λ‚˜λ‰©λ‹ˆλ‹€.

두 가지 경우 λͺ¨λ‘ μž₯μ•  λ°œμƒμ— λŒ€λΉ„ν•˜κΈ° μœ„ν•΄ 데이터 변경에 λŒ€ν•œ λ‚΄μš©μ„ 둜그 νŒŒμΌμ— κΈ°λ‘ν•˜λ©°, νŠΈλžœμž­μ…˜μ—μ„œ 데이터 λ³€κ²½ 연산이 μ‹€ν–‰λ˜μ—ˆμ„ λ•Œ,

둜그 νŒŒμΌμ— 둜그 기둝을 λ¨Όμ € κΈ°λ‘ν•œ ν›„ λ°μ΄ν„°λ² μ΄μŠ€μ—μ„œ λ³€κ²½ 연산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

μžμ—°κ°±μ‹  νšŒλ³΅κΈ°λ²•: Redo μˆ˜ν–‰

νŠΈλžœμž­μ…˜μ΄ μˆ˜ν–‰λ˜λŠ” λ™μ•ˆμ—λŠ” 데이터 λ³€κ²½ μ—°μ‚°μ˜ κ²°κ³Όλ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— μ¦‰μ‹œ λ°˜μ˜ν•˜μ§€ μ•Šκ³  둜그 νŒŒμΌμ— κΈ°λ‘ν•΄λ‘μ—ˆλ‹€κ°€, νŠΈλžœμž­μ…˜μ΄ λΆ€λΆ„ μ™„λ£Œ(commit)된 후에 λ‘œκ·Έμ— 기둝된 λ‚΄μš©μ„ μ΄μš©ν•΄ λ°μ΄ν„°λ² μ΄μŠ€μ— ν•œ λ²ˆμ— λ°˜μ˜ν•©λ‹ˆλ‹€.

  • νŠΈλžœμž­μ…˜ 컀밋 μ™„λ£ŒκΉŒμ§€ κ°±μ‹  λ‚΄μš©μ„ λ‘œκ·Έμ—λ§Œ μ €μž₯ν•˜κ³  DB에 μ €μž₯ν•˜μ§€ μ•Šκ³  지연
  • 쀑간에 갱신을 ν•˜μ§€ μ•Šμ•˜μŒμœΌλ‘œ Undoκ°€ ν•„μš” μ—†κ³ , μ›μžμ„± 보μž₯
  • Redo만 ν•˜λ©΄ 됨

μ¦‰μ‹œκ°±μ‹  νšŒλ³΅κΈ°λ²•: Redo, Undo μˆ˜ν–‰

νŠΈλžœμž­μ…˜ μˆ˜ν–‰ 쀑에 데이터λ₯Ό λ³€κ²½ν•œ μ—°μ‚°μ˜ κ²°κ³Όλ₯Ό λ°μ΄ν„°λ² μ΄μŠ€μ— μ¦‰μ‹œ λ°˜μ˜ν•˜λŠ” 경우 μ‚¬μš©ν•©λ‹ˆλ‹€.

  • 데이터 λ³€κ²½ μ‹œ λ‘œκ·Έμ™€ DB에 μ¦‰μ‹œ κ°±μ‹ 
  • μ»€λ°‹λ˜κΈ° 전에 μž₯μ• κ°€ λ‚˜λ©΄ Undo, 컀밋 후에 μž₯μ• κ°€ λ‚˜λ©΄ Redo μˆ˜ν–‰

 

검사 μ‹œμ (Check point) 회볡 기법

μ›μΉ™μ μœΌλ‘œλŠ” 둜그 전체λ₯Ό 쑰사해야 λ˜λŠ”λ°, μ‹œκ°„μ΄ λ„ˆλ¬΄ 많이 κ±Έλ¦½λ‹ˆλ‹€.

λ˜ν•œ Redoλ₯Ό ν•  ν•„μš”κ°€ μ—†λŠ” νŠΈλžœμž­μ…˜μ„ 또 λ‹€μ‹œ Redoν•΄μ•Όν•˜λŠ” λ¬Έμ œκ°€ μƒκΉλ‹ˆλ‹€.

μ΄λŸ¬ν•œ λ¬Έμ œμ μ„ ν•΄κ²°ν•˜κΈ° μœ„ν•œ 기법이 κ²€μ‚¬μ‹œμ (check point) λ°©λ²•μž…λ‹ˆλ‹€.

검사 μ‹œμ  회볡 기법은 둜그 회볡 기법과 같은 λ°©λ²•μœΌλ‘œ 둜그 기둝을 μ΄μš©ν•˜λ˜, 일정 μ‹œκ°„ κ°„κ²©μœΌλ‘œ 검사 μ‹œμ (Check point)을 λ§Œλ“€μ–΄ λ‘‘λ‹ˆλ‹€.

그리고 μž₯μ• κ°€ λ°œμƒν•˜λ©΄ κ°€μž₯ 졜근 검사 μ‹œμ  μ΄μ „μ˜ νŠΈλžœμž­μ…˜μ—λŠ” 회볡 μž‘μ—…μ„ μˆ˜ν–‰ν•˜μ§€ μ•Šκ³ , μ΄ν›„μ˜ νŠΈλžœμž­μ…˜μ—λ§Œ 회볡 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€.

 

일정 μ‹œκ°„ κ°„κ²©μœΌλ‘œ 검사 μ‹œμ μ΄ 되면 메인 λ©”λͺ¨λ¦¬μ— μžˆλŠ” λͺ¨λ“  둜그 λ ˆμ½”λ“œλ₯Ό μ•ˆμ • μ €μž₯ μž₯μΉ˜μ— μžˆλŠ” 둜그 νŒŒμΌμ— κΈ°λ‘ν•˜κ³ , νŠΈλžœμž­μ…˜μ˜ 데이터 λ³€κ²½ λ‚΄μš©μ„ λ°μ΄ν„°λ² μ΄μŠ€μ— λ°˜μ˜ν•©λ‹ˆλ‹€. 둜그 νŒŒμΌμ—λŠ” <checkpoint L>ν˜•μ‹μ˜ 둜그 λ ˆμ½”λ“œλ₯Ό κΈ°λ‘ν•©λ‹ˆλ‹€.

λ°˜μ‘ν˜•

 

λ―Έλ””μ–΄(λ””μŠ€ν¬) 회볡 기법

λ―Έλ””μ–΄(λ””μŠ€ν¬) 회볡 기법은 전체 λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ‚΄μš©μ„ 일정 μ£ΌκΈ°λ§ˆλ‹€ λ‹€λ₯Έ μ•ˆμ „ν•œ μ €μž₯ μž₯μΉ˜μ— λ³΅μ‚¬ν•΄λ‘λŠ” 덀프(dump)λ₯Ό μ΄μš©ν•©λ‹ˆλ‹€.

λ―Έλ””μ–΄(λ””μŠ€ν¬) μž₯μ• κ°€ λ°œμƒν•˜κ²Œ 되면 κ°€μž₯ 졜근의 dump 정보λ₯Ό μ΄μš©ν•΄ μž₯μ• κ°€ λ°œμƒˆμ˜€λ””κΈ° μ΄μ „μœΌλ‘œ λ³΅κ΅¬ν•œ ν›„, 이것이 λλ‚˜λ©΄ 둜그λ₯Ό μ΄μš©ν•˜μ—¬ κ°€μž₯ 졜근의 μΌκ΄„λœ μƒνƒœλ‘œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ³΅μ›μ‹œν‚΅λ‹ˆλ‹€.

 

전체 λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό λ‹€λ₯Έ μ €μž₯ μž₯μΉ˜μ— λ³΅μ‚¬ν•˜λŠ” 것은 λΉ„μš©μ΄ 많이 λ“€κ³  λ³΅μ‚¬ν•˜λŠ” λ™μ•ˆμ— νŠΈλžœμž­μ…˜ μˆ˜ν–‰μ„ 쀑단해야 ν•˜λ―€λ‘œ λ―Έλ””μ–΄ 회볡 기법은 CPUκ°€ λ‚­λΉ„λœλ‹€λŠ” 단점이 μžˆμŠ΅λ‹ˆλ‹€.

 

 

 


μ°Έκ³ 

https://chonchony.tistory.com/entry/%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%ED%9A%8C%EB%B3%B5%EA%B3%BC-%EB%B3%91%ED%96%89%EC%A0%9C%EC%96%B4-%ED%9A%8C%EB%B3%B5-%EA%B8%B0%EB%B2%95

https://t1.daumcdn.net/cfile/tistory/161F7C374D78CD8020

https://kosaf04pyh.tistory.com/299

728x90
λ°˜μ‘ν˜•