안녕하세요. SQLER의 코난 김대우입니다.
이번 강좌에서는, 13-5. 백업과 복원 - 로그 전달, Always On 고가용성과 재해 복구 구현을 진행 하겠습니다.
SQLER에서 진행되는, 챗GPT와 함께 배우는 SQL Server 강좌 목록
이번에 진행할 강좌는 백업과 복원 - 로그 전달, Always On 고가용성과 재해 복구 구현입니다. 이 강좌에서는 기본적인 고가용성에 대한 이해와 여러 고가용성 기능을 살펴봅니다.
TL;DR
데이터베이스의 고가용성과 재해 복구에 관한 내용을 진행하고, 클라우드 환경에서 HA/DR(고가용성/재해 복구) 구성도 소개합니다. 데이터베이스 미러링, 로그 전달, Always On 고가용성의 기능과 차이점을 설명합니다.
클라우드 시대 고가용성(HA - High Availability)과 재해 복구(DR - Disaster Recovery)
클라우드 시대에 웬 On-Premise 고가용성과 재해 복구?
이 글을 보고 계시다면 이미 클라우드 서비스 제공자(CSP - Cloud Service Provider)를 통해 여러 형태의 데이터베이스를 사용하고 계실 거에요. DaaS(Database-as-a-Service) 서비스로 대표적인 마이크로소프트의 Azure SQL Database나 AWS의 RDS for SQL Server와 같은 서비스부터 VM(Virtual Machine-가상머신)을 이용해 데이터베이스 서버를 클라우드에 전개하고 서비스하고 계실 거에요.
이 강좌의 목표는 HA/DR 에 대한 기본적인 이해입니다. 기본적인 이해가 있다면 사설 클라우드(Private Cloud)나 여러 CSP의 HA/DR을 더 쉽게 설정하고 사용할 수 있습니다. 이 강좌에서는 HA/DR 기본 설정과 기능별 차이에 대해 진행합니다.
다시 강조하지만, HA/DR을 구성해야 할 중요 데이터베이스 서비스라면 꼭 클라우드를 활용하시길 바랍니다.
☑️ 챗GPT 활용: 고가용성(HA - High Availability)과 재해 복구(DR - Disaster Recovery)에 대해서 알려줘
데이터베이스 고가용성
SQL Server는 여러 HA/DR 기능을 제공합니다. SQL Server의 대표적인 HA/DR 기능은 아래 세 가지가 존재합니다. 미러링은 SQL Server 2022 차기 버전부터 지원하지 않으니, Always On과 로그 전달 서비스를 주로 설명합니다.
데이터베이스 미러링(Mirroring) - SQL Server 2022 이후 지원하지 않음
이미지 - SQL Server 미러링
하나의 SQL Server 데이터베이스에 대해, 다른 SQL Server 인스턴스에서 복사본을 유지 관리하는 기능입니다. 주 서버(Principal Server)가 실제 데이터베이스 서비스를 제공하며, 다른 서버는 미러 서버(Mirror Server)로 대기(Standby) 상태를 유지합니다. 미러링은 주 서버에서 발생하는 데이터베이스 변경(삽입/수정/삭제) 트랜잭션을 미러 데이터베이스로 보내 REDO 하는 형태로 데이터베이스를 동기화합니다.
주 서버에 장애가 발생할 경우 자동/수동 조치를 통해 역할을 전환시킬 수 있습니다. 반드시 모니터링 서버가 있어야 자동 장애 조치가 수행됩니다.
차기 SQL Server부터는 지원되지 않으니, 아래에서 설명하는 로그 전달이나 Always On을 사용하시길 바랍니다.
로그 전달(Log Shipping)
미러링과 유사합니다. 주 서버(Primary Server)에서 트랜잭션 로그를 백업해 보조 서버(Secondary Server)로 복사하고, 보조 서버에서 트랜잭션 로그를 복원해 최신 상태를 유지합니다. 보조 서버의 데이터베이스를 제한된 읽기 전용(Read-only) 방식으로 접근해 데이터 조회 용도로 사용할 수 있습니다.
이미지 - 로그 전달
미러링과 로그 전달 차이
SQL Server의 미러링과 유사해 보이지만 몇몇 차이점이 있습니다.
- 로그 전달은 수동으로 장애 조치를 수행합니다.
- 미러링은 하나의 미러 데이터베이스만 존재하나, 로그 전달은 여러 보조 데이터베이스를 설정할 수 있습니다.
- 로그 전달은 커밋된 트랜잭션만 보조 데이터베이스로 전달되며, 미러링은 커밋되지 않은 트랜잭션도 전달됩니다.
- 로그 전달은 약간의 전송 대기 시간이 있으며, 미러링은 전송 대기 시간이 없습니다.
미러링은 차기 SQL Server부터는 지원하지 않습니다. 로그 전달이나 Always On을 사용하세요.
Always On
이미지 - Always On 구성
Always On은 가용성 그룹(AG - Availability Group)을 구성하고 관리하는 고가용성(HA - High Availability) 기능과 재해 복구(DR - Disaster Recovery) 기능을 제공하며, 로그 전달과 비교해 여러 장점들을 제공합니다.
- WSFC(Windows Server Failover Clustering)와 통합되어 가용성 그룹으로 데이터베이스 사용
- 가용성 그룹은 1개의 주 데이터베이스와 1~8개의 보조 복제본 데이터베이스를 지원
- 보조 데이터베이스에 대해 읽기 전용으로 접근 가능
- 다양한 장애 조치 설정 지원(자동/수동/강제)
- Availability Group Listener로 클라이언트는 장애조치 복제본에 자동 연결(장애 발생 시 수동으로 연결 문자열을 변경할 필요 없음)
- Always On 가용성 그룹은 SQL Server 최상위 버전인 엔터프라이즈 버전에서만 지원됩니다.
기본 설명만으로도 끝판왕 느낌입니다. 24시간, 365일 무정지 시스템으로 운영되어야 하는 HA/DR 데이터베이스를 직접 구성할 경우 최선의 선택입니다. 다양한 구성 시나리오와 패턴이 제공되므로 회사나 조직에서 원하는 구성에 맞춰 FCI(Failover Cluster Instance)나 AG를 구성할 수 있습니다.
☑️ 챗GPT 활용: WSFC(Windows Server Failover Clustering)에 대해서 알려줘
비즈니스 연속성과 고가용성 / 재해 복구
데이터베이스는 대표적인 24시간 중단 없이 운영되어야 하는 시스템입니다. SQL Server는 이러한 비즈니스 연속성 제공을 위해 다양한 고가용성 및 장애 조치 기능과 시나리오를 제공합니다. 로그 전달 및 Always On 기능 등을 활용해 비즈니스 연속성과 고가용성 / 장애 조치를 자동화해 구현할 수 있습니다.
최선의 HA/DR 구성 방안은, 클라우드 마이그레이션을 통해 점차 서비스를 On-Premise에서 클라우드로 이전하는 방안이며, 특히, 클라우드 서비스 제공자(CSP)가 제공하는 DaaS를 활용해 운영에 대한 비용을 낮추고, 개발에만 초점을 맞춰 운영하는 방안을 추천해 드립니다.
SQL 강좌 책 구매
강좌가 도움이 되셨다면, 책으로 구매 가능합니다. 책 판매 수익금은 전액 코딩 교육 사회공헌 활동에 기부되며, 아래 링크에서 구매하시면 더 많은 금액이 기부됩니다.
Always On 은 MSSQL의 축복이자 혁신이며 오라클도 부러워 하는 아키텍쳐입니다.
2014버젼부터 2022 까지 사용해보면서 많이 기능들이 개선되고 발전도 되었고 이걸로 상상 이상의 응용과 설계가 가능하다는것도 있어서 어디가나 이걸 반드시 써야한다고 권고하고 있습니다. 장애조치도 5초 이내로 넘어가는데(넘어간것도 체감안될정도) 안쓸수가 없습니다. 2016부터는 스탠다드버젼도 지원되서 MSCS 클러스터 쓰기보단 올웨이즈온 쓰는게 훨씬 관리나 성능에 이점이 많다는걸 경험했습니다.(스탠다드 읽기전용 못쓰면 너무 슬퍼요) 대기업 1등급 DB서버에 많이 깔아서 몇년동안 안정적으로 운영되는 결과를 봤을땐 이젠 이게 필수가 될수밖에 없습니다. 동의어를 이용하면 DB테이블을 세분화 시켜서 팜을 만들수도 있는데 레퍼런스 만들려고 추진했는데 아쉽게도 고객님의 예산이 힘들어서 보류되버린 현실이였습니다. 언젠가 팜을 성공시키면 잘만들었다고 자랑할렵니다. RDBMS의 락과 트랜잭션의 한계와 문제점을 극복할수 있는게 바로 올웨이즈온이라고 말하고 싶네요.