[개념정리]SQL Server 고가용성 기술 정리
해당 글은 과거 고가용성 기술 검토를 위해 작성하였던 문서입니다.
목적
-
Std.와 Ent. 지원이중화 기술간 비교
-
Mirroring/LogShpping vs. MSCS/Always on
-
해당 글은 Std. 지원 이중화 기술의 취약사항을 중점으로 Ent. 이중화 기술과 비교
-
SQL Server 2017 Std.부터 Always on 기능을 제한적으로 사용 가능
-
고가용성 기술 특징 비교
항목 |
Mirroring |
LogShipping |
MSCS |
Always on |
자동 장애조치 |
O |
X |
O |
O |
실시간 복제 |
O |
X |
N/A |
O |
고가용성 수준 |
DB |
DB |
인스턴스 |
DB |
주-보조 서버 1:M 구성 |
X |
O |
N/A |
O |
보조 서버 Read (주서버 부하 경감) |
X |
O |
N/A |
O |
모니터 방식 |
별도 서버 구성 |
별도 서버 구성 |
쿼럼 추가 |
쿼럼 추가 |
Client Re-direction |
SQL Native Client 등 지원 |
별도 사용자 정의 필요 |
VIP |
리스너 |
Std. 제공 고가용성 기술의 주요 취약사항
-
Logshipping
-
자동장애조치가 불가
-
수동장애조치시 매우 까다로움
-
미복원된 TR백업본 수동 복원
-
신규 주서버와 보조서버에 대한 스케줄러/복제 경로 설정 등의 추가 작업
-
-
SQL Server 장애조치시 클라이언트의 리다이렉션에 대한 제공 기능 없음
-
-
Mirroring
-
자동장애조치를 위해 별도 모니터 서버 구성 필수
-
보조 서버에 대한 접근 불가 및 1대1 구성
-
주서버의 부하 경감 불가
-
2019 이후 버전부터 제거될 이중화 기술
-
Ent. 제공 고가용성 기술 소개
-
MSCS
-
설명
-
고가용성 제공 대상 : MS 솔루션 제품 (SQL Server/Exchange 등), DISK, File Server 등
-
여기서 소개하는 MSCS는 SQL Server에 대한 MSCS 구성에 한하여 설명
-
아래 그림의 역할 (Cluster Instance#1/#2) 단위 내 클러스터 리소스 간 종속성 수준 SQL Server Agent가 가장 높음
-
-
모니터링 기능
-
쿼럼
-
데이터의 정합성 유지 목적
-
클러스터 구성 정보 및 로그를 모든 노드들과 공유
-
'노드 및 디스크 과반수 모델' 의 Voter (클러스터 서비스 Down/Up )
-
-
보통 약 1G의 외장디스크를 할당하며, 쿼럼이 Fault가 발생해도 재구성이 용이
-
타 노드의 문제가 없을 경우 쿼럼이 없이도 서비스 가능
-
-
-
RHS.exe
-
클러스터에 등록된 리소스 (하단 그림의 Filesystem,SAN DISK,Service 등)의 Health Check 수행
-
각 리소스에 대한 look-alive(5초) 체크 후 Response 없을시 is-alive (60초) 수행
-
is-alive에 대한 response 없을시 리소스 별 설정 정책에 따라 Fail-over/리소스 Restart 등 수행
-
-
-
-
-
Mirroring/Logshipping 비교
-
장점
-
장애조치 후 별도 작업 불필요
-
SystemDB/UserDB에 대한 고가용성
-
클라이언트 리커넥션 별도 설정 불필요 (VIP를 통한 SQL Server 서비스를 제공)
-
-
자동 장애조치 기본 제공 (별도의 모니터 서버 구축 불필요)
-
쿼럼&RHS.exe
-
-
DB 고가용성에서 발생 가능한 서버내 타 DB 참조 이슈 미존재
-
인스턴스 레벨의 고가용성
-
-
SQL Server 서비스에 관련된 컴포넌트 장애 감지 및 장애조치
-
DB 고가용성에서 HW 컴포넌트에 대한 감지 불가
-
역할단위에 포함되어 함께 이동
-
-
-
단점
-
의도치 않은 Failover 발생 가능
-
특정 클러스터 리소스의 순간적 Bottleneck 발생으로 인한 장애조치 발생 가능
-
예) 업무서비스 연관성은 있지만 SQL Server 동작과는 무관한 파일시스템의 IO부하로 인한 RHS 감지시 지속적으로 발생 가능
-
-
-
DB 개별 단위 장애에 대한 장애조치 불가
-
특정 DB의 PENDING 등에 대한 조치 미진행
-
-
높은 구축 비용
-
SAN Storage가 필수적
-
SAN 장애시 대처방안이 없음
-
-
-
유휴 Node 발생
-
해당 부분은 A/A 구성 진행시 서로 다른 인스턴스를 각 노드에서 서비스할 수 있기 때문에 개인적으로는 단점이 아님
-
-
-
-
-
ALWAYS ON
-
설명
-
-
고가용성 제공 대상 : DB 단위
-
MSCS 기반으로 동작
-
위 기술된 MSCS는 SQL Server 서비스 제공을 목표로 하는 역할 단위
-
현재 기술하는 ALWAYS ON은 MSCS의 역할단위가 AG (Availability Group)
-
-
모니터링 기능
-
상기 MSCS와 동일
-
-
-
-
Mirroring/Logshipping 비교
-
장점
-
리스너를 통한 클라이언트 Re-direction 기능 제공
-
각 AG단위별 VIP를 보유
-
AG 리스너에 AG단위별 Re-direction 정책을 설정
-
Read-Only 접근 우선순위 지정
-
보조서버들이 모두 Down 되었을시 주서버로 re-direction 가능
-
-
-
-
주서버의 부하 경감
-
AG 리스너의 보조서버로 Read-Only Access 전달
-
동기화 수행 주체를 보조서버로 설정 가능
-
빠른 동기화 Sync 로직
-
Mirroring - 보조서버에 DATA가 반영되는것까지 진행된 후 Commit
-
ALWAYS On - 보조서버가 Log까지 기록한 상황에서 Commit Ack 전송
-
-
-
자동 장애조치 기본 제공 (별도의 모니터 서버 구축 불필요)
-
쿼럼&RHS.exe
-
-
AG 제공을 통한 타 DB 참조 이슈 경감
-
단일 AG 그룹내 Sync 3/Async 5개 DB 구성 가능
-
단일 인스턴스내 다수 AG 그룹 구성가능
-
-
-
단점
-
주/보조 AG 변경에 따른 수동 변경사항 존재
-
스케줄러/누락된 계정 맵핑 등
-
-
-