더 자주 SQL DB 백업


10

현재 오전 2시에 SQLCMD.exe를 호출하고 백업을 위해 .sql 스크립트를 전달하는 예약 된 작업이 있습니다 (아래 참조). 우리는 비즈니스 측면에서 큰 성장으로 인해 수요가 증가하는 아주 작은 회사입니다. 이 시점에서 1 일 동안 데이터를 잃어 버리면 작년에는 수백 달러가 소요될 것입니다. 이 DB 플랫폼을 SQL Azure와 같은 주요 중복성이있는 데이터 미러링이 발생하는 다른 솔루션으로 마이그레이션 할 수있을 때까지 더 빈번한 백업을 수행하려면 어떻게해야합니까? 아래의이 스크립트는 DB를 오프라인 상태로 만들어야합니까? 이 스크립트를 DB와 상호 작용하는 사용자와 함께 실행할 수 있습니까?

USE CompanyCRM;
GO
BACKUP DATABASE CompanyCRM
TO DISK = 'D:\CRMBackups\CompanyCRMCRM.Bak'
   WITH FORMAT,
      MEDIANAME = 'CompanyCRM_Backup',
      NAME = 'Full Backup of CompanyCRM';
GO

최신 정보

와우, 분명히 여기보다 훨씬 더 헌신적 인 DBA 커뮤니티. 지금까지 의견을 보내 주셔서 감사합니다. 누락 된 것은 "방법"입니다. 매일 백업을 수행하는 데 사용하는 위의 SQL 명령을 보여 주었지만 증분 로그 백업 예제는 MIA입니다. 이것은 큰 DB가 아니며 현재 SQLExpress에서 실행됩니다. HA 또는 SQL Azure를 말할 때 소기업으로 가지지 않는 아키텍처를 구체적으로 언급하고 있습니다. 이 인스턴스는 현재 유일한 서버에서만 실행됩니다. 서버가 고장 나면 복구 시간이 문제가됩니다. 이것이 SQL Azure가 매력적인 이유입니다.


당신의 갱신에 편집 한 내 대답은 그것이 도움이되기를 바랍니다

답변:


5

업데이트에서 수정

1 일 분량의 데이터를 잃을 수 있다고 말했듯이 데이터베이스를 SIMPLE 복구 모드로 전환합니다. 그런 다음 매일 아침 및 / 또는 저녁에 전체를 수행 할 수 있습니다. 하루 동안 자신을 다루고 싶을 경우에 대비하여 데이터베이스의 차등 백업을 수행 할 수 있습니다. 전체 백업 이후의 모든 변경 사항을 캡처합니다. 많은 입력이 발생하는 시간 프레임을 알고 있으면 완료된 후에이 유형의 백업을 처리 할 수 ​​있습니다. 복구에 소요되는 시간을 절약 할 수 있으므로 추가 데이터를 입력 할 필요가 없습니다.

이것이 유일한 서버이므로 데이터베이스에 대해 DBCC CHECKDB를 실행하고 있는지 확인하십시오. 백업이 손상된 것을 발견하면 백업이 아무 효과가 없습니다 (누군가도 언급 한 것 같습니다). DBCC 메시지에 대한 SQL ERRORLOG를 확인하여 오류를 발견하도록 예약 된 태스크를 설정하는 몇 가지 스크립트를 probalby에서 찾을 수 있습니다. SQL Server는 DBCC 메시지에서 반환 된 오류에 대해 기본적으로 경고하지 않으므로이를 수행하는 스크립트가 도움이 될 때마다 수동으로 확인하지 않는 한.

차등 백업 명령 :


USE CompanyCRM; 
GO 
BACKUP DATABASE CompanyCRM 
   TO DISK = 'D:\CRMBackups\CompanyCRMCRM_diff.Bak'    
WITH FORMAT, DIFFERENTIAL,
MEDIANAME = 'CompanyCRM_Backup',       
NAME = 'Full Backup of CompanyCRM'; 
GO 

1
@Shawn : OP는 "이 시점에서 1 일 분량의 데이터를 잃는 것은 작년에 수백 달러 대 지난해 수백 달러가 소요될 것"이라고 말했다.
Marian

8
  • SQL Server의 백업은 중단되지 않습니다. 즉, 데이터베이스는 계속 작동합니다. 설명서를 읽으십시오.
  • 매일 전체 백업을 수행 한 다음 15 분 정도마다 정기적으로 선적 된 (복사 된) LOG 백업 (다시 말해서 문서에는 ... 문서가 있음)을 수행하십시오.

4
백업은 하우투가 필요하지 않은 것으로 생각되지만 문서를 완전히 읽으면 비즈니스에 중요하고 매우 중요합니다. 계란 스타일을 요리하지 않습니다. 전문가를 고용하십시오.
TomTom

2
내가이 사이트에서 답변을 투표 할 수 없다는 것이 너무 나쁘다 ...
RSolberg

1
@ RSolberg : TomTom의 대답은 이미 얻은 다른 조언과 함께 유효합니다. 나는 당신이 어떤 응답자들도 당신에게 백업의 기본 문법을 보여줄 것이라고 기대하지 않습니다. 나는 숀이 그렇게 할만큼 친절했음을 알지만. 백업 전략을 설계하는 것만으로는 충분하지 않습니다. 필요할 때 모든 것이 유효하도록 RESTORE 전략과 쌍을 이루어야합니다.
Marian

2
@RSolberg : 화 내서 죄송합니다. 이것은 의도되지 않았습니다. 그러나이 커뮤니티는 어떻게 도움이되지 않습니까? 당신은 좋은 대답과 의견이 있습니다. 귀하의 메시지는 "이 시점에서 1 일 동안 데이터를 잃어 버리면 작년에는 수백 달러가 소요될 것입니다." 따라서 확실한 백업 및 복원 전략이 필요하므로이를 달성 할 수 없습니다. 확실한 전략은 기본을 잘 아는 것에서 비롯됩니다. 매뉴얼을 읽고 이해함으로써 나온 것입니다. 다른 것을 이해했다면 죄송합니다!
Marian

2
@RSolberg에 동의합니다. 여기에있는 대부분의 답변에는 "방법"이 표시되지 않지만 러셀을 이해하지 못하는 "무엇"이라는 질문에 대한 세부 정보가 부족하기 때문입니다. 필요한 정보에 대해 조금 더 말씀해 주셔야합니다. 그러나이 사이트가 "RTFM n00b"가 아니라고 동의합니다. 또한 지적했듯이 Stack Overflow에 10k 가 있으므로 무례하거나 혼란스러운 댓글 표시를 반드시 이해해야합니다. 앞으로는 좌절에 빠지기보다는 빨리해야합니다.
jcolebrand

6

가장 먼저해야 할 일은 손실 할 수있는 데이터 양을 파악하는 것입니다. 그때까지 데이터베이스를 얼마나 자주 백업하는지 알 수 없습니다. 이것은 당신이 생각해 내야 할 숫자가 아닙니다. 이는 비즈니스 (또는 소규모 회사의 CEO)가 결정해야 할 사항입니다. 그들이 다시 올 첫 번째 숫자는 0 분입니다. 어떤 작업을 수행 할 수 있지만 비용이 많이 듭니다. 실제로 백업 할 수있는 가장 적은 양의 데이터는 약 2 분마다입니다. 시스템의 데이터 변경 량이 적 으면 1 분마다 백업을 수행 할 수 있습니다.

트랜잭션 로그 백업을 수행하려면 데이터베이스를 전체 복구 모드로 설정해야합니다.

5 분 분량의 데이터를 잃을 여유가 있다면 매일 전체 백업을 수행하고 5 분마다 트랜잭션 로그 백업을 수행하는 것이 좋습니다. 15 분 분량의 데이터가 손실 될 경우 15 분마다 전체 백업 및 트랜잭션 로그 백업을 수행해야합니다.

다른 옵션은 위에서 설명한대로 x 분 마다 매주 전체 백업, 매일 차등 백업 및 트랜잭션 로그 백업 을 수행하는 것입니다.

백업을 자주 수행할수록 데이터베이스 오류 또는 데이터 삭제시 더 많은 파일을 복원해야합니다. 데이터베이스를 복원하는 데 걸리는 시간을 단축하기 위해 하루 종일 차등 백업을 수행하는 것이 좋습니다.

BACKUP 데이터베이스 및 BACKUP LOG 문을 사용하는 모든 백업은 온라인으로 수행되며 사용자가 데이터베이스에 액세스하는 것을 막지 않습니다.


실제로 우리가 얼마나 많은 데이터를 잃을 수 있는지 평가할 수 있습니다. CIO는 매일 업무 관련 의사 결정에 참여하는 경향이 있기 때문에 소규모 기업은 사람들이 많은 모자를 착용해야합니다.
RSolberg

1
그러면 토론이 훨씬 짧아 질 것입니다.
mrdenny

3

가장 바쁜 시간 인 월요일-금요일 오전 9 시부 터 오후 5 시까 지의 일반적인 비즈니스 시나리오가 있다고 가정 해 보겠습니다. 그런 다음 일요일 밤에 전체 백업을 제안합니다. 오전 8시, 오후 6시 및 오전 1시에 차등 백업 (복구 시간 단축). 매시간 또는 비즈니스 요구 사항에 따라 백업을 기록하십시오.

보존 기간에 따라 이전 백업 파일을 지우려면 자동 정리 작업이 있어야합니다. 이 모든 것은 SQL 유지 보수 계획을 사용하여 작성할 수 있습니다. SQL 2005에 대해서는이 링크를 확인하십시오 .

백업을 특정 형태의 중복 디스크 (미러링)에 저장하거나 오프 사이트 스토리지에 테이프를 사용할 수 있습니다. 백업이 실행되는 동안 사용자는 시스템에서 계속 작업 할 수 있습니다.


2

나는 매일 밤 전체 백업을하지 않을 것입니다. 데이터베이스가 큰 경우에는 미디어에서 많은 공간을 차지하는 것은 말할 것도없이 시간이 오래 걸릴 수 있습니다. 주말마다 전체 백업을하고 매일 밤 차등 백업을 수행하십시오. 그런 다음 매시간 또는 30 분마다 트랜잭션 로그 백업 (데이터베이스가 완전 복구 상태라고 가정)을 수행하되 디스크 장애시 이러한 .bak 및 .trn 파일이 별도의 디스크에 있는지 확인하십시오.


태그를 잃어 버렸습니다. 이것은 거대한 데이터베이스가 아닙니다. 현재 SQLExpress 인스턴스에서 실행 중입니다.
RSolberg

1
Express에서 실행되는 수만 달러? 흥미 롭습니다!
Andrei Rînea

실제로는 아닙니다. 저장 내용 (텍스트 없음, 바이너리 없음)에 따라 10 기가 바이트의 데이터입니다. 대기업 (대부분의 대기업)에 대한 회계 시스템을 10 기가 바이트로 실행할 수 있습니다. 하루에 100.000 건의 주문이있는 온라인 상점은 10 기가 바이트로 쉽게 상점을 운영 할 수 있습니다.
TomTom

1

야간에 백업 폴더를 클라우드 동기화하여 오프 사이트 스토리지를 확보 할 수 있습니까? 이것이 건강 관리 회사를위한 것이라고 확신하기 때문에 HiPA 준수를 위해 충분히 안전한 것이 있습니까? 아니면 그냥 슈퍼 암호화?

스크립트가 최소한 네트워크 사본에 백업 사본을 넣습니까? 물리적 상자가 터지면 ...


위의 모든 것에 그렇습니다. 실제로 미러링 된 네트워크 드라이브에 백업하고 해당 환경의 데이터를 안전한 데이터 센터에 복사합니다.
RSolberg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.