0

SQL Server 2012에서 미러링 데이터베이스를 설치하는 동안 실수로 원래 데이터베이스를 2 번 백업했습니다.다중 백업 후 2012 년 미러링 설치

미러 서버에서 데이터베이스를 복원 한 후에 데이터베이스가 동기화되지 않았습니다.

문제를 해결하기 위해 복구 모델을 '전체'에서 '단순'으로 변경하고 '전체'로 다시 변경했습니다. 그런 다음 데이터베이스를 다시 백업합니다. 미러 서버에서 미러링 절차를 복원 할 때

제 질문은 왜 원본 데이터베이스의 둘 이상의 전체 백업을 가져 가면 동기화가 실패합니까?

답변

0

로그 체인 때문에 미러링은 트랜잭션 로그 백업을 다른 서버로 복원하는 것과 비슷하지만 자동으로 작동하려면 전체 백업에서 마지막 t-log 백업까지 끊어지지 않은 로그 체인이 필요합니다. 그래서 로그 체인은 다음과 같이 보입니다 (멋진 순차 LSN이 있음) :

전체 -1> LogA-> LogB-> Full-2-> LogD-> LogE-> LogF ...

위의 예에서 전체 1 백업을 복원 한 경우 로그 백업 A, B, C는 복원 할 수 있지만 D, E, F는 복원 할 수 없습니다. 전체 -2를 복원하는 경우에만 복원 할 수 있습니다.

미러링에서 DB의 전체 백업을 수행 한 다음 복원하면 SQL Server는 LSN (Log Sequence Numbers)을보고 복원 된 미러 데이터베이스에없는 트랜잭션을 전송합니다 전체 백업을 사용하면 순차적 LSN 체인을 끊을 수 있습니다.

경우에 따라 Full-1을 복원 한 다음 Logs D, E, F를 적용하려고했는데 시퀀스 번호에 간격이 있습니다. 미러 서버로 가져간 두 번째 실수 백업을 방금 다시 미러링 한 다음 미러링을 시작한 경우에는 작업 한 상태 여야합니다. 복구 모델을 변경하면 로그 체인을 완전히 재설정하고 다시 시작해야합니다.

+0

감사합니다. 미러링에 추가 로그 백업이 필요한 이유는 무엇입니까? 질수있어 SQL 서버가 원래 백업을 사용하고 메인 데이터베이스에서 누락 된 정보를 복원? – user2542655

+0

그것은 주 데이터베이스에서 데이터를 가져 오는 것이 아니라 미러 된 데이터베이스로 트랜잭션을 재생하여 작동하기 때문입니다. – steoleary