SQL Server 2005 데이터베이스 가용성 강화 측면에서 본 데이터베이스 미러링과 스냅샷, 복제 차주언 narsas@wtime.net 선임 컨설턴트 MCT, MCSE, MCDBA
들어가는 글 기업 내 컴퓨팅의 가용성을 보장하는 것은 DBA의 중요한 목표이다 기업의 특성과 응용 프로그램의 유형에 따라 엄청난 대가를 치를 수 있다 기존의 백업 복구가 제공하는 단순 기능 이상을 필요로 하며 일년 365일의 가용성을 요구하는 바 다음의 기능들을 소개 합니다.
목차(1) Session 1 : 데이터베이스 미러링 SQL Server 2005 고가용성 기술 비교 데이터베이스 미러링이란? 데이터베이스 미러링에서의 역할 데이터베이스 미러링 종류 (작동 모드) 데이터베이스 미러링 및 SQL Server 2005 Edition 데모 : 데이터베이스 미러링 구현
목차(2) Session 2 : 데이터베이스 스냅샷 데이터베이스 스냅샷이란? 스냅샷 관리 데모 : 데이터베이스 스냅샷 만들기 데이터베이스 스냅샷을 활용한 복구
Session 1. 데이터베이스 미러링
SQL Server 2005 에서의 고가용성 자동 복구 / 데이터 손실률 Zero 수동 복구 / 데이터 손실 복구 데이터베이스 미러링 클러스터링 수동 복구 / 데이터 손실 복구 트랜잭션 복제 로그 전달 데이터 손실 복구 백업 / 복원 Detach / copy / attach
SQL Server 2005 고가용성 기술 비교 특징 클러스터링 로그 전달 미러링 장애 감지 예 아니오 자동 복구 장애조치 동안 30초 이상 N/A 10초 미만 데이터 손실 예 – one copy of data 예 – latest transaction log 예 – in some configurations 중복 저장위치 아니오 – 공유디스크 전용 하드웨어 Certified storage and servers 실제 거리제한 100 마일 무제한 적용 범위 시스템,사용자 데이터베이스 사용자 데이터베이스 Clustering can now be used in conjunction with Analysis Services, Notification Services, and SQL Server Replication. Supports up to eight node clusters on Microsoft Windows Server 2003 Datacenter Edition, increasing the failover capacity. New database mirroring capability provides an enhanced version of log shipping for a faster failover time. Instead of shipping transaction logs at constant, configured intervals, each transaction is shipped as it is applied to the primary server
미러링이란?(1) 즉각적인 복구 결함 허용 서버 데이터베이스 복구 매우 빠름 데이터 손실 없음 하드웨어 Database Mirroring 미러링이란?(1) 즉각적인 복구 결함 허용 서버 데이터베이스 복구 매우 빠름 데이터 손실 없음 하드웨어 일반 표준형 장비로 가능 공유 저장 컴포넌트 불필요
미러링이란?(2) 감시 서버 주 서버 미러 서버 주 데이터베이스 Client 미러 데이터베이스
데이터베이스 미러링으로 얻는 이득 3초 이내의 복구 Complete redundancy 두개의 분리된 서버 두개의 분리된 데이터 표준 네트워크 상의 통신 특정 하드웨어 제약 없음 Self 모니터링 한 개의 데이터베이스를 위한 고 가용성 확보
데이터베이스 미러링에서 서버의 역할(1) 주 데이터베이스 주 서버 사용자의 접속 미러 데이터베이스 미러 서버 장애 발생시 사용자의 접속 감시 서버 자동 장애 조치 수행
데이터베이스 미러링에서 서버의 역할(1) 주 서버 미러 서버 (대기) 감시 서버 클라이언트 연결을 받는다 업데이트 허용 클라이언트는 연결할 수 없다 주 서버 내용 변경시 업데이트 새로운 주 서버로 될 수 있다 감시 서버 다른 두 서버를 모니터링 한다 자동 복구를 지원한다
데이터베이스 미러링 기본 개념 Acknowledge Commit Acknowledge Constantly Redoing on Mirror Transmit to Mirror Write to Local Log Committed in Log Write to Remote Log DB Log Log DB
미러링 세션 상태 데이터베이스가 : SYNCHRONIZED 미러 서버가 데이터를 완전히 가지고 있다 SYNCHRONIZING 미러 서버가 있고 데이터를 가져가고 있다 SUSPENDED 미러 서버 중단 DISCONNECTED 서버가 다른 서버랑 통신 못함 상태 모름 EXPOSED = SYNCHRONIZING or SUSPENDED or DISCONNECTED
Safety Levels (FULL) Acknowledge Commit Acknowledge Transmit to Mirror Write to Local Log Committed in Log Write to Remote Log Log Log
Safety Levels (OFF) Acknowledge Commit Transmit to Mirror Write to Local Log Committed in Log Write to Remote Log Log Log
데이터베이스 미러링 작동 모드(1) 작동모드 트랜잭션 안전 전송 메커니즘 필요한 쿼럼 감시 서버 장애조치 유형 고가용성 FULL 동기식 예 자동/수동 높은 수준의 보호 아니오 수동 높은 성능 OFF 비동기식 없음 강제 ALTER DATABASE 데이터베이스명 SET SAFETY FULL; 고가용성 모드 - 주 데이터베이스를 갑자기 사용할 수 없게 되거나 주 서버가 다운 되는 경우 감시 서버와 미러서버는 쿼럼을 구성하여 미러 서버는 자동 장애조치를 수행한다. 이 지점에서 미러서버는 새로운 주 서버로 역할이 변경되고 데이터베이스를 복구한다 높은수준의 작동 모드 - 감시서버가 없다. 수동 장애조치만 가능하다 고성능 작동 모드 - 트랜잭션 안전성OFF 로그 비동기 전송, 주 서버는 트랜잭션 로그 레코드가 미러에 기록 승인되기를 기다리지 않는다. 미러는 주서버와 같은 상태를 유지하나 최신로그를 저장하는 것을 보장하지는 않는다
데이터베이스 미러링 작동 모드(2) 고가용성 모드 - 주 데이터베이스를 갑자기 사용할 수 없게 되거나 주 서버가 다운 되는 경우 감시 서버와 미러서버는 쿼럼을 구성하여 미러 서버는 자동 장애조치를 수행한다. 이 지점에서 미러 서버는 새로운 주 서버로 역할이 변경되고 데이터베이스를 복구한다 높은수준의 작동 모드 – 감시 서버가 없다. 수동 장애조치만 가능하다 고성능 작동 모드 - 트랜잭션 안전성OFF 로그 비동기 전송, 주 서버는 트랜잭션 로그 레코드가 미러에 기록 승인되기를 기다리지 않는다. 미러는 주 서버와 같은 상태를 유지하나 최신로그를 저장하는 것을 보장하지는 않는다
데이터베이스 미러링 및 SQL Server 2005 Edition 특징 Enterprise&Developer Edition Standard Edition 파트너 네 감시서버 안전성(FULL) 안전성(OFF) 장애조치동안 사용여부 병렬 재실행 데이터베이스 스냅샷
데이터베이스 미러링 구현
데모 : 데이터베이스 미러링 구현 주 서버와 미러 서버 준비 미러 세션 만들기 감시 서버 만들기 작업 수행 장애 발생 주 서버 백업 그리고 미러 서버에 복원 양쪽에 미러세션 시작. 미러 서버에서, 주서버를 파트너 서버로 설정. 주서버에서 미러 서버를 파트너 서버로 설정. 이것으로 주서버에서 로그를 미러 서버로 보내게 되 동기화 된다 실패의 경우 디스커넥트 상태가 되는 것이다 자동 복구를 구현하기 위해 미러링 쿼럼에 감시 서버를 추가한다 이를 위해 주서버 미러 서버 중 한곳에 감시서버를 등록한다 본 데모에서는 주서버가 죽거나 연결불가가 된다(수동). 감시서버가 이를 감지하여 미러 서버가 주서버의 역할을 계속하게 하면 되는 것이다
시나리오 : 미러링 가용성 주 서버 손실의 경우 주 서버 손실 후 새 주 서버 손실 주 서버 손실 후 감시 서버 손실 미러 서버의 손실 미러 서버 손실 후 주 서버 손실 미러 서버에 이어 감시 서버 손실 감시 서버 손실 감시 서버에 이어 주 서버 손실 감시 서버에 이어 미러 서버 손실
시나리오 : 통신 손실 주/미러 서버 통신 손실 주/감시 서버 통신 손실 에 이어 주/미러 서버 통신 손실 미러/감시 서버 통신 손실
결론(요약) 데이터베이스 복구 자동 클라이언트 리다이렉트 하드웨어 손실 Zero 간단한 구축 빠르다 : 3초 이내 자동, 수동 복구 복구 후 자동 재 동기화 자동 클라이언트 리다이렉트 하드웨어 표준형 장비 공유 저장 컴포넌트 불필요 손실 Zero 간단한 구축
Session 2 데이터베이스 스냅샷
데이터베이스 스냅샷 이란? 읽기 전용, 그때 그 시절의 그 모습을 즉각적으로 만든다 원본 데이터베이스의 수정이 일어나면 해당 내용은 스냅샷 데이터베이스에 이동된다 그러나 스냅샷 데이터베이스가 원본에 제약을 가하진 않는다 스냅샷 데이터베이스는 원본과 다른 이름을 가진다 이전에 만들어진 스냅샷 데이터베이스로 에러(주로 사용자 정의)를 복구 할 수 있다
데이터베이스 스냅샷의 관리 스냅샷 만들기 스냅샷 삭제하기 제한 사항 Create database snapshot_데이터베이스명 as snapshot of 데이터베이스명 스냅샷 삭제하기 Drop database snapshot_데이터베이스명 제한 사항
데모 : 데이터베이스 스냅샷 만들기 데이터베이스 스냅샷 만들기 스냅샷 데이터베이스에 억세스 하기 데이터 변화 실험 스냅샷 데이터베이스의 삭제
데이터베이스 스냅샷을 활용한 데이터 복구 시나리오 예제 또는 복구 절차 Undeleting rows Undoing an update 삭제된 객체의 복구 INSERT INTO Production.WorkOrderRouting SELECT * FROM AdventureWorks_dbsnapshot_1800.Prod.WorkOrderRouting UPDATE HR.Department SET Name = ( SELECT Name FROM AdventureWorks_dbsnapshot_1800.HR.Department WHERE DepartmentID = 1) WHERE DepartmentID = 1 스냅샷 데이터베이스에서 해당 객체의 스크립트를 추출한다 사용 데이터베이스로 이동 후 스크립트 실행 위의 쿼리를 참고로 데이터를 예전껄로 복구 한다
데모 : 데이터베이스 복구 사용자 정의 에러 또는 잘못된 수정 예전 데이터로의 복구
스냅샷 데이터베이스의 장/단점 장점 단점 그때 그 시절의 내용을 손쉽게 빠르게 읽을 수 있다 스냅샷 데이터베이스는 원본 데이터베이스 성능에 영향이 없다 여러 스냅샷 데이터베이스를 만들 수 있다 스냅샷 데이터베이스는 영원히 있을 수 있다 단점 스냅샷 데이터베이스를 여럿 만들 경우 디스크 용량문제를 야기할 수 있다 정확한 시점이 불가능하다 해당 스냅샷을 만든 시점으로만 가능하다 미러 서버에 만든 스냅샷은 성능에 영향을 준다
결론(요약) 데이터베이스 스냅샷은 데이터베이스와 이에 수반된 저장소의 전체 복사본을 만드는 데 따른 오버헤드 없이 데이터베이스의 읽기 전용 뷰를 생성하는 기능이다. 오직 변경 사항만을 포함하는 데 필요한 공간만을 차지한다. 원치 않는 데이터베이스 변경작업을 무효화 하고 원래대로 복구하기 위해 스냅샷의 원본페이지를 데이터베이스에 적용하기도 한다