새로운이중화솔루션 AlwaysOn 한국마이크로소프트 하만철대리
Speaker 하만철대리 현재 한국마이크로소프트 SQL Server Support Engineer 경력 NHN DBA Nexon DBA SQL Server MVP 2010 주요활동사항 SQL Server 운영과튜닝집필
세션소개 기존의고가용성솔루션과 AlwaysOn의비교 AlwaysOn의주요기능 AlwaysOn 가용성그룹 AlwaysOn 장애조치클러스터 AlwaysOn 데모
가용성이란? RPO (Recovery Point Objective) = data loss RTO (Recovery Time Objective) = downtime 연간다운타임 예정된작업 예상치못한작업 가용성 다운타임 /year 99% 3.65 Days 99.9% 8.76 Hours 99.99% 52.56 Minutes 99.999% 5.26 Minutes 로컬 HA, 원거리 DR
기존의고가용성솔루션 Clustering Log Shipping Mirroring Transactional Replication
우리가원하는것은? 가용성 99.999% 기존서비스의영향도최소화 자동으로장애처리 비용 기존장비사용 DAS, SAN, SSD, 로컬디스크사용 스탠바이장비의활용
AlwaysOn Clustering + Mirroring + Log Shipping + A 서버 5 A 서버 4 레포트 A 서버 3 A 서버 2 A 서버 1 백업 동기데이터전송 비동기데이터전송
주요기능 DB 그룹장애조치 다중보조서버 보조서버활용 비동기 / 동기데이터전송 가용성그룹수신기 연결옵션추가 유연한장애조치정책 다중서브넷클러스터 문제분석기능향상
가용성그룹 유연성 DB그룹장애조치 다중보조서버 최대 4개보조서버 2개동기방식 1개자동장애조치 동기 / 비동기데이터전송 암호화및압축사용 자동페이지복구 SAN or DAS 사용 통합 효율 보조서버의사용
가용성그룹수신기 가용성그룹 - 가용성그룹수신기 - 보조서버활용 - Client 연결속성추가 - 읽기전용라우팅 - 보조서버와동기화방식 장애조치발생시 Application 이주서버를찾도록함 서버 A 서버 B 서버 C 2 DB 2 DB 2 DB 가용성그룹 주서버 수신기 주서버 보조서버 Application 연결오류 보조서버
보조서버활용 가용성그룹 - 가용성그룹수신기 - 보조서버활용 - Client 연결속성추가 - 읽기전용라우팅 - 보조서버와동기화방식 읽기가능한보조서버 주서버보조서버1 보조서버2 보조서버3 보조서버4 장애조치 DBCC CHECKDB 동기모드비동기모드 웹요청 검색수집 관리자
보조서버활용 가용성그룹 - 가용성그룹수신기 - 보조서버활용 - Client 연결속성추가 - 읽기전용라우팅 - 보조서버와동기화방식 백업수행 주서버 보조서버 1 보조서버 2 전체백업 로그백업 하나의로그체인유지 차등백업지원하지않음
Client 연결속성추가 가용성그룹 - 가용성그룹수신기 - 보조서버활용 - Client 연결속성추가 - 읽기전용라우팅 - 보조서버와동기화방식 ApplicationIntent 읽기전용또는읽기 / 쓰기를지정 가용성그룹의 ALLOW_CONNECTIONS 옵션과연계하여사용 ApplicationIntent= ReadOnly ApplicationIntent= ReadWrite MultiSubnetFailover 빠른연결요청에의해장애조치발생시장애시간단축 다중서브넷이구성된경우장애조치시병렬로연결요청 가용성그룹수신기에서만사용가능 MultiSubnetFailover=True
읽기전용라우팅 가용성그룹 - 가용성그룹수신기 - 보조서버활용 - Client 연결속성추가 - 읽기전용라우팅 - 보조서버와동기화방식 주서버 보조서버 1 보조서버 2 READ_ONLY_ROUTING_URL = 보조서버 1 ALLOW_CONNECTIONS = READ_ONLY ApplicationIntent= ReadOnly
보조서버와동기화방식 가용성그룹 - 가용성그룹수신기 - 보조서버활용 - Client 연결속성추가 - 읽기전용라우팅 - 보조서버와동기화방식 Primary DB1 로그캡처 네트워크 로그수신 DB1 Secondary 커밋 로그풀 Redo 스레드 로그캐시 로그캐시 로그플러시 로그확정 DB1 로그 DB1 데이터 커밋응답 DB1 로그 DB1 데이터
장애조치클러스터 유연한 Failover 정책 향상된분석기능 장애조치수준설정 다중서브넷클러스터
isalive SQL Server 2012 장애조치클러스터 - isalive - SP_SERVER_DIAGNOSTICS - 장애조치수준설정 - 다중서브넷클러스터
장애조치클러스터 - isalive - SP_SERVER_DIAGNOSTICS - 장애조치수준설정 - 다중서브넷클러스터 구문 sp_server_diagnostics [@repeat_interval =] 'repeat_interval_in_seconds' 구성요소 system 리소스 쿼리처리 의미 엄격한처리조건, 잠겨있는태스크, 페이지폴트및 CPU 사용에대한데이터를수집 실제및가상메모리, 버퍼풀, 페이지, 캐시및기타메모리개체에대한데이터를수집 작업자스레드, 태스크, 잠겨있는태스크, 대기유형, CPU 사용량이많은세션및차단태스크에대한데이터를수집 IO 하위시스템 IO 하위시스템에대한정상상태또는경고상태만생성 이벤트링버퍼예외, 메모리브로커에대한링버퍼이벤트, 메모리부족, 스케줄러모니터, 버퍼풀, spinlock, 보안및연결을포함하여서버에서기록한오류및이벤트에대한데이터및화면을수집
장애조치수준설정 장애조치클러스터 - isalive - SP_SERVER_DIAGNOSTICS - 장애조치수준설정 - 다중서브넷클러스터 FailureConditionLevel Failover 조건을설정 HealthCheckTimeout sp_server_diagnostics 응답제한시간 (15sec~) 수준오류 PowerShell 값 0 자동으로장애조치하지않음 1 SQL Server 서비스가다운된경우 OnServerDown 2 SQL 서버인스턴스가응답하지않을경우 ( 리소스 DLL 이 HealthCheckTimeout 설정의 sp_server_diagnostics 에서데이터를받을수없음 ) OnServerUnresponsive 3 sp_server_diagnostics 가 ' 시스템오류 ' 를반환 OnCriticalServerError 4 sp_server_diagnostics 가 ' 리소스오류 ' 를반환 OnModerateServerError 5 sp_server_diagnostics 가 'query_processing 오류 ' 를반환 OnAnyQualifiedFailureC onditions
다중서브넷클러스터 장애조치클러스터 - isalive - SP_SERVER_DIAGNOSTICS - 장애조치수준설정 - 다중서브넷클러스터 서로다른서브넷과장애조치구성 하나의 AD 그룹에모든노드가포함 Hotfix 2494036 각노드의투표권설정 10.10.10.100 노드 1 노드 2 장애조치 20.20.20.100 노드 3 노드 4 스토리지복제 사이트 A 사이트 B
제한사항 가용성그룹제한없음 ( 인스턴스당 10개가이드 ) DB수제한없음 ( 가용성그룹당 100개가이드 ) 전체복구모델 사용자 DB만가능 읽기 / 쓰기가능한 DB만가능 미러링과동시에구성불가 DB는하나의가용성그룹에만포함가능 가능하다면동일한 DB파일경로를사용 AUTO_CLOSE 사용불가
기타향상된내용 Windows Core 설치지원 OS 패치로부터 50~60% 재부팅감소 Rolling 업그레이드지원 온라인으로 LOB 컬럼이포함된인덱스생성 간접검사점 (Indirect checkpoint) Azure 지원 SMB 지원 로컬디스크에 TEMPDB 위치가능