본 게시물은 개인적인 의견으로 작성되었으니 절대적인 정보가 아닐 수 있습니다. 참고만 하시고 궁금한 사항이 있으시면 연락주세요.

티스토리 뷰

SQL Server 2016 AG에 추가된 기능인 Database Level Health Detection(데이터베이스 수준 상태 검색)을 테스트를 해봤다.

   

[테스트 결과]

SQL Server 2016 AG에서는 가용성데이터베스가 Pending 상태가 되면 자동장애조치가 된다.

단, "가용성그룹의 모든 데이터베이스가 그 상태이어야 한다" 가정이었으나 테스트 결과

가용성그룹에 1개의 데이터베이스만 있을 경우에 자동장애조치가 발생하고, 다수 존재시 구동 되지 않았다.

2014AG는 자동장애조치가 발생하지 않는다.

Database Level Health Detection 이란 기능에 대해서 확인이 필요할 같다.

괜히 사용했다가 심각한 상황이 수도 있을 같다.

   

어떤 상황에 해당 기능이 구현되는지 확인해보자.

   

[시나리오 테스트]

SQL Server 2014 가용성그룹에서 AGDB3의 파일 경로를 다른 디스크로 배치하였다.

LDF 만 F 드라이브로 이동 후 가용성데이터베이스에 추가 하였다.

   

   

   

이 상황에서 F드라이브를 오프라인하면 AGDB3 데이터베이스는 상태가 온라인에서 팬딩상태(RECOVERY_PENDING)로 변경이 될 것이다.

select state_desc, * from sys.databases where name in ('AGDB1', 'AGDB3')

   

   

이럴 경우에 장애조치가 되어야 좋지 않을까? 실제로 자동장애조치는 되지 않는다.

   

   

SQL Server 2016 에서 테스트를 해보자.

옵션설정이 되어 있는지 가용성그룹 속성화면에서 확인 가능하다.

   

위와 같은 시나리오로 테스트를 해보자.

   

   

E 드라이브를 오프라인 시켰다.

   

   

결론. 자동 장애조치가 되지 않았다.

이슈 : 가용성그룹에 모든 데이터베이스의 문제가 발생할때만 자동으로 넘어가는 걸까? 의심 스럽다.

   

가용성데이터베이스 1개로만 테스트를 해보았다.

결론 : 자동장애조치가 되었다. 다수의 데이터베이스중에서 1개의 문제가 발생하면 안되는 기능 인듯 하다. 뭐하로 만들었지????

   

   

   

위 상황에서 기존의 Primary Replica에서 복구는 어떻게 해야할까?

기본적으로 데이터베이스를 오프라인 -> 온라인을 해주면 된다.

그러나 가용성그룹의 데이터베이스를 안된다.

그럼 어떻게 해야할까?

위 시나리오는 추후에 다시 테스트를 해봐야 할 것 같다. 충분히 발생할 장애상황이다. 쯔쯔

   

단순하게 주 복제본을 원복하면 정상적으로 구현이 된다. 신기하다.

이 부분은 좀더 테스트를 해야할 부분이다.

   

   

   

다시 SQL 2016 AG 의 가용성데이터베이스를 2개로 추가 후 똑같은 시나리오로 테스트를 했다.

2개를 차례대로 Recovery Pending 상태로 만들어봤지만 자동장애조치가 되지 않았다.

뭐야 ~ 썅~

   

   

문제가 많은 기능 같다.

해당 기능에 대해서는 좀 더 확인이 필요할 것 같다.

   

   

   

   

   

   

댓글
최근에 올라온 글
최근에 달린 댓글
글 보관함
Total
Today
Yesterday