데이터베이스 SQL Server 2012를 미러링 할 수 없습니다


11

다음 명령을 사용하여 데이터베이스를 미러링하려고 할 때

ALTER AVAILABILITY GROUP SQLAlwaysonGroup ADD DATABASE test0916aj8CJ

다음과 같은 오류가 발생합니다

메시지 1475, 수준 16, 상태 105, 줄 1
데이터베이스 "test0916aj8CJ"에는 백업되지 않은 대량 로그 변경 내용이 포함될 수 있습니다. 주 데이터베이스 또는 기본 데이터베이스에서 로그 백업을 수행하십시오. 그런 다음이 백업을 미러 데이터베이스에서 복원하여 데이터베이스 미러링을 활성화하거나 모든 보조 데이터베이스에서 가용성 그룹에 가입 할 수 있도록하십시오.

데이터베이스를 백업하지 않고도이 작업을 수행 할 수 있습니까? 또는 백업 한 다음 백업을 폐기해야합니다. 새로 생성 된 db 용이므로 지금은 백업이 필요하지 않습니다.

나는 다음을 시도했다 ...

BACKUP
DATABASE [test0916aj8CJ] TO DISK = NNUL
WITH COPY_ONLY, NOFORMAT, INIT,
NAME = Ntest-Full Database Backup’,
SKIP, NOREWIND, NOUNLOAD
GO

그러나 위의 방법도 작동하지 않았습니다.

감사


몇 가지 ... 실제로 해당 명령으로 미러링되지 않지만 가용성 그룹에 데이터베이스를 추가합니다. 그러면 AG 설정 방법, 데이터베이스의 복구 모드 및 로그 문제를 해결하는 이유에 대해 묻습니다. COPY_ONLY 백업을 수행하여 로그를 그대로 유지하여 오류가 지정하는 것이 아닙니다. ? 몇 가지 단계가 누락되었거나 수행하려는 작업에 대해 매우 혼란스러워 보입니다.
Steve Mangiameli

답변:


15

발생한 오류를 쉽게 재현 할 수 있습니다

  • 기본에서 전체 복구 모드로 데이터베이스를 작성하십시오.
  • 보조에서 전체 복구 모드로 데이터베이스를 작성하십시오.
  • GUI를 시작하고 1 차와 2 차 사이에서 미러링을 구성하십시오.

다음과 같은 오류가 발생합니다.

데이터베이스 "test_mirroring_kin"에는 백업되지 않은 대량 로그 변경 사항이 포함될 수 있습니다. 주 데이터베이스 또는 기본 데이터베이스에서 로그 백업을 수행하십시오. 그런 다음이 백업을 미러 데이터베이스에서 복원하여 데이터베이스 미러링을 활성화하거나 모든 보조 데이터베이스에서 가용성 그룹에 가입 할 수 있도록하십시오. (Microsoft SQL Server, 오류 : 1475)

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

그 오류가 무엇인지 이해할 수 있습니다.

데이터베이스를 전체 복구 모드로 구성했으며 데이터베이스가 실제로 전체 복구 모드에 있다고 생각합니다.

위의 사실이 아닙니다. 데이터베이스를 생성 한 후 전체 백업을 수행하지 않으면 데이터베이스가 전체 복구 모드에 있더라도 의사 -SIMPLE 복구에 있습니다

당신은 쉽게 그것을 사용하여 확인할 수 있습니다 dbcc dbinfo> - dbi_dbbackupLSN의 값을 갖는 0:0:0(0x00000000:00000000:0000)또는 폴 랜달의 스크립트를 사용하여

dbcc traceon (3604)
go
dbcc dbinfo('test_mirroring_kin') with tableresults
go
dbcc traceoff (3604)

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

편집 :COPY_ONLY 옵션 으로 첫 번째 전체 백업을 수행해도 백업 체인이 설정되지 않습니다

backup database test_mirroring_kin
to disk = 'D:\test_mirroring_kin_FULL.bak'
with init, stats=10, COPY_ONLY

dbcc dbinfo-> dbi_dbbackupLSN값이 여전히 0:0:0(0x00000000:00000000:0000). 입니다 . 이는 데이터베이스가 여전히 의사 단순 복구 모드임을 의미합니다.

위의 오류를 해결하려면 어떻게해야합니까?

기본에서 전체 백업 + 하나의 트랜잭션 로그 백업을 수행 한 다음 보조 데이터베이스에 복원 with norecovery한 다음 AG 그룹 또는 미러링의 데이터베이스에 가입해야합니다.

보조 노트로와 완성도를 들어, 스크립트 이야기를 위해 backup to NUL, 게일 쇼에 의해이 블로그 게시물을 읽어 보시기 바랍니다.


5

TO DISK = N’NUL’?

왜 당신이 사용하는지 이해하지 못합니다 TO DISK = N’NUL’:

BACKUP
DATABASE [test0916aj8CJ] TO DISK = NNUL

그렇게하면 백업이에 저장됩니다 NUL(예 : = 아무 데나 없음). 파일이 없기 때문에 사용할 수 없습니다.

NULLOG 백업의 대상으로도 사용할 수 있지만 LOG가 유실되고 백업 체인이 손상되므로 특히 Prod 서버에서도 사용해서는 안됩니다. (~와 유사 SHRINKFILE)

로그 백업

DB를 그룹에 추가하기 전에 준비해야합니다. 보조 DB를 준비하려면 최소 1 개의 트랜잭션 로그 백업을 수행하고 복원해야합니다. 미러는이를 사용하여 보조 DB에서 이미 동기화 된 트랜잭션과 아직 기본 DB와 동기화되지 않은 트랜잭션을 파악합니다.

따라서 기본 DB에서 트랜잭션 로그를 백업해야합니다.

BACKUP LOG [test0916aj8CJ] TO  DISK = N'....bak' 
WITH  COPY_ONLY, FORMAT, INIT,  NAME = N'test0916aj8CJ-Transaction Log  Backup', STATS = 10

COPY_ONLY옵션을 사용해야합니다. LOG 백업이 끝날 때 로그가 잘리지 않도록합니다.

기본 DB 백업 체인

그러나 백업 체인이 없으면 로그 백업 만 복원 할 수 없습니다 (Kin 응답도 참조). 이는 전체 데이터베이스 백업 (필요한 경우 선택적인 차등)을 수행 한 후 트랜잭션 로그 백업을 수행해야 함을 의미합니다.

COPY_ONLY옵션은 백업 체인을 중단하지 않기 때문에 백업 체인도 생성하지 않습니다. 이 COPY_ONLY옵션은 데이터베이스 백업에 사용할 수 없습니다.

순서대로 백업 :

  • COPY_ONLY옵션이 없는 전체 데이터베이스 백업
  • 선택적 차등 백업
  • COPY_ONLY옵션이있는 1 LOG 백업
  • 필요한 경우 다른 (또는 그 이상) LOG 백업 ...

보조 DB 복원

그런 다음 보조에서 데이터베이스 백업을 복원해야합니다 (+ 차등).

NORECOVERYFULL 백업이 복원되면 LOG 백업도 복원하기 때문에 옵션 으로 복원해야합니다 .

마지막으로 LOG 백업을 복원합니다. NORECOVERY미러가 트랜잭션을 한 번만 복원하면 계속해서 옵션 을 사용해야합니다 .

  • NORECOVERY옵션으로 전체 백업을 복원
  • NORECOVERY옵션으로 DIFF 백업 복원
  • NORECOVERY옵션을 사용하여 모든 LOG 백업 복원

모두 함께합시다 (환경에 맞게)

  • 기본 서버에서 다음을 실행하십시오.

    USE master
    Go
    BACKUP DATABASE [test0916aj8CJ] TO DISK = N'....bak'
    WITH FORMAT, INIT, NAME = N'test0916aj8CJ-Full Database Backup', STATS = 10
    GO
    BACKUP LOG [test0916aj8CJ] TO DISK = N'....bak' 
    WITH COPY_ONLY, FORMAT, INIT, NAME = N'test0916aj8CJ-Transaction Log Backup', STATS = 10
    GO
  • 보조 서버에서 다음을 실행하십시오.

    USE master
    Go
    RESTORE DATABASE [test0916aj8CJ] FROM DISK = N'....bak' 
    WITH FILE = 1, NORECOVERY, NOUNLOAD, REPLACE, STATS = 10
    GO
    RESTORE LOG [test0916aj8CJ] FROM DISK = N'....bak' 
    WITH FILE = 1, NORECOVERY, NOUNLOAD, STATS = 10
  • 그런 다음 가용성 그룹에 새 보조 DB 추가를 진행할 수 있습니다.

선택적 조치

  • DISK 옵션을 기본 및 보조 서버에서 모두 사용할 수있는 공유 폴더로 설정하는 것이 좋습니다.
  • DB 파일을 기본 및 보조 서버 모두에서 유사한 디스크 및 위치에 저장하는 것이 좋습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.