SAP HANA DB 에서 백업/복구에서 중요한 한 부분은 모든 변경사항에 대해서 기록되는 Log 이다.
SAP HANA DB 의 Log 는 크게 메모리(Log Buffer)/ 디스크(Log Segment)/ 백업(Log Backup) 으로 나눠진다.
여기서 Log Mode 는 Log Segment 의 처리에 관한 설정이다.
Log Buffer 에는 모든 트랜잭션에 의한 변경사항들이 메모리상으로 기록된다.
Log Buffer 가 Full 이 되거나, Commit 명령이 수행되면 Log Buffer 에 할당된 Log Segment(디스크) 에 해당 내용이 기록된다.
Log Segment 은 디스크에 기록된 Log Buffer 이다. 메모리가 아닌 디스크에 존재하기 때문에 비휘발성이며, 이러한 개별 Log Segment 전체를 통틀어 Log Volume 으로 지칭한다.
Log Backup 은 Log Mode Normal
를 사용할때, 설정이 가능하다.
Log Segment 의 재사용을 위해 정기적으로 Log Segment 파일을 백업으로 떨구고, 해당 Log Segment 는 시스템에서 다시 사용할 수 있게 된다.
만약 Log Mode Normal
을 사용 중 일때, Log Backup 을 사용하지 않는다면, Log Volume 이 가득찰때까지 Log Segment 가 생기게 되고, 가득 차게 되면 DB 가 정지하게 되므로, 반드시 Log Backup 을 사용해야 한다.
Log Segment 가 Full 이거나, 임계시간을 넘겨 Close 되거나, DB 가 시작될때, Log Backup 이 된다.
SAP HANA 신규 설치 후, 초기 overwrite 모드로 수행된다.
이 후, 첫 Full Data Backup 을 수행하면 자동으로 기본 모드인 Normal 로 전환되고 로그 백업이 수행된다.
Log Mode 에 대한 설정은 다음 파라미터에서 가능하다.
global.ini -> [persistence] -> log_mode
normal 모드에서는 Log Segment 가 설정된 트리거에 따라 Log Backup File 로 백업된다.
트리거는 Log Segment 가 Full 이거나, 설정된 간격(Default 15분)에 따라 백업된다.
Time-Based Recovry 를 위해서는 normal 모드를 사용해야 한다.
Log Segment 가 백업되고 Savepoint 에 기록되면 해당 공간은 해제되고, DB 에서 새 로그 항목을 다시 덮어쓸 수 있게 된다.
overwrite 모드에서는 Log Backup 이 생성되지 않고, Log Segment 를 계속 덮어쓴다.
Savepoint 가 기록되면 Log Segment 가 즉시 해제되어, DB 에서 바로 새 로그 항목을 덮어 쓴다.
overwrite 모드는 복구할 필요가 없는 임시 시스템, 테스트 설치 같은 경우에 유용하게 사용할 수 있다.
운영 시스템에서는 Normal 모드를 권장한다.
Overwrite 모드 시, Time-based Recovry 가 불가능해지기 때문이다.
대규모 변경작업이 있거나, 마이그레이션 시 등등 Log Segment 가 쌓이는 속도가 빨라지면 Log Volume 이 Full 이 될 수도 있다.
이때, OS 단에서 Log Volume 으로 이동해 Log Segment 강제로 삭제하면, DB 가 로그 영역을 사용할 수 없게 되므로 강제로 중지될 수 있으며, 다시 시작할 수 없게 될지도 모른다.
따라서 다음과 같은 방법으로 Log Volume 을 정리해야 한다.
SAP HANA DB Log 볼륨 FULL 이슈 처리__TroubleShooting for SAP HANA DB Log Volume FULL Issue