High Availablity SQL Server 인프라스트럭쳐구축의비밀 김영건 / 책임컨설턴트씨퀄로
이주제를이해하는데필요한지식 SQL Server 아키텍쳐에대한기본개념 고가용성에대한기본개념 100 개념및소개수준 200 중간수준 300 고급수준 400 전문가수준 Level 300 선수지식불필요 100에더하여기술적세부사항설명 200에더하여능숙한사용경험, 아키텍처지식필요 300에더하여주제에대한전문적인지식필요
강사소개 김영건책임컨설턴트 씨퀄로 DB 사업부 Email: ygkim@sqlroad.com Blog: www.sqlserver.co.kr 주요업무및활동 SQL Server 컨설팅 / 기술지원 / 교육 SQL Server Specialist Member PASS Korea Member 세미나 SQL Server 전문서적번역
오늘의내용 고가용성이란? SQL Server 고가용성 Lesson from field
고가용성 고가용성? DR? 시스템을가능한오랫동안사용가능한상태로보장하는프로세스 장애상황, 유지보수, 패치, 하드웨어마이그레이션포함 Disaster Recovery 재해복구 장애상황에서시스템을정상화시키는프로세스
고가용성? DR?
가용성 vs. 확장성 가용성 앞에서설명 클러스터링, 복제, 로그전달, 미러링 확장성 Scale-out 데이터베이스의부하분산 복제 로그전달 - Standby 모드 미러링 데이터베이스스냅숏사용
SQL Server 의고가용성 SLA 를만족할수있게데이터베이스를유지해주는기능들 클러스터링 복제 미러링 로그전달 + 온라인작업 스냅숏격리수준 백업
회사에서원하는건? 장애가났을때얼마나빨리정상화시킬건지?(RTO) Recovery Time Option 무조건빨리 데이터손실은얼마나? (RPO) 무조건최소 Recovery Point Option
요구사항을분석 RTO RPO 그럼무엇부터시작해야지? 가용성을위한것인지, 확장성을위한것인지구분필요
그럼무엇부터시작해야지? 계속 적절한솔루션찾기 자동으로 Failover 가필요한지? 데이터가이중화되야하는지? 특정데이터만이중화되면되는지? 대상서버에서실시간으로데이터를확인해야하는지? 원격지에데이터가있어야하는지?
구축준비 그럼무엇부터시작해야지? 계속 구축시나리오 테스트 Rollback Plan 구축하기 모니터링하기
MSCS 위에설치 클러스터링 Active Directory 필요 외장형스토리지필요 서버이중화 데이터의이중화가아님 Shared Nothing 방식 자동장애조치 인증된하드웨어필요 투명한클라이언트리디렉션 가용성범위는인스턴스
클러스터링 가상서버 Passive Active Active 공유디스크
Pros 클러스터링 : Pros & Cons 서버단위의가용성 자동장애조치 투명한클라이언트리디렉션 Cons 데이터의이중화가아님 외장형스토리지필요 서버가같은위치에존재해야함 ( 거리제약 )
클러스터링 : What s New in SQL Server 2008 설치및제거방식변경 롤링업그레이드지원 Windows Server 2008 의새로운기능들이많이있음
복제 개체, 데이터단위로복제가능 다양한종류의복제 스냅샷복제 트랜잭션복제 병합복제 양방향복제 P2P 복제 다양한토폴로지의구성가능 관리의어려움
복제 : 트랜잭션복제 가장많이사용하는복제형식 데이터변경을거의동시에복제 Default: 5 초 ( 게시 -> 배포 ) + 5 초 ( 배포 -> 구독 ) 게시자와구독자가항상연결 아티클에대해서필터링가능 PK 필요 구독자에서변경내용이게시자로전달가능 기본은게시자에서구독자로의단방향복제
복제 : 트랜잭션복제 게시자 Data 배포자 Data 구독자
Pros 복제 : Pros & Cons 개체단위의이중화가능 빠른데이터전송 구독자에서실시간읽기가능 서버간거리는상관없음 (TCP만된다면 ) Cons 대량데이터처리주의 미러링, 로그전달에비해구성이복잡 관리가힘듬
복제 : P2P 복제 각각의노드가게시자이자구독자 서로다른노드끼리 1:1 복제구성 Peer-to-Peer 네트워크토폴로지와유사 데이터에대한꼬리표 무한루프방지 Enterprise Edition 에서만사용가능
복제 : P2P 복제 뉴욕 서울 파리 데이터복제 Read/Write
복제 : What s New in SQL Server 2008 복제모니터향상 파티션테이블에서 switch 사용가능 P2P 복제에서충돌검색지원 P2P 복제에서토폴로지정지없이피어추가 P2P 복제에서새로운구성마법사지원
미러링 SQL Server 2005 에서처음소개된고가용성기술 수초내의자동 Failover( 자동장애조치있는보호모드 ) 완벽히동기화된데이터베이스 copy( 보호우선모드 ) 세가지모드지원 자동장애조치있는보호모드 자동장애조치없는보호모드 성능우선모드 미러세션을리포트용으로사용가능
미러링 미러서버 주서버
미러링 : Pros & Cons Pros 가장빨리데이터이중화가능 자동장애조치가능 미러서버에서읽기가능 서버간거리는상관없음 (TCP 만된다면 ) Cons 전체복구모델을사용해야함 보호모드 ( 동기모드 ) 인경우성능저하가있을수있음 미러서버에서실시간으로데이터읽기는불가능
미러링 : What s New in SQL Server 2008 트랜잭션로그레코드스트림의압축 전달되는로그데이터가압축됨 네트워크가병목인경우효과적임 주서버에 CPU 부하가약간더생김 손상된페이지의자동복구 페이지가손상된경우파트너에서정상페이지 copy 823,824,829 오류처리가능
로그전달 주서버의로그를백업받아서보조서버에복원 자동화된작업 Workgroup edition 이상에서지원 Log Backup 주서버 보조서버
로그전달 주서버 Backup Copy 보조서버 Restore
로그전달 : Pros & Cons Pros 보조서버가 1 대이상가능 안정적동작 보조서버는읽기전용으로사용가능 사용자실수에대한처리가능 서버간거리는상관없음 (TCP 만된다면 ) Cons 일반적으로긴동기화주기 장애시데이터손실이있을수있음 장애시수동으로조치 보조서버에서실시간읽기는불가능
로그전달 : What s New in SQL Server 2008 작업빈도를초단위로지정가능 최소 10초이상 trace flag 3226로 errorlog를줄일수있음 로그백업압축 백업속도 up 네트워크 copy 속도 up 복원속도 up
클러스터링 : 업그레이드 롤링업그레이드지원 SQL Server 2008 에서지원 설치순서 사전설치프로그램 PASSIVE 설치 Failover -> 업그레이드 Active 설치 소유권제거주의
Slipstream 설치 SQL 설치시 ServicePack 과 Hotfix 설치를한번에 설치시간단축
클러스터링 : 다시시작옵션 SQL Server 리소스 Failover 설정 다시시작옵션 그룹에영향을줌 : default가 false 3번 retry 후 fail
복제 : Immediate_sync 스냅숏을어떻게관리할것인가 복제관리테이블의데이터보관기간 msrepl_commands, msrepl_transations False: 배포가되면바로삭제 True: max retention주기까지보관 대용량에서는배포정리시문제발생 구성시체크박스에따라서달라짐
복제 : subscription streams 배포 thread 늘리기 네트워크가느린경우 -SubscriptionStreams 주의사항!!! 구독자에데이터전달순서가바뀔수있음 제약조건문제 테스트
복제 : MaxCmdsInTran 한트랜잭션에많은행을변경한경우, 구독자에서잠금발생가능 -MaxCmdsInTran 트랜잭션내명령 (commands) 을나눠서구독자에반영
복제 : 프로시저실행복제 대량데이터를변경하는경우 작업을프로시저로만들고복제에추가 아티클속성수정 스키마및실행복제에서저장프로시저정의만대신다른것을선택
복제 : 초기화 대상테이블 / 데이터의크기가큰경우 백업으로초기화 스냅숏에비해서빠를수있음 이후추가되는테이블은스냅숏으로처리불가능??? 스냅숏으로초기화시 Tip Maxbcpthread 복구모델변경
복제 : 배포자위치 일반적으로배포자를게시자와같이두는경우가많음 복제에이전트와복제 DB 관리리소스문제 구독자가 1 대인경우에는배포자를구독자와함께위치 게시자배포자구독자
복제 : P2P 복제구성이슈 데이터구분필요 자기서버의데이터만수정할수있게구분자필요 Identity 문제 입력시 Identity 가충돌해서오류발생가능 자동관리 or DBCC CHECKIDENT 스냅숏으로초기화불가능 백업으로초기화
복제 : P2P 복제충돌검색 2005 에서는서로상대방데이터로 Update 2008 에서는충돌이난 Peer 간의복제중지 해결방법 1. 구독옵션에서 Continue Replication After Conflict dectection 을설정하고재시작 2. sp_changepublication 에서 p2p_continue_onconflict 를설정하고재시작 3. 백업으로다시초기화 행길이가늘어남 ( 내부적으로 ) 복제충돌뷰어제공
미러링 : 전용네트워크 네트워크부하가있는경우고려 다른영역대의네트워크카드추가 Host 파일에별칭부여 별칭으로미러링구축
미러링 : 동기 vs. 비동기 대량의 DML 작업이없다면동기모드도 OK 대량의 DML 작업시비동기모드로변경 DBA 가 Control 할수있어야함 권장방안 비동기미러링으로운영 Queue 에데이터가쌓이지않는지모니터링 자동장애조치없는동기미러링으로변경 자동장애조치있는동기미러링으로변경
미러링 : 미러서버 IO 문제 미러서버가 IO를많이사용함 데이터기록방식의차이 IO 문제가심각하다면 TF 3499 사용 테스트!!! Failover 시간이느려질수있음
미러링 : with 클러스터링 클러스터링과미러링을함께사용 자동장애조치구성 대부분은 1차로클러스터링이해결원함 미러링 timeout 설정필요 Default: 10초 ALTER DATABASE SET PARTNER TIMEOUT 100 미러링
로그전달 : 동기화사용 미러링, 복제의초기화에사용가능 대량의데이터를초기화해야하는경우 전체백업이후로그복원자동화
감사합니다.