Database/Mssql
MSSQL - 로그파일 축소
코드 스미스
2024. 12. 14. 14:38
MSSQL에서 데이터베이스의 복구 모델을 "단순(SIMPLE)"로 설정하면 트랜잭션 로그가 자동으로 관리되므로 로그 파일 축소와 관련된 복잡성을 줄일 수 있습니다. 또한, "단순" 복구 모델을 사용하는 경우 로그 파일이 자동으로 정리되므로 일반적으로 로그 파일의 크기가 커지는 것을 방지할 수 있습니다.
단순 복구 모델을 설정하고 데이터베이스를 정리하는 방법은 다음과 같습니다:
- 데이터베이스 복구 모델 변경:
- 먼저 필요한 데이터베이스의 복구 모델을 "단순"으로 변경합니다.
- ALTER DATABASE [데이터베이스이름] SET RECOVERY SIMPLE;
- 먼저 필요한 데이터베이스의 복구 모델을 "단순"으로 변경합니다.
- 트랜잭션 로그 정리:
- 복구 모델을 "단순"으로 변경하면 트랜잭션 로그가 자동으로 정리되므로 별도의 로그 백업이 필요하지 않습니다. 그러나 로그 파일의 크기를 줄이고 싶다면 여전히 로그 파일을 축소할 수 있습니다. 축소 명령은 다음과 같습니다.
DBCC SHRINKFILE('로그파일논리이름', 1);
'로그파일논리이름' 은 데이터베이스의 로그 파일 이름입니다. 이 이름은 다음 쿼리로 확인할 수 있습니다:
USE [데이터베이스이름];
GO
EXEC sp_helpfile;
- 복구 모델을 "단순"으로 변경하면 트랜잭션 로그가 자동으로 정리되므로 별도의 로그 백업이 필요하지 않습니다. 그러나 로그 파일의 크기를 줄이고 싶다면 여전히 로그 파일을 축소할 수 있습니다. 축소 명령은 다음과 같습니다.
- 데이터베이스 정리:
- 단순 복구 모델 사용 시 불필요한 데이터 제거 및 인덱스 최적화를 통해 데이터베이스 성능을 향상시킬 수 있습니다. 예를 들어, 다음과 같은 명령어로 인덱스를 재구성할 수 있습니다:
ALTER INDEX ALL ON [테이블이름] REBUILD;
- 단순 복구 모델 사용 시 불필요한 데이터 제거 및 인덱스 최적화를 통해 데이터베이스 성능을 향상시킬 수 있습니다. 예를 들어, 다음과 같은 명령어로 인덱스를 재구성할 수 있습니다:
- 정기적인 유지 관리 계획 수립:
- 데이터베이스 성능을 지속적으로 유지하기 위해 정기적으로 인덱스를 재구성하거나 통계를 업데이트하는 등의 유지 보수 작업을 수행하는 것이 좋습니다.
ALTER DATABASE best SET RECOVERY FULL 명령은 SQL Server에서 데이터베이스의 복구 모델을 "전체(Full)"로 설정하는 SQL 명령입니다. 아래에서 이 명령의 의미와 사용 사례를 설명하겠습니다.
의미
- 복구 모델: 데이터베이스의 복구 모델은 데이터베이스 손실 시 데이터를 복구하는 방법을 결정합니다.
- 전체(Full) 복구 모델은 모든 트랜잭션 로그를 기록하고, 사용자가 특정 시점으로 데이터를 복구할 수 있도록 합니다. 이 모델은 데이터베이스에서 발생하는 모든 변경 사항을 로그에 기록하므로, 시스템 장애나 데이터 손실이 발생했을 때 특정 시점으로 롤백이 가능합니다.
사용 사례
- 데이터 손실 방지: 데이터베이스를 잃거나 복구해야 할 때 특정 시점으로 데이터베이스를 복구할 수 있습니다.
- 트랜잭션 로그 백업 필요: 전체 복구 모델을 사용하는 경우 정기적으로 트랜잭션 로그 백업을 수행해야 합니다. 이를 통해 로그 파일의 크기를 관리하고 데이터베이스의 복구를 더 효율적으로 할 수 있습니다.
예시
ALTER DATABASE best SET RECOVERY FULL;
이 명령을 실행하면 "best"라는 이름의 데이터베이스에 대해 복구 모델이 "전체"로 설정됩니다. 이후에는 데이터 변경 사항이 로그에 기록되며, 로그 파일이 계속 증가할 수 있습니다. 따라서 정기적인 로그 백업을 수행하는 것이 중요합니다.
전체 복구 모델을 사용할 때의 권장 사항:
- 정기적인 로그 백업: 로그가 커지는 것을 방지하기 위해 일정한 간격으로 백업을 수행합니다.
- 복구 계획 수립: 비상 복구 시나리오에 대한 계획을 세워두는 것이 좋습니다.
이러한 사항들을 염두에 두고 전체 복구 모델을 사용하는 것이 좋습니다.
==== 디비 로그 축소 복구모델 전체 ====
ALTER DATABASE 디비명 SET RECOVERY SIMPLE
DBCC SHRINKFILE(디비명_log)
EXEC sp_helpdb 디비명
ALTER DATABASE 디비명 SET RECOVERY FULL