Q. 로깅을 이용한 데이터베이스의 회복에 대해서 간략히 설명해주세요

2023. 3. 9. 17:46CS

728x90

위 질문에서 핵심 명사들을 먼저 한번 뜯어보자

 

로깅이란?

In computing, logging is the act of keeping a log of events that occur in a computer system, such as problems, errors or just information on current operations. These events may occur in the operating system or in other software. A message or log entry is recorded for each such event. These log messages can then be used to monitor and understand the operation of the system, to debug problems, or during an audit. Logging is particularly important in multi-user software, to have a central overview of the operation of the system.

해석
컴퓨팅에서 로깅은 문제, 오류 또는 현재 작업에 대한 정보와 같이 컴퓨터 시스템에서 발생하는 이벤트 로그를 유지하는 행위입니다. 이러한 이벤트는 운영 체제나 다른 소프트웨어에서 발생할 수 있습니다. 이러한 각 이벤트에 대해 메시지 또는 로그 항목이 기록됩니다. 그런 다음 이러한 로그 메시지를 사용하여 시스템 작동을 모니터링 및 이해하거나 문제를 디버깅하거나 감사 중에 사용할 수 있습니다. 로깅은 다중 사용자 소프트웨어에서 시스템 작동에 대한 중앙 개요를 갖는 데 특히 중요합니다.


[출처] : https://en.wikipedia.org/wiki/Logging_(computing)

요약하자면 컴퓨터 시스템에서 일어나는 일들에 대해 기록을 하는 행위를 말한다.

그렇다면 이를 DBMS 의 측면에 대입해서 해석을 하게 된다면

DBMS 에서 일어나는 모든 변경 작업을 기록하는 기능 이라고 볼 수 있다.

데이터베이스의 회복이란?

It is the method of restoring the database to its correct state in the event of a failure at the time of the transaction or after the end of a process.

해석
트랜잭션 시 또는 프로세스 종료 후 장애가 발생한 경우 데이터베이스를 올바른 상태로 복원하는 방법입니다.

[출처] : https://www.w3schools.in/dbms/data-recovery-in-dbms

데이터베이스의 회복은 예기치 못한 사고 전으로 데이터베이스를 되돌리는 방법이다. 

 

그렇다면, 로깅을 이용한 데이터베이스 회복이란?

이는 로그 파일을 이용하여 데이터베이스의 상태를 이전 상태로 되돌리거나 손상된 부분을 복구하는 것이다.

이에 대한 예시로 트랜잭션이 수행될 때를 생각해보자.

 

트랜잭션이 수행되는 동안 로그 파일에는 해당 트랜잭션에 대한 모든 변경 내역(INSERT, UPDATE, DELETE ) 기록된다. 이러한 로그 파일을 이용하여 시스템이 예기치 않게 중단되었을 , 중단 직전에 로그 파일을 이용하여 변경 내역을 적용하면 데이터베이스를 이전 상태로 되돌릴 있다.

 

또한, 데이터베이스에 손상이 발생했을 때도 로그 파일을 이용하여 회복 작업을 수행할 .

예를 들어, 디스크의 문제로 인해 데이터베이스의 일부가 손상된 경우, 해당 부분의 이전 상태로 되돌린 로그 파일에 기록된 변경 내역을 다시 적용함으로써 손상된 부분을 복구할 있다.

 

따라서, 로깅은 데이터베이스의 회복에 중요한 역할을 하는데, 이는 데이터베이스가 안정적으로 운영되는 필수적인 요소 하나이다.

 

 

번외

이번 질문을 공부하면서, 과거 Only Fresh (남궁성과 함께하는 포트폴리오 프로젝트) 에서 스냅샷(snapshot)을 이용해 데이터베이스를 과거 상태로 복구했던 기억이 나면서 질문이 하나 떠올랐다.

그렇다면 스냅샷도 로깅의 일종인가?

이거에 대한 대답은 NO 이다.

둘은 아얘 다른 개념이다.

 

스냅샷 : 특정 시점의 상태를 저장한 것. 일반적으로 데이터베이스의 백업 작업에서 사용되고, 백업된 데이터베이스를 이용하여 이전 상태로 복원하는 작업이 가능함.

로깅 : 데이터베이스에서 일어나는 모든 변경 작업을 기록하는 것. 로그 파일에 저장된 변경 내역은 데이터베이스의 회복 작업에 사용된다.

 

즉, 스냅샷은 특정 상태이고 로깅은 모든 변경사항을 기록하는 것이다.

 

그리고 이러한 차이때문에 목적성에서도 차이가 있다.

스냅샷 : DB 의 백업 및 복원을 위해 사용

로깅 : DB 의 안정성을 보장하기 위해 사용

 

그렇다면 의미와 목적이 다른 데, 무엇을 선택해야 하나?

정답은 어느 하나가 아니라 둘 다이다. 

데이터베이스를 운영하는 데 있어서 둘 다 너무나 중요한 역할을 가지고 있고 필수적이라고 할 수 있다.

728x90

'CS' 카테고리의 다른 글

HTTP GET vs POST?  (0) 2023.03.17
트랜잭션의 연산 중 ROLLBACK 이란?  (0) 2023.03.16
거품 정렬(Bubble Sort)이란?  (0) 2023.03.15
프록시란(proxy)?  (0) 2023.03.14
가상 메모리란?  (0) 2023.03.11