10-20 SQL Server 데이터베이스를 ~ 동기 상태로 백업 및 복원 하시겠습니까?


15

10-50GB 사이의 크기로 10-20 개의 SQL Server 2008 R2 데이터베이스를 백업해야하며 온라인 상태이고 단일 엔터프라이즈 앱에서 동시에 사용합니다. 또한 모든 데이터베이스에서 크게 동기화 된 상태로 데이터베이스를 복원해야합니다 (데이터베이스 간 최대 몇 초의 비 동기화를 감당할 수 있음). QA / DEV 환경에 대한 프로덕션 데이터를 캡처하는 것이 목적입니다.

데이터베이스를 전체 복구로 실행하지 말고 QA 환경을위한 데이터 캡처 전용의 백업 방법을 제안하고 본인이 관리하지 않는 기본 백업 프로세스와 독립적 인 백업 방법을 강구하고 싶습니다.

고객의 경우 ~ 30GB로 20 개의 전체 백업을 캡처하는 데 1-2 시간이 걸립니다. 단순 복구에서 데이터베이스를 실행할 때 데이터베이스가 너무 동기화 해제되므로 전체 백업을 순차적으로 수행 할 수 없습니다.

나는 이것들보다 더 나은 아이디어를 찾고 있습니다.

아이디어 1 : VM 디스크의 SAN 수준 스냅 샷. 스냅 샷에서 xcopy MDF / LDF.

복사 된 파일이 다른 서버 인스턴스에 연결되면 복구 프로세스에서 거의 동시에 스냅 샷 인 일관된 데이터베이스가 생성됩니다.
인터넷 검색은 적어도 이것이 나쁜 생각이라고 확신했습니다. 적어도 master / msdb / etc와 비교할 수 없기 때문입니다.

아이디어 2 : 모든 데이터베이스에서 복잡한 백업 및 동기화 복원 조정

이를 위해서는 원하지 않는 데이터베이스를 전체 복구로 실행해야합니다. 최종 기한 (T0) 전에 모든 데이터베이스에 대해 병렬 백업을 시작하십시오. T0에 도달하면 모든 로그를 백업하십시오 (최대 몇 분 소요). 결과적으로 무수한 백업을 수행하고 T0에 비해 데이터베이스 전체에서 다소 일관된 상태를 얻기 위해 복원 및 로그를 롤 포워드 / 롤백합니다.
이를 위해서는 안정적으로 사용하기 위해 많은 계획 및 스크립팅이 필요하므로이를 피하기 위해 많은 노력을 기울일 것입니다.

다른 해결책이 없습니까?

PS1 : db snapshots 을 사용하고 싶었습니다 . 아이디어는 각 db에서 스냅 샷을 시작한 후 (초 단위로) 다음 분 / 시간 동안 순차적으로 각각을 백업하는 것이 었습니다. 그런 다음 모두 다른 서버에서 복원하고 각 서버를 스냅 샷으로 되돌립니다. AFAIK이 시나리오는 데이터베이스와 함께 스냅 샷을 백업 할 수 없기 때문에 불가능합니다. 작성된 서버에서 제자리로만 롤백 할 수 있습니다. 또한 모든 고객에게 제공되지 않는 Enterprise Edition이 필요합니다.

PS2 : 크로스 DB 동기화 백업을 생성 할 수있는 타사 솔루션을 알고 있다면 언급하십시오.


이 시나리오에서 해당 버전의 SQL Server 버전은 무엇입니까? 대략 우리가 여기서 말하는 데이터베이스의 크기는 얼마입니까?
KASQLDBA

답변:


12

하나의 엔터프라이즈 앱에서 동시에 사용하는 10-20 개의 SQL Server DB를 온라인 상태에서 백업하여 모든 DB에서 크게 동기화 된 상태로 복원해야합니다.

당신이 찾고있는 것은 모든 고객 데이터베이스에서 일관된 백업이며, 다음과 함께 전체 백업을 사용해야합니다 Marked Transactions(굵은 체로 강조 표시).

두 개 이상의 데이터베이스에 관련 업데이트를 할 때, 관련 데이터베이스는 , 당신은 논리적으로 일관성 지점을 복구하기 위해 트랜잭션 표시를 사용할 수 있습니다 . 그러나이 복구는 복구 지점으로 사용 된 표시 이후 커밋 된 모든 트랜잭션을 잃게됩니다. 트랜잭션 표시는 관련 데이터베이스를 테스트하거나 최근 커밋 된 트랜잭션을 기꺼이 잃을 경우에만 적합합니다.

여기에 이미지 설명을 입력하십시오

를 사용하여 adhoc 트랜잭션 로그 백업을 수행해야합니다 COPY_ONLY. 그렇지 않으면 adhoc 트랜잭션 로그 백업이 없으면 COPY_ONLY로그 체인이 손상되므로 복구가 어려워 집니다. 예방 조치로 사용자가 백업 사용하도록 제한COPY_ONLY 할 수 있습니다 .

SQL Server 버전 2008 R2 이상에 대한 솔루션이 필요합니다. DB 크기는 db 당 최대 50GB이며 모든 백업 시간은 1-2 시간이 넘습니다.

표시된 거래는 귀하의 상황에 적합합니다. 병렬 백업을 만드는 유일한 방법은 백업 뿐이지 만 백업 STRIPE줄무늬를 잃지 않도록해야합니다. 빠른을하려면, 당신은 함께 재생할 수 있습니다 BUFFERCOUNTMAXTRANSFERSIZE.

백업 압축사용하고 인스턴트 파일 초기화활성화 해야합니다 .

인용하다


1
간단히 말해, not using백업 압축은 저장 공간이있는 경우 백업 속도를 훨씬 높일 수 있습니다.

4
스토리지 속도가 느리면 I / O에 저장된 시간이 CPU에 소비되는 여분의 시간을 초과하기 때문에 압축 오버 헤드가 정당한 것 이상이라고 생각합니다. 빠른 스토리지에서 압축의 이점은 스토리지 공간에 훨씬 더 가중됩니다.
Aaron Bertrand

@ShawnMelton 동의하지만 백업을 전송할 때 압축 된 백업이 훨씬 빠릅니다. 스토리지 서브 시스템에 따라 압축없이 백업이 빠르지 만 압축의 이점에 대해 생각 하면서 내 환경에서 켜는 경향이 있습니다.
Kin Shah

@Kin, 나는 m- 트랜잭션이 여기에 해결책이라고 생각하지 않는다. A) 백업을 수행 한 서버와 다른 서버에서 작동하도록 설계되지 않은 것 같다. 일부는 행을 logmarkhistory로 복원하여 문제를 해결했지만 문서화되지 않은 동작을 사용할 수 없습니다. B) m- 트랜잭션 지원을 추가하기 위해 앱의 코드를 변경할 수 없습니다. 백업 스크립트에서 특수한 m- 트랜잭션을 시작해야하며 올바르게 이해 하면 마크보다 오래된 트랜잭션이 커밋 될 때까지 모든 최신 트랜잭션이 중단됩니다. 이는 주요 스토퍼 인 앱 가용성에 영향을줍니다.
bogdan

3
실제로 여기에 무엇을 요구하는지 조금 불분명합니다. 먼저 전체 복구 환경이 있고 각각 고유 한 백업 전략을 가진 여러 클라이언트가 있습니다. 응용 프로그램 계층을 변경하지 않고 SQL 백업을 수행하지 않고 블록 수준 복제를 원하지 않지만 솔루션이 필요합니다. 요구 사항은 실제 '작업'과 관련된 모든 것을 계속 변경합니다. 불행히도 우리는 magic.stackexchange.com 웹 사이트가 없습니다.
톰 V - topanswers.xyz 시도

7

트랜잭션 로그 백업뿐만 아니라 전체 백업을 실행하는 경우 (이 데이터를 중요하게 생각하는 경우) 백업 및 트랜잭션 로그 백업을 테스트 시스템에 복사하고 특정 시점 복원 을 수행 하여 데이터베이스를 +-동시에.

모든 데이터베이스가 동일한 SQL Server 시스템에 있는지 또는 서버 시계가 얼마나 잘 동기화되어 있는지에 따라 '초 동기화 해제'대상과 일치시킬 수 있어야합니다.

그것은 약간의 반창고 솔루션 일 수 있지만 요구 사항을 충족시키고 상당히 간단하고 저렴합니다.

중요한 데이터베이스 (전체 복구 상태)에서 전체 백업 및 트랜잭션 로그 백업이없는 경우 백업 전략을 수정해야합니다. SAN 레벨 스냅 샷은 특정 시점 복원을 수행 할 수 없으므로 데이터베이스를 전체 복구 모드로 전환하는 시점을 실제로 약화시킵니다.

MrDenny가 그것에 대해 말한 내용을 읽어보십시오



1

지정한 상황에서 타사 또는 Microsoft 기반의 VSS 공급자를 통해 VSS 백업을 보셨습니까? 프로덕션 복구 체인을 중단하지 않는 COPY_ONLY 백업을 수행 할 수 있으며 합리적인 여유 범위 내에서 다른 곳에서 복구 할 수있는 모든 데이터베이스의 백업으로 끝나야합니다. VSS 백업에는 데이터베이스 스냅 샷과 동일한 메커니즘 및 다운 플로가 있으므로 매우 활동적인 데이터베이스는 사용 된 스파 스 파일로 인해 디스크 공간 문제가 발생할 수 있습니다. 여기 에서 SQL Writer 서비스에 대한 TechNet 리소스 와 여기 에서 SQL Server의 VSS 백업을 살펴 보십시오 .

Windows Server 백업을 통해이를 수행하려면 수동 백업을위한 마법사 단계를 따라 VSS 설정의 사용자 정의 구성 설정에서 VSS 복사 백업을 선택해야합니다. 이렇게하면 Windows Server 백업이 서버에서 수행 된 다른 백업을 방해하지 않습니다. 자세한 내용은 Windows Server 백업 참조 를 참조하십시오.


하이퍼 바이저 / SAN 수준에서 디스크 스냅 샷을 생성하는 대안으로 VSS를 고려했습니다. 간단한 복구를 사용하는 고객을 위해 이러한 사례를 솔루션에 추가했습니다 (이제 추가 답변으로 게시 됨).
bogdan

1

나는 @ Kin 's를 답으로 투표 할 것입니다. 왜냐하면 그것은 질문과 일치하는 첫 번째 것이기 때문입니다. 추가 답변을 찾은 다음 아래에 설명하겠습니다.

간단한 복구 모델을 사용하는 고객의 경우 하이퍼 바이저 또는 SAN 수준에서 T0에서 가져온 임시 디스크 스냅 샷에서 추출한 MDF 및 LDF 사본이 필요합니다. 이를 사용하여 T0의 상태에서 db를 복구 할 수 있습니다.

전체 복구 모델을 사용하는 고객에게는 다음 중 하나가 필요합니다.

  • T0 이전에 완료된 최신 전체 백업의 MAIN 백업 프로세스에서 T0을 포함하는 후속 트랜잭션 로그 백업의 최소 체인을 복사합니다. 그런 다음 T0으로 특정 시점 복구를 수행 할 수 있습니다.

  • 내 보조 COPY_ONLY백업 을 수행하기위한 액세스 나는 T0에서 모두 병렬로 시작할 것입니다. T0은 몇 초 이상 걸리지 않으며 주요 관심사였습니다. 그런 다음 복원시 각 백업에서 FirstLSN 으로 특정 시점 복구를 수행합니다 . 이것의 장점은 내가 MAIN 백업 프로세스와 전혀 상호 작용할 필요가 없다는 것입니다. 이것은 저의 다른 관심사였습니다.COPY_ONLY 백업이 일관성에 영향을 미치지 않고 실행되는 .


0

QA 및 프로덕션 사본 인 다른 환경에 대해이 작업을 1 년에 여러 번 수행합니다. 복원의 경우 전체 복구 모드가 실제로 필요하며 특정 시점으로 복원하는 것이 좋습니다. 많은 복제가 있으며 특정 시점으로 복원 한 후 '행을 찾을 수 없음'오류가 발생하는 경우는 드 rare니다. 또한 지리적으로 멀리 떨어져있는 프로덕션 사본에 SAN 복제 / 스냅 샷 방법을 사용하며 데이터베이스를 동기화하는 데에도 효과적입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.