mssql은 복구를 위해 실제데이터(확장자 mdf)와 트랜잭션로그데이터(확장자 ldf)를 기록합니다.
mdf는 말그대로 디비에 저장되는 실데이터를 말하며, ldf는 트랜잭션로그, 즉 이러한 데이터를 이용한 읽기, 수정, 삭제등의 모든 로그를 기록합니다.
그 래서 특정데이터에 대해 입출력이나 업데이트가 반복되는 경우 비정상적으로 ldf파일이 커지는 경우가 발생하게 됩니다. 이러한 일은 정상적인 억세스로 일어날 수도 있으나 잘못된 프로그래밍 또는 오류로 인한 무한루프에 의해 급증하는 경우도 발생하게 됩니다.
하드디스크가 매우 여유롭다면 몰라도 이런일로 하디디스크 풀이 나는 장애가 발생된다면 정말 난감해집니다.
사실 ldf파일이 없이도 mdf만으로 디비를 복구하는 방법도 있습니다만 제대로? MS의 정책에 따라 완벽한 복구를 위해서 ldf를 버리지 말고 용량을 잘 조절해서 사용하는 방법을 말씀 드리겠습니다.
일단 EM환경보다는 제가 사용하기 편리한 쿼리분석기에서의 작업을 기준으로 설명 드리겠습니다.
일단 쿼리분석기를 실행합니다.
### 트랜잭션로그를 백업할 디비를 지정하여 줍니다.
use testdb
(testDB를 지정한다고 가정)
### 로그파일의 정보를 확인합니다.
dbcc loginfo
### 현재 지정된 디비가 사용하는 mdf 및 ldf파일의 경로, 이름 및 크기를 확인합니다.
exec sp_helpfile
### 위에서 정해준 디비의 로그를 백업해 줍니다.
backup Log testdb to disk=’d:\dbbackup\temp\testdb.bak’
go
### 트랜잭션 로그파일을 최소의 단위로 축소합니다.
backup log testdb with truncate_only
### 트랜잭션 로그파일을 삭제합니다.
backup log testdb with no_log
### 트랜잭션 로그파일을 10메가로 생성합니다.
dbcc shrinkfile (testdb_log, 10)
### mdf와 ldf파일이 제대로 잘 리사이징 되었는지 확인합니다.
exec sp_helpfile
모든 작업이 잘 마무리 되었다면, 이제는 갑작스런 트랜잭션로그의 증가로 문제가 되는 것을 방지하기 위해 트랜잭션로그파일의 최대크기를 지정해놓는 방법도 좋습니다.
alter database testdb
modify file ( name = testdb_log, maxsize = 200 mb )
go
위 의 과정을 진행하시면 트랜잭션로그는 위에서 지정한데로 200메가를 한계치로 생성 삭제 됩니다.
트랜잭션로그의 용량은 데이터의 중요도 및 규모에 따라 정책적으로 유지하셔야 하는 부분입니다. 200메가는 예제로 적어놓은 사이즈입니다.
또한 위의 과정 중 축소와 삭제는 둘 중 원하시는 방법을 선택적으로 사용하시면 됩니다.
'IT 인터넷' 카테고리의 다른 글
[css] ime-mode 로 한글입력 기본설정 (1) | 2024.09.26 |
---|---|
[리눅스] Sendmail 에서 stat=Deferred: Connection reset by 로그 남을때..조치법 (0) | 2024.09.25 |
[리눅스] ffmpeg 사용법 (0) | 2024.09.25 |
[리눅스] tar를 이용한 파일압축 사용형식 (3) | 2024.09.25 |
[리눅스] scp를 사용하여 서버에서 서버로 파일 옮기기 (0) | 2024.09.24 |