라이브 SQL Server 백업 중에는 어떻게됩니까? 내 동료

내 동료 중 일부는 SQL Server 데이터베이스가 아직 실행 중일 때 백업 할 수 있고 그것이 어떻게 가능한지 궁금하다고 말했을 때 놀랐습니다. SQL Server가 여전히 온라인 상태 일 때 데이터베이스를 백업 할 수 있지만 가능한 이유를 설명하는 방법을 잘 모르겠습니다. 내 질문은 이것이 데이터베이스에 어떤 영향을 미칩니 까?

백업이 실행되는 동안 데이터가 수정 (삽입, 업데이트 또는 삭제에 의해)되면 백업에 이러한 변경 사항이 포함되거나 나중에 데이터베이스에 추가됩니까?

로그 파일이 여기서 중요한 역할을한다고 가정하지만 방법을 잘 모르겠습니다.

편집 : 참고로, 내 경우에는 SQL Server 에이전트를 사용하여 데이터베이스를 백업 하고이 프로세스 동안 데이터베이스 수정의 영향을 포함합니다.



답변

전체 백업에는 데이터와 로그가 모두 포함됩니다. 데이터의 경우 페이지를 읽는 순간 과 마찬가지로 데이터베이스의 각 페이지를 백업에 복사하기 만하면 됩니다. 그런 다음 모든 ‘관련’로그를 백업 미디어에 추가합니다. 여기에는 최소한 백업 작업 시작시 LSN과 백업 작업 종료시 LSN 사이의 모든 로그가 포함됩니다. 실제로 백업 시작시 모든 활성 트랜잭션과 복제에 필요한 로그를 포함해야하므로 일반적으로 더 많은 로그가 있습니다. 전체 데이터베이스 백업에 관한 몇 가지 신화 제거를 참조하십시오 .

데이터베이스가 복원되면 모든 데이터 페이지가 데이터베이스 파일로 복사 된 후 모든 로그 페이지가 로그 파일로 복사됩니다. 데이터베이스가 서로 동기화되지 않은 데이터 페이지 이미지를 포함하고 있기 때문에이 시점에서 데이터베이스가 일치하지 않습니다. 그러나 이제 정상적인 복구 가 실행됩니다. 로그에는 백업 중에 모든 로그가 포함되므로 복구가 끝나면 데이터베이스는 일관성이 있습니다.


답변

백업하는 동안 데이터베이스에 대한 스냅 샷이 생성되고 해당 스냅 샷에서 백업을 위해 데이터를 읽습니다. 실제 라이브 DB 작업은 백업 작업에 영향을 미치지 않습니다.


답변

질문에서 언급했듯이 복사 중 데이터베이스에 변경 사항이있을 수 있으므로 복사 할 수는 없습니다.

데이터베이스 기능을 인식하고 OS 기능을 통해 “스냅 샷”을 가져 오거나 유틸리티를 사용하여 데이터베이스를 안전한 상태 (mysql을 사용하는 경우 mysqldump와 같은)로 덤프 할 수있는 에이전트로 수행해야합니다.

그렇지 않으면 손상 될 수있는 백업이 생겨 복원 할 때까지 알 수 없습니다. Joel과 Jeff가 최근에 최근 StackOverflow 팟 캐스트에서 그것에 대해 조금 이야기했다고 생각합니다.

그리고 로그 파일이 중요하다는 것이 옳습니다. 저널 / 로그 파일이 실제 데이터와 동기화되지 않은 경우 파일을 복원하면 손상 될 수 있습니다.

데이터베이스 인식 에이전트 또는 스냅 샷 애플리케이션 또는 데이터 덤프 중 업데이트를 방해하지 않고 데이터를 삭제하는 데 데이터베이스를 올바르게 연결하는 방법을 알고있는 애플리케이션을 통해 데이터베이스의 안전한 상태를 사용하여 수행 된 백업으로 요약됩니다. 결과 파일.


답변

덤프를 완료 한 후 커밋 된 로그 파일에 변경 사항을 추가하는 것 (파일 시스템 별 스냅 샷 활용)과 같이 데이터베이스에 파일을 덤프하는 것과 같이이 작업을 수행하는 방법에는 여러 가지가 있습니다 (일반적으로 MSSQL의 일반적인 방법은 전혀 모릅니다). Windows의 VSS와 같은 기능.


답변

복사 전용 백업이라고하는 것을 취할 수 있습니다. 온라인 상태에서 데이터베이스에 영향을 미치지 않습니다