DB & AWS Knowledge
리두 로그 (Redo Log) 본문
이 페이지에서는 Redo Log 에 대하여 다룬다.
(참고페이지 및 그림출처)
ko.wikipedia.org/wiki/%EB%A6%AC%EB%91%90_%EB%A1%9C%EA%B7%B8
goodgid.github.io/What-is-WAL/
DB를 운영하다 보면 DB가 예상치 못한 상황에서 갑자기 Down 되거나 그 위의 환경인 OS, 서버등이 Down 되어
이에 따른 영향을 받아 DB도 비정상 종료가 될 수 있다.
비정상 종료되기 시점까지의 데이터 변경내역까지 다시 원상복구 시키는 것은 모든 데이터베이스종류에 관계없이 가져야 할 필수 사항이다. 그래서 이 때, 다시 재기동을 시키게 되면 그 비정상 종료되기 시점까지의 데이터 변경 내역을 참조하여 다시 복구를 해야 할 필요가 있다.
이 때, 이를 대비해서 사용하는 공간이 리두로그다. 데이터베이스는 비정상 종료에 대비해서 항상 이 리두로그에 데이베이스에서 일어나는 모든 변경 내역을 보관한다. 그래야 복구시 모든 변경 이력을 파악 할 수 있기 때문이다.
보통 데이터베이스에서 다루는 다수 리두로그의 개념은 ORACLE 에서 시작되어 파생된다.
그래서 해당 페이지 에서도 ORACLE 기준으로 리두로그 개념을 다룬다.
아래와 같이 보통 리두로그는 그룹과 그룹내 멤버(파일)로 구성된다.
그룹내의 멤버들은 보관하는 데이터는 모두 같다. 즉, 다중화 개념으로 데이터 이력을 보관하는 것이다.
각 멤버들을 나누어 다른 디스크에 보관하는 이유도 다른 디스크에 멤버파일을 사용 하지 못할 시, 이에 대한
대응 책으로 동일그룹 내 다른 멤버 파일로 대체 할 수 있도록 하는 것이다.
리두로그는 LSN (Log Sequence Number) 라 하는 일종의 기록시점 번호로 각 로그들이 어디까지 데이터 변력이력을 보관하는지를 관리한다.
DB 내에 지속적으로 변경내역이 기록되고 이에 따라가 리두로그가 계속 차게 된다면 언젠가는 할당된 Redo Log 그룹은 용량이 full 이 되게 된다. 그러면 그 다음 그룹으로 이동하면서 넘어가기전의 LSN 도 전달되어 LSN 도 계속 증가 하게 된다. 이를 Log Switching 이라 한다.
리두로그에 적용되는 개념이 또 하나가 있는데, 위의 내용처럼 DB 는 비정상 기동에 대한 복구를 최우선 과제중 하나로 삼고 이에 따라 데이터베이스는 실제 데이터를 디스크에 기록되기 전에 Redo 먼저 기록을 하는 특성을 보인다. 이를 WAL (Write Ahead Logging) 이라 한다.
디스크에 써 내리는 데이터 변경내역은 Redo Log 에 기록이 먼저 끝나야 기록 될 수 있다. 이에 따라 리두로그 기록이 끝난 후, 메모리 영역에 있는 데이터 변경내역을 디스크로 내려 쓰는 작업을 Checkpoint 라 한다. Checkpoint 는 써내리는 작업뿐만 아니라 메모리에서 디스크로 어디 시점까지 써내렸는지에 대한 표식을 매기는 중요한 역할도 한다. (DB 가 이를 파악해야 다음 checkpoint 나 복구시점등을 잡을 때 기준점으로 삼을 수 있다.)
이 때, 어디 까지 쓰였는지에 대한 시점을 SCN (System Change Number) 이라는 DB가 관리하는 시점으로 파악 및 기록 한다.
여기에 추가로 생각 해 볼 내용은 Log Switch 가 계속 되어 한바퀴가 돌게 되면 그 이전에 기록된 내용들은 디스크 기록 및 checkpoint 가 끝난걸로 처리되어 그 다음 변경내역을 받아 들이는데 이에 따라, 이전 기록 내용들은 전부 덮어 씌워 진다. 덮어 씌워지는 내용도 나중에 DB 비정상 작동 시 복구에 필요 할 수도 있는 내용이다. 이에 따라 이에 대한 내용 까지 전부다 지속적으로 보관하도록 도입된 개념이 archive 다.
각 데이터베이스들은 이 Redo Log 영역을 보관할 공간과 이를 써내리는 역할을 하는 프로세스나 스레드들이 있다.
(Ex : ORACLE 의 LGWn) 또한, 이 개념을 시작으로 다른 데이터베이스들도 매우 유사한 Redo Log 개념을 응용하나 약간씩은 명칭등이 다르다. (Ex : PostgreSQL 의 Redo Log 파일은 WAL 개념과 같이 융합되기 때문에 WAL 파일이라 한다.)
'DB 관련 지식 > DB 기본 개념' 카테고리의 다른 글
Dead Lock 개념 (0) | 2024.01.24 |
---|---|
latch, mutex, enqueue (0) | 2023.06.16 |
Physical Replication 과 Logical Replication (0) | 2023.05.12 |
관제, 모니터링 (Monitoring) (0) | 2021.06.03 |
인덱스 (Index) (0) | 2021.03.09 |