sql 서버 로그 처리 가 부적 절하 여 발생 한 위험 에 대한 상세 한 설명

사고 배경:이 른 아침 에 도 길 위 에 있 었 습 니 다.그룹 에서 피드백 시스템 이'Unknown error 258'을 계속 잘못 보 고 했 습 니 다.나중에 로 그 를 조회 한 결과 오류 로 그 를 발 견 했 습 니 다.

첫 번 째 반응 은 데이터베이스 연결 이 부족 하지 않 습 니까?시간 초과 로?그러나 sql 조 회 를 통 해 당시 연결 도 40 개 정도 밖 에 되 지 않 았 기 때문에 문 제 를 계속 조사 한 결과 dbserver 기계 가 그 동안 디스크 io 작업 이 매우 높 고 정상 적 이지 않 은 것 을 발견 했다.상세 한 내용 은 다음 그림 을 참조 하 자.

디스크 io 문 제 를 발견 하고 sqlserver 로 그 를 계속 살 펴 보 니 이 유 는"Autogrow of file"xxxxlog' in database ‘xxxx' was cancelled by user or timed out after 3398 milliseconds.  Use ALTER DATABASE to set a smaller FILEGROWTH value for this file or to explicitly set a new file size.”

이러한 문 제 는 로그 로그 파일 이 너무 커서 압축 된 적 이 없 으 며,데이터 베 이 스 를 만 들 때 기본적으로 10%의 증분 을 선택 하여 로그 증분 파일 을 확대 합 니 다.그러면 로그 파일 의 10%가 점점 커지 고 시간 초과 io 작업 이 발생 합 니 다.
해결 방안:
1.로그 파일 을 정기 적 으로 정리 하여 로그 파일 이 점점 커지 는 것 을 방지 합 니 다.

 USE [master]
 GO
 ALTER DATABASE      SET RECOVERY SIMPLE WITH NO_WAIT
 GO
 ALTER DATABASE      SET RECOVERY SIMPLE
 GO
 USE     
 GO
 DBCC SHRINKFILE (N'    _Log' , 11, TRUNCATEONLY) 
 GO
 USE [master]
 GO
 ALTER DATABASE      SET RECOVERY FULL WITH NO_WAIT
 GO
 ALTER DATABASE      SET RECOVERY FULL
 GO 
2.기본 데이터베이스 log 증분 10%를 500 M 으로 수정 합 니 다(구체 적 인 상황 을 보면 보통 충분 합 니 다)
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기