일정에 따라 트랜잭션 로그를 백업 및 잘라내는 가장 좋은 방법


9

저는 DBA는 아니지만 DBA 모자를 쓰고 SQL Server 인스턴스에서 유지 관리 계획을 세워야합니다.

그래서 잠시 동안 SSIS 야간 프로세스에서 SQL 실행 작업 을 실행하여 백업을 수행했습니다. 기본적으로 master.dbo.xp_create_subdir대상 폴더가 존재하는지 확인한 다음 BACKUP DATABASE [DbName] TO DISK = 'G:\Backups\DbName\DbName.bak' WITH INIT.

해당 작업이 실패 할 때마다 나머지 프로세스가 중단되고 알림을 받고 다음날 아침에 트랜잭션 로그의 드라이브 용량이 가득 찼음을 알기 때문에 수동으로 잘라서 계속 진행합니다. .. 스토리가 반복되고 트랜잭션 로그가 사용 가능한 디스크 공간을 다시 증가 할 때까지.

"수동 자르기"스크립트는 다음과 같습니다.

use Staging;
alter database Staging set recovery simple
alter database Staging set recovery full
dbcc shrinkfile ('Staging_log', 0, truncateonly);
go

그래서 나는 이것에 질려 가고 있고 , 대신 제대로 일 을하려고 노력하고 여기 의 단계를 따라 실제 유지 보수 계획을 세우기로 결정했습니다 .

SQL Server 유지 관리 계획

한 번도이 작업을 수행 한 적이 없으므로 몇 가지 질문이 있습니다.

  • 이와 같이 트랜잭션 로그를 백업하면 자동으로 잘 리거나 다른 조치가 필요합니까?
  • 데이터와 트랜잭션 로그 백업을 동시에 실행해도됩니까? 그렇지 않다면 이것을 수행하는 올바른 방법은 무엇입니까?
  • 백업 파일은 서버의 모든 파일을 가져 와서 다른 곳에 저장하는 다른 프로세스에 의해 하룻밤 동안 수집됩니다. 2 일 후에 백업 세트를 만료시키는 것이 좋습니다? 그것들을 전혀 만료시켜야합니까?
  • 정리 작업은의 하위 폴더에서 "old".bak 및 .trn 파일을 각각 제거합니다 G:\Backups. 말이 돼?
  • SSIS에서이 작업을 수행하는 것이 더 낫기 때문에 백업이 실패하는 경우 ETL에 실패 할 수 있습니까? 아니면 내 ETL 프로세스가 관심을 가져야합니까?

하나의 게시물에 대해 너무 많은 질문이 있으면 죄송합니다. 필요한 경우 여러 질문을 편집하고 대신 질문합니다. 모두 밀접하게 관련되어 있다고 생각합니다.


3
"잘라 내기"의 의미를 설명 할 수 있습니까? 로그 백업이 로그 파일을 축소 할 것으로 예상합니까? 무슨 목적을 위해? 다시 자랄 수 있습니까?
Aaron Bertrand

3
또한, 더 나아 가기 전에이 질문과 배경에 대한 답변을 읽어 보시기 바랍니다. dba.stackexchange.com/q/29829/1186
Aaron Bertrand

3
매일 복구해야하는 경우 단순 모드를 사용하십시오. (왜 간단하게 변경 한 다음 다시 전체로 변경 하시겠습니까? 그 결과가 무엇이라고 생각하십니까?) 그러나 낮 시간이 모두 읽 히면 낮 동안 로그가 변경되지 않아야합니다. 어쨌든 로그를 백업해도 로그 파일이 축소 되지않습니다 .
Aaron Bertrand

3
로그 백업을 수행하지 않고 6 개월 동안 전체 복구 모드로 전환하면 로그 파일이 커집니다. 그러나 하루 종일 읽기 활동 만했을 경우 전체 복구 모드를 사용하는 것이 낭비라면 간단하게 만드십시오. 그런 다음 로그 파일은 일반적으로 전혀 커지지 않습니다 (단순 복구 모드에서는 활성 트랜잭션을 제외한 모든 공간을 재사용 할 수 있음). 수행중인 작업을 알고있는 DBA는 일반적으로 전체 복구 모드를 사용하여 특정 시점으로 복원 할 수 있으며 로그 파일의 크기를 적절히 조정하며 로그 파일이 커지지 않도록 로그 백업을 자주 수행합니다.
Aaron Bertrand

3
특정 시점 복구가 필요하지 않다고 말했기 때문에 전체 복구 모델을 옵션으로 고려하는 이유를 잘 모르겠습니다.
Aaron Bertrand

답변:


7

밤새 SSIS가 쓰기를 수행하고 낮 시간은 모두 읽습니다. 매일 복구 만하면됩니다.

비즈니스 요구에 따라 복구 모델을 선택해야합니다.

  • 얼마나 많은 데이터 비즈니스가 동시에 풀리고 살아남을 수 있습니까?

위의 답변에 따라 데이터베이스 복구 모델을 신중하게 선택해야 합니다 .

간단히 말해 (대량 복구 모델을 기록 논의하지 않음) ,

  • 전체 복구 모델은 특정 시점 복구를 허용하는 로그 백업을 허용합니다.
    • 트랜잭션 로그 백업을 수행 할 때 로그 잘림 이 발생할 수 있습니다. 즉, 각 로그 백업 후에 로그 파일 공간이 재사용되고 팽창되지 않습니다!
  • 단순 복구 모델에서는 전체 백업 만 수행 할 수 있습니다. 특정 시점 복구가 불가능합니다.
    • 로그 잘림 은 검사 점이 발생하는 경우 (수동 또는 자동)에만 발생할 수 있습니다. 즉, 정기적 인 전체 백업을 수행하기 때문에 CHECKPOINT가 로그 파일의 비활성 부분을 재사용하므로 트랜잭션 로그에 대해 걱정할 필요가 없습니다.

로그 잘림은 트랜잭션 로그 파일 크기의 물리적 축소가 아님을 기억하십시오. 이는 트랜잭션 로그 파일 의 비활성 부분이 재사용 가능 으로 표시됨을 의미합니다 .

따라서 트랜잭션 로그 파일 (및 데이터 파일)의 크기를 올바르게 조정해야합니다. 로그 파일을 늘리면 자동 증가 이벤트가 시작됩니다 (데이터베이스가 마지막 수단으로 자동 증가로 설정되어있는 경우). 내 대답을 확인하십시오- 자동 성장-백분율 사용?


내가보기 엔 당신을 제안 도랑의 유지 관리 계획 - [- 쉽고 유연하고 모범 사례를 다음과 스마트 유지 보수 솔루션] 및 구현 5 . - 올라의 백업 솔루션 (및 인덱스 유지 보수 솔루션 뿐만 아니라).


당신의 질문을 해결하자 :

이와 같이 트랜잭션 로그를 백업하면 자동으로 잘 리거나 다른 조치가 필요합니까?

백업을 추가하거나 만료되도록 설정하지 마십시오. 그들은 큰 혼란을 만듭니다. INIT날짜 / 시간 스탬프와 함께 별도의 로그 백업을 사용 하고 가져옵니다. 유지 보수가 쉽습니다. 이를 위해 Ola의 백업 솔루션을 사용하십시오. 이 솔루션은 이전 백업을 유연하게 삭제할 수 있습니다.

데이터와 트랜잭션 로그 백업을 동시에 실행해도됩니까? 그렇지 않다면 이것을 수행하는 올바른 방법은 무엇입니까?

전체 백업은 T- 로그 백업에 영향을 미치지 않습니다. 전체 백업에는 충분한 트랜잭션 로그 만 포함되므로 복원시 데이터베이스는 전체 백업의 데이터 읽기 부분이 완료된 시간과 트랜잭션 방식으로 일관성을 유지할 수 있습니다. 전체 백업에 얼마나 많은 트랜잭션 로그가 포함되어 있는지 확인하십시오 .

또한 전체 백업 중 로그 백업은 트랜잭션 로그를 자르지 않습니다. 전체 백업이 완료된 (커플) 로그 백업 은 로그를 자릅니다.

백업 파일은 서버의 모든 파일을 가져 와서 다른 곳에 저장하는 다른 프로세스에 의해 하룻밤 동안 수집됩니다. 2 일 후에 백업 세트를 만료시키는 것이 좋습니다? 그것들을 전혀 만료시켜야합니까?

정리 작업은 G : \ Backups의 하위 폴더에서 "old".bak 및 .trn 파일을 각각 제거합니다. 말이 돼? SSIS에서이 작업을 수행하는 것이 더 낫기 때문에 백업이 실패하는 경우 ETL에 실패 할 수 있습니까? 아니면 내 ETL 프로세스가 관심을 가져야합니까?

위의 두 가지 경우 모두 Ola의 백업 유지 관리 솔루션을 사용하십시오. 오래된 파일을 삭제합니다.


대박. 그래서 모든 데이터베이스에서 복구 모델을 'Simple'으로 변경하고 Ola의 스크립트를 실행했습니다. 지금해야 할 일은 실제로 생성 된 작업을 예약 하는 것입니까?
Mathieu Guindon

예, 부탁합니다. 또한 답변이 해결책이거나 도움이되는 경우 답변 / 답변으로 표시하는 것을 잊지 마십시오. 이렇게하면 답변되지 않은 것으로 표시되지 않습니다.
Kin Shah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.