현재 MSSQL Server를 2대 운영하고있습니다.
No1, No2 Server에는 각각의 10개 가량의 Connection Pool을 Open하여 1초 단위로 Table에 Data Insert 및 Update를 진행하고 있습니다.
하지만 No1의 서버에는 ldf 파일의 용량이 거의 늘어나지 않는 상황인데,
No2의 서버에는 비정상적으로 ldf 파일의 용량이 늘어나고 있어 문제가 되고 있는 상황입니다.
여기서 질문이 있습니다.
1. ldf파일은 트랜잭션의 로그가 쌓인다고 하는데, 해당 로그의 기록 및 내용을 확인하기 위한 방법이 궁금합니다.
2. ldf 파일에 로그를 인위적으로 원하는 사이즈 만큼 쓸수 있는지, 방법이 궁금 합니다.
3. Sql Server Management Studio를 이용하여 ldf 파일의 Max File Size를 2GB로 고정을 하였는데, 제가 아는 이론으로는 2GB 이상 쌓일경우 제일 오래된 Data에 덮어쓰기 형식으로 된다고하는데, Window Log에 Data File Size Full Error가 다발하는 현상이 발생했습니다. Max File Size를 고정으로 설정하고 덮어쓰기 형식으로 설정가능한 방법이 있을까요?
고수님들 많은 도움 부탁드립니다.
맨땅에 헤딩을 하다보니, 구글링에도 한계가 있고, 하다보니 여기까지와서 도움을 요청하고 있네요
도움 부탁드립니다!!
아마도, 1번 서버는 복구 모델이 단순이고, 2번 서버는 대량로그 또는 전체 모델 같습니다.
데이터베이스 복구 모델을 양쪽에서 확인해 보세요
SELECT name, recovery_model_desc FROM sys.databases
GO
1. ldf파일은 트랜잭션의 로그가 쌓인다고 하는데, 해당 로그의 기록 및 내용을 확인하기 위한 방법이 궁금합니다.
[김대우] 로그 내용보다 로그를 벡업해 "비우고" 적정 크기를 유지 하셔야 합니다.
“데이터 변경 저장소-로그”는 로그를 백업하면 로그 저장소에서 비워집니다. - 지워진다기보다는 비워진다는 표현이 더 정확합니다. 로그 데이터 저장소 구조는 그대로 유지되고, 오직 로그 데이터만 비워지기 때문입니다.
만약, 운영하면서 한 번도 이 로그를 백업하지 않았다면 로그 파일이 수기가까지 커져 속도가 느려지고 문제가 발생하는 경우가 종종 발생합니다.
로그는 매우 작은 분량임에도 불구하고, 한 번도 로그를 백업하지 않아 생기는 상황입니다. 사실 개발 과정에서 흔히 발생하는 케이스입니다. 이때, 사용되는 공간도 문제이지만 로그 데이터로 인해 시스템 성능이 저하되는 상황 역시 발생할 수 있습니다.
만약, 관리하는 시스템이 있다면, SSMS에서 데이터베이스 속성을 확인하거나, 아래 SQL 구문을 수행해 로그 파일 크기를 체크할 수 있습니다.
EXEC sp_helpdb '데이터베이스이름'
GO
2. ldf 파일에 로그를 인위적으로 원하는 사이즈 만큼 쓸수 있는지, 방법이 궁금 합니다.
[김대우]
데이터베이스 로그 파일 줄이기
자주 받는 질문인 데이터베이스 LOG 파일 줄이기입니다. 데이터베이스 로그는 데이터의 변경이 기록되는 중요한 파일입니다. 이 데이터베이스 로그는 백업하면 “비워”집니다. 삭제되는 게 아니라 백업되어 비워지고, 백업 파일이나 장치로 기록됩니다.
운영하면서 한 번도 이 로그를 백업하지 않았다면, 로그 파일이 수기가까지 커져 속도가 느려지고 문제가 발생하는 경우가 종종 발생합니다. 어찌어찌 검색해서 로그는 백업해 비웠는데 로그 파일이 줄어들지 않아 난감한 경우가 생기죠. 이럴 경우 아래 방법을 참조하세요. (만약, 운영 시스템이라면 반드시 먼저 백업을 수행하고 진행하세요.)
아래 SQL 구문을 수행해 로그 파일을 줄입니다.
-- 데이터베이스 로그 비우기(TRUNCATE_ONLY)는 SQL2008부터 삭제됨
-- BACKUP LOG shrink_test WITH TRUNCATE_ONLY
-- 복구 모델을 Simple로 변경 - 로그를 기록하지 않도록 DB를 설정
ALTER DATABASE shrink_test SET RECOVERY SIMPLE
GO
-- DBCC SHRINKFILE 로그 파일 1M로 줄이기 - 파일이 클 경우 시간이 오래 걸림
DBCC SHRINKFILE (shrink_test_log, 1)
GO
EXEC sp_helpdb 'shrink_test'
GO
-- 다시 복구 모델을 FULL로 변경
ALTER DATABASE shrink_test SET RECOVERY FULL
GO
3. Sql Server Management Studio를 이용하여 ldf 파일의 Max File Size를 2GB로 고정을 하였는데, 제가 아는 이론으로는 2GB 이상 쌓일경우 제일 오래된 Data에 덮어쓰기 형식으로 된다고하는데, Window Log에 Data File Size Full Error가 다발하는 현상이 발생했습니다. Max File Size를 고정으로 설정하고 덮어쓰기 형식으로 설정가능한 방법이 있을까요?
[김대우] 한번 로그 파일 크기를 줄이고 주기적으로 백업하면 2G 이상 갈 일이 없습니다.
"SQL Server 데이터베이스 유지관리 계획"으로 검색해 보시고, 주기적으로 전체 백업과 로그 백업을 받으시길 바랍니다.
이렇게 하시면 로그가 계속 비워져서 크기가 늘어날 일이 없습니다.