본문 바로가기
[AWS]/STUDY

[AWS] 트랜잭션 로그

by METAVERSE STORY 2022. 9. 13.
반응형

 

 

 

DB를 관리하다보면 로그관련 문제를 접하게 될때가 많다.
그중에 중요한것은 트랜잭션 로그 또는 데이터베이스 로그인데, 해당 로그는 데이터베이스에서 충돌이나 하드웨어 고장이 있었다 해도 데이터베이스 관리 시스템의 ACID 특성을 보장하기 위한 조작 이력을 가리킨다.

여기서 트랜잭션의 ACID 특성이라 함은 아래와 같다.

 - 원자성(Atomicity) : 트랜잭션 내에 있는 모든 작업이 완료되거나 모든 작업이 완료되지 않아야 한다.
즉, 트랜잭션 내의 작업 중 하나라도 에러가 발생하면 트랜잭션 내의 모든 작업이 롤백(Rollback) 되어야 한다.

 - 일관성(Consistency) : 트랜잭션 중에 오류 없이 유효한 데이터만 데이터베이스에 저장되어야 한다.

 - 격리성(Isolation) : 트랜잭션 중에 변경된 내용이 트랜잭션이 완료되기 전까지 다른 트랜잭션에 영향을 미쳐서는 안된다.

 - 영속성(Durability) : 트랜잭션이 완료된 경우 시스템 고장이나 네트워크 에러 등으로 데이터가 유실되지 않고 정상적으로 기록되어야 한다.

 

 

 

로그는 전원이 끊겨도 데이터를 저장할 수 있는 보조 기억 장치에 파일에 출력되는 경우가 많다. 데이터베이스를 시작한 후 일관성 없는 상태이거나 제대로 종료되지 않은 것을 감지하면, 데이터베이스 관리 시스템은 트랜잭션 로그를 읽고 다음과 같이 실시한다. 데이터 무결성과 지속성을 보장하기 위해 필요하다.

 * 완료하지 않은 또는 롤백된 트랜잭션이 수행한 작업을 취소한다.

 * 커밋하고 있지만 데이터베이스에 반영되지 않은 작업을 다시 수행한다.

 * 트랜잭션 로그의 목표는 데이터 로그와는 다르다. 일반적으로 데이터 로그는 조작 이력을 쉽게 읽을수 있는 표현으로 기록하기 위해 사용된다. 따라서 데이터베이스 관리 시스템은 트랜잭션 로그 및 데이터 로그를 모두 제공하는 경우가 일반적이다.

트랜잭션에는 아래와 같은 기타 특징이 있다.

트랜잭션 로그(Transaction Logs)
 - 데이터 변경 작업 이력은 트랜잭션 로그 파일에 기록된다.
 - 사용자가 데이터를 복구 할 때 아주 중요하게 사용된다.

트랜잭션 롤백(Transaction Roll Back)
 - 문제가 발생하여 변경 작업을 완료하지 못하면, 트랜잭션 로그를 참조하여 변경 작업 이전으로 되돌린다.

트랜잭션 롤 포워드(Transaction Roll Forward)
 -  트랜잭션 로그에 데이터 변경 작업이 완료되었다고 기록 되었으나, 그 내용이 데이터 파일에 아직 반영되지 못한 상태라면 SQL Server 서비스가 다시 시작될 때 트랜잭션 로그를 참조해 데이터 변경 작업을 반영한다.

하지만 이런 트랜잭션도 용량이 커지면 문제가 발생한다.

그래서 아래와 같이 트랜잭션 로그파일 삭제 및 잘라내는 방법이 있다.

우선 DB와 로그 크기 확인을 위해 아래와 같은 쿼리를 실행한다.

SELECT * FROM sys.master_files
WHERE database_id like '%database_name%'

데이터베이스(DB)와 로그(Log) 크기를 축소하기 위한 쿼리문이다.
로그는 "데이터베이스명_LOG"으로 대부분 되어 있다.

- 로그 백업 및 잘라내기 (잘라내기를 더 권장함)
1. BACKUP LOG 'DB명' TO '디바이스명(장치명)'  --로그백업
2. BACKUP LOG 'DB명' WITH TRUNCATE_ONLY --로그 잘라내기

- 로그 축소하기(Truncateonly를 더 권장함)
1. DBCC SHRINKFILE('로그파일명', 파일크기) --파일크기를 정해주어 파일을 축소하는 방법
2. DBCC SHRINKFILE('로그파일명', TRUNCATEONLY) --불필요한 로그 파일을 잘라 파일을 축소하는 방법

USE [DataBase];
GO
-- Truncate the log by changing the database recovery model to SIMPLE.
ALTER DATABASE [DataBase]
SET RECOVERY SIMPLE;
GO
-- Shrink the truncated log file to 10 MB. <- 로그파일을 10MB로 축소
DBCC SHRINKFILE ([DataBase_Log], 10);
GO
-- Reset the database recovery model.
ALTER DATABASE [DataBase]
SET RECOVERY FULL;
GO

위 쿼리문을 통해서 로그 축소 작업을 진행하는데, DB_NAME을 데이터베이스 이름으로 변경하여 실행한다

 

출처 : https://ko.wikipedia.org/wiki/%ED%8A%B8%EB%9E%9C%EC%9E%AD%EC%85%98_%EB%A1%9C%EA%B7%B8

 

트랜잭션 로그 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전.

ko.wikipedia.org

https://crosstheline.tistory.com/117

 

[MSSQL] 트랜잭션 로그파일 삭제 및 잘라내기

MSSQL 트랜잭션 로그파일 삭제 및 줄이는 방법 우선 DB와 로그 크기 확인을 위해 아래와 같은 쿼리를 실행해보자. SELECT * FROM sys.master_files WHERE database_id like '%database_name%' 데이터베이스(DB)와..

crosstheline.tistory.com

https://danew.tistory.com/25

 

[MSSQL] 트랜잭션 로그 / 로그 축소

1. 트랜잭션 (Transactions)      - 데이터베이스에서 처리되는 작업의 논리적인 처리 단위     - 트랜잭션 하나에 여러 작업의 처리가 포함 될 수 도 있다     - ACID 속성  ..

danew.tistory.com

https://starfactory.tistory.com/125

 

[Database] 트랜잭션의 네 가지 속성

[Database] 트랜잭션의 네 가지 속성 Atomicity (원자성) 트랜잭션 내에 있는 모든 작업이 완료되거나 모든 작업이 완료되지 않아야 한다. 즉, 트랜잭션 내의 작업 중 하나라도 에러가 발생하면 트랜잭

starfactory.tistory.com

 

 

 

반응형

'[AWS] > STUDY' 카테고리의 다른 글

[중요][참고] HTTP API와 REST API 이란!!  (85) 2023.12.21
[참고] HTTP와 REST API이란 무엇인가!!  (86) 2023.12.21
[AWS] MSSQL 클러스터 방법  (0) 2022.10.14
[AWS] Endpoint란  (0) 2022.09.28
[AWS] Route53 도메인 연결  (0) 2022.08.15
[AWS] Route53이란  (0) 2022.08.12
[AWS] Cloud Front의 정의  (0) 2022.08.12
[AWS] 리눅스 파일 시스템  (0) 2022.08.12

댓글