1 Azure SQL을 사용하여 IaaS 솔루션 배포
1.1 Introduction
데이터베이스 시스템의 성능 최적화를 위한 주요 고려사항:
- 데이터베이스 워크로드 성능 보장
- 가상 머신의 적절한 크기 선택이 필수적
- CPU, 메모리, IOPS 등 리소스 요구사항 분석
- 워크로드 특성에 맞는 VM 시리즈 선택
- CPU, 메모리, IOPS 등 리소스 요구사항 분석
- 스토리지 구성의 최적화
- Premium SSD, Ultra Disk 등 적절한 스토리지 타입 선택
- 데이터, 로그, 템프DB 파일의 효율적인 배치
- Premium SSD, Ultra Disk 등 적절한 스토리지 타입 선택
- 네트워크 설정 최적화
- 대역폭 요구사항에 맞는 네트워크 구성
- 보안 및 접근성 고려
- 대역폭 요구사항에 맞는 네트워크 구성
- 가상 머신의 적절한 크기 선택이 필수적
- 고가용성 구성
- 비즈니스 요구사항에 맞는 가용성 수준 결정
- Always On 가용성 그룹, 장애 조치 클러스터 등 적절한 솔루션 선택
- 백업 및 복구 전략 수립
- 비즈니스 요구사항에 맞는 가용성 수준 결정
- Azure VM에서의 SQL Server 배포 이점
- 기존 온프레미스 환경의 손쉬운 클라우드 마이그레이션
- 최소한의 아키텍처 변경으로 신속한 전환 가능
- 기존 라이선스 및 구성의 재사용 가능
- 기존 온프레미스 환경의 손쉬운 클라우드 마이그레이션
- 성공적인 마이그레이션을 위한 핵심 요소
- 상세한 마이그레이션 계획 수립
- 적절한 배포 옵션 선택
- 철저한 테스트 및 검증 절차
- 상세한 마이그레이션 계획 수립
자유도의 차이: IaaS(자유도가 높음) vs PaaS(자유도가 중간) vs SaaS(자유도가 낮음)
- Software as a Service (SaaS)
- 관리 수준: 완전 관리형으로 모든 것이 서비스 제공업체에 의해 관리됨
- 유지보수: 서비스 제공업체가 모든 유지보수 담당
- 확장성: 자동 확장, 사용자는 구독 수준만 선택
- 비용: 구독 기반 과금, 사용량에 따른 요금제
- 유연성: 매우 제한적, 제공되는 기능만 사용 가능
- 적합 사례: 표준화된 소프트웨어 필요 시 (예: Office 365, Salesforce)
- 관리 수준: 완전 관리형으로 모든 것이 서비스 제공업체에 의해 관리됨
- Azure SQL Database (PaaS)
- 관리 수준: 완전 관리형 서비스로 Microsoft가 OS, 하드웨어, 백업, 고가용성 등을 관리
- 유지보수: 자동 패치 및 업그레이드
- 확장성: 자동 확장 기능 지원
- 비용: 사용한 리소스에 따라 비용 지불, 일반적으로 관리 오버헤드가 적음
- 제한사항: 일부 고급 SQL Server 기능 사용 불가(CLR, SQL Agent 등)
- 적합 사례: 새 애플리케이션 개발, 관리 오버헤드 최소화가 필요한 경우
- 관리 수준: 완전 관리형 서비스로 Microsoft가 OS, 하드웨어, 백업, 고가용성 등을 관리
- IaaS SQL Server (Azure VM)
- 관리 수준: 셀프 관리형으로 사용자가 OS, 소프트웨어 업데이트, 백업 등 직접 관리
- 유지보수: 수동 패치 및 업그레이드
- 확장성: 수동 확장, VM 크기 변경 필요
- 비용: VM 인프라에 대한 비용 지불, 관리 오버헤드가 더 많음
- 유연성: 모든 SQL Server 기능 사용 가능(SSAS, SSIS, SSRS 등)
- 적합 사례: 기존 온프레미스 SQL Server 마이그레이션, 특정 버전/기능 필요 시
- 관리 수준: 셀프 관리형으로 사용자가 OS, 소프트웨어 업데이트, 백업 등 직접 관리
- 주요 차이점
- 제어 수준: IaaS는 더 많은 제어를 제공하지만 더 많은 관리 책임이 따름
- 호환성: IaaS는 온프레미스 SQL Server와 100% 호환, PaaS는 일부 제한
- 운영 비용: PaaS는 일반적으로 운영 비용이 더 낮음
- 제어 수준: IaaS는 더 많은 제어를 제공하지만 더 많은 관리 책임이 따름
1.2 Azure에서 SQL Server를 배포하기 위한 IaaS 옵션 설명
Azure VM에서 SQL Server를 실행해야 하는 주요 시나리오들:
- 이전 버전의 SQL Server가 필요한 경우
- 일부 애플리케이션은 특정 이전 버전의 SQL Server에서만 작동
- 공급업체가 지원하는 특정 SQL Server 버전을 사용해야 하는 경우
- 이런 경우 VM에 원하는 버전을 직접 설치하여 실행하는 것이 가장 좋은 방법
- 여러 SQL Server 서비스를 함께 사용해야 하는 경우
- SQL Server 데이터베이스 엔진과 함께 Analysis Services(분석 서비스)나
Integration Services(통합 서비스), Reporting Services(보고 서비스)를
같이 사용해야 할 때
- 이들을 한 VM에서 함께 실행하면 라이선스 비용을 절약할 수 있음
- Azure에서 일부 서비스는 PaaS로 제공되지만, 비용 효율성을 위해
VM에서 함께 실행하는 것이 유리할 수 있음
- 애플리케이션 호환성 문제가 있는 경우
- 일부 애플리케이션은 여러 데이터베이스 간의 쿼리(교차 데이터베이스 쿼리)가 필요
- Azure SQL Database는 이를 지원하지 않아 VM 사용이 필요
- 데이터베이스와 다른 서비스들이 특별한 방식으로 함께 동작해야 하는 경우
- 이전 버전의 SQL Server가 필요한 경우
IaaS(Infrastructure as a Service)의 장점과 특징:
- 관리자의 세밀한 시스템 제어
- Azure가 서버 하드웨어와 네트워크를 관리하지만, 관리자는 다음을 직접 제어 가능:
- 가상 스토리지 설정
- 가상 네트워크 구성
- SQL Server 설치 및 설정
- 추가 소프트웨어 설치
- 가상 스토리지 설정
- Azure가 서버 하드웨어와 네트워크를 관리하지만, 관리자는 다음을 직접 제어 가능:
- 인프라 구성의 높은 자유도
- OS 레벨부터 완전한 제어 가능
- 커스텀 설정 및 튜닝의 자유로움
- OS 레벨부터 완전한 제어 가능
- 세부적인 구성 계획의 중요성
- 성능 요구사항에 맞는 리소스 할당
- 확장성을 고려한 아키텍처 설계
- 비용 효율적인 리소스 사용 계획
- 성능 요구사항에 맞는 리소스 할당
- 관리자의 세밀한 시스템 제어
Azure 서비스 Control Granularity(제어 정밀도) 비교
- IaaS, PaaS, SaaS의 제어 수준 차이
- IaaS: 가장 높은 제어 수준 제공
- PaaS: 중간 수준의 제어 제공
- SaaS: 가장 제한된 제어 수준
- IaaS: 가장 높은 제어 수준 제공
- 각 서비스 별 관리 책임
- SaaS: 사용자는 보안과 데이터 관리만 담당
- PaaS: 클라우드 제공업체가 OS와 기본 소프트웨어 관리
- IaaS: 사용자가 OS 패치, 네트워크, 스토리지 구성 등 대부분 관리
- SaaS: 사용자는 보안과 데이터 관리만 담당
- Azure IaaS에서의 책임 분담
- Microsoft 담당:
- 물리적 서버
- 스토리지
- 물리적 네트워킹
- 물리적 서버
- 사용자 담당:
- OS 관리
- SQL Server 인스턴스 구성
- 추가 소프트웨어 설치/관리
- OS 관리
- Microsoft 담당:
- IaaS가 필요한 특수 상황
- 특정 SQL Server/Windows 버전 조합이 필요한 경우
- SQL Server와 함께 추가 소프트웨어 설치가 필요한 경우
- CLR, 복제 등 특수 기능 사용이 필요한 경우
- 기존 Active Directory 인증이 필요한 경우
- OS 직접 접근이 필요한 애플리케이션 운영 시
- 특정 SQL Server/Windows 버전 조합이 필요한 경우
- IaaS의 장점
- 높은 유연성과 제어 가능성
- 기존 온프레미스 환경과 유사한 구성 가능
- 클라우드의 이점과 기존 기능의 동시 활용
- 특수한 요구사항 수용 가능
- 높은 유연성과 제어 가능성
SQL Server IaaS Agent Extension(SQL Server IaaS 에이전트 확장)
- Azure Marketplace에서 SQL Server VM을 배포할 때, 프로세스의 일부로 IaaS Agent Extension이 설치된다.
- 확장(Extension)은 VM 배포 후 실행되는 코드로, 일반적으로 배포 후 구성을 수행한다.
- 예를 들어 백신 소프트웨어 설치나 Windows 기능 활성화 등이 있다.
- SQL Server IaaS Agent Extension은 관리 부담을 줄일 수 있는 다음과 같은 주요 기능을 제공한다:
- 자동 백업
- 자동 패치 적용
- Azure Key Vault 통합
- Microsoft Defender for Cloud 통합
- 포털에서 디스크 사용량 확인
- 유연한 라이선싱
- 유연한 버전/에디션 선택
- SQL 모범 사례 평가
- 자동 백업
이러한 기능 외에도, 이 확장을 통해 SQL Server의 구성 및 스토리지 사용량 정보를 확인할 수 있다.
SQL Server 라이선싱 모델
- Azure VM에서 SQL Server 라이선스 사용 방법은 크게 두 가지
- 종량제(Pay as you Go) 방식
- Azure Marketplace에서 SQL Server가 설치된 VM 이미지 사용
- 사용한 시간만큼 VM 비용 + SQL Server 라이선스 비용 지불
- Azure Marketplace에서 SQL Server가 설치된 VM 이미지 사용
- 기존 라이선스 사용(BYOL) 방식
- Software Assurance(SA) 프로그램 참여 고객만 가능
- 기존 보유한 SQL Server 라이선스를 Azure VM에 적용
- VM 구현 후 10일 이내에 Microsoft에 라이선스 사용 보고 필요
- SQL Server를 직접 설치하거나 커스텀 이미지 업로드 가능
- Software Assurance(SA) 프로그램 참여 고객만 가능
비용 절감을 위한 추가 옵션:
- Windows Server 라이선스도 기존 것 사용 가능 (Azure Hybrid Benefit)
- VM을 1-3년 예약 구매 시 추가 할인
- 선불 결제 없이 월별 청구 가능
- 장기 사용 예정인 대형 VM에 특히 유리
Azure VM 제품군 종류
Azure VM은 다양한 제품군(시리즈)을 제공하며, 각각 특정 용도에 최적화되어 있다.
- 범용(General Purpose)
- CPU와 메모리의 균형잡힌 구성
- 테스트/개발 환경, 소/중규모 DB 서버, 중소 트래픽 웹서버에 적합
- CPU와 메모리의 균형잡힌 구성
- 컴퓨팅 최적화(Compute Optimized)
- 높은 CPU 대 메모리 비율
- 중규모 웹서버, 네트워크 어플라이언스, 배치 처리에 적합
- 기본적인 머신러닝 워크로드 지원
- 높은 CPU 대 메모리 비율
- 메모리 최적화(Memory Optimized)
- 높은 메모리 대 CPU 비율 (최대 4TB RAM)
- 대부분의 데이터베이스 워크로드에 적합
- 높은 메모리 대 CPU 비율 (최대 4TB RAM)
- 스토리지 최적화(Storage Optimized)
- 고속 로컬 NVMe 임시 스토리지 제공
- Cassandra 등 스케일아웃 데이터 워크로드에 적합
- SQL Server 사용 시 Always On 가용성 그룹 등 데이터 보호 구성 필요
- 고속 로컬 NVMe 임시 스토리지 제공
- GPU 최적화
- 비디오 렌더링/처리
- GPU 기반 대규모 병렬 머신러닝 워크로드에 적합
- 비디오 렌더링/처리
- FPGA 가속
- 컴퓨팅 집약적 워크로드용
- 높은 스토리지 처리량과 네트워크 대역폭 제공
- 컴퓨팅 집약적 워크로드용
- 고성능 컴퓨팅(HPC)
- 수천 개 CPU 코어로 수평 확장 가능
- RDMA 네트워킹을 통한 낮은 지연시간 제공
- 수천 개 CPU 코어로 수평 확장 가능
- VM 크기 선택 방법
- Azure 포털의 VM 생성 블레이드에서 ‘모든 크기 보기’ 선택
- 각 크기별 상세 정보 확인 가능:
- vCPU 수
- RAM 용량
- 데이터 디스크 수
- 최대 IOPS
- 임시 스토리지 용량
- 프리미엄 스토리지 지원 여부
- vCPU 수
- Azure 포털의 VM 생성 블레이드에서 ‘모든 크기 보기’ 선택
Azure Marketplace
Azure Marketplace는 Azure에서 제공하는 리소스 스토어로, 미리 만들어진 템플릿을 사용해 쉽게 리소스를 생성할 수 있다.
- 주요 특징:
- 간단한 설정: 기본 정보만 입력하면 빠르게 리소스 생성 가능
- 빠른 구축: 몇 분 안에 리소스 사용 가능
- 다양한 옵션: SQL Server, Windows Server 등 다양한 제품 제공
- 사전 구성: OLTP, Data Warehouse 등 용도에 맞는 설정 제공
- 간단한 설정: 기본 정보만 입력하면 빠르게 리소스 생성 가능
- 장점
- 쉽고 빠른 시작 가능
- 직관적인 인터페이스
- 상세 설정 없이도 사용 가능
- 쉽고 빠른 시작 가능
- 단점
- 반복 작업이 어려움
- 자동화하기 불편함
- 반복 작업이 어려움
SQL Server configuration
Azure VM에서 SQL Server를 설치할 때 다음과 같은 기본적인 설정들을 할 수 있다:
- 보안 설정: 방화벽 규칙, 접근 권한 등을 설정
- 네트워크 설정: 가상 네트워크, 서브넷 등을 구성
- SQL 인증: 사용자 계정과 비밀번호 설정
- SQL 인스턴스: 데이터베이스 엔진 설정
1.3 Understand hybrid scenarios
- 하이브리드 인프라의 필요성
- 온프레미스/로컬 데이터센터의 SQL Server 인프라 투자 활용 가능
- 클라우드와 온프레미스의 장점을 모두 활용 가능
- 운영 복원력 향상과 비용 절감 효과
- 온프레미스/로컬 데이터센터의 SQL Server 인프라 투자 활용 가능
- 하이브리드 인프라의 장점
- 클라우드 전환에 신중한 조직을 위한 좋은 시작점
- 물리적/가상화된 SQL Server 온프레미스 배포를 클라우드로 확장 가능
- 온프레미스와 클라우드 서비스의 상호 보완적 운영
- IaaS 서비스(스토리지, SQL Server VM 등) 활용 가능
- 클라우드 전환에 신중한 조직을 위한 좋은 시작점
- 하이브리드 구현 범위
- 온프레미스와 클라우드 간 하이브리드
- 여러 클라우드 서비스 간 하이브리드 구현 가능
- 다양한 SQL Server 하이브리드 시나리오 적용 가능
- 온프레미스와 클라우드 간 하이브리드
SQL Server를 위한 하이브리드 시나리오
SQL Server를 위한 하이브리드 솔루션을 배포할 때 고려할 수 있는 몇 가지 전략
재해 복구
재해 복구는 SQL Server를 하이브리드로 운영할 때 가장 많이 사용되는 방식
- 주요 특징
- 재난 상황에서도 비즈니스 연속성 보장
- 여러 데이터 센터에 분산 배치 가능
- Azure VM을 활용해 비용 효율적인 DR 구축
- 재난 상황에서도 비즈니스 연속성 보장
- 운영 방식
- 일상적인 처리는 온프레미스 서버 사용
- 재해 발생 시 Azure로 전환(장애 조치)
- 여러 지역에 걸쳐 백업 가능
- 일상적인 처리는 온프레미스 서버 사용
SQL Server 백업
SQL Server의 데이터를 안전하게 보관하기 위한 백업 전략
- 백업 방식
- Azure Storage에 직접 백업 (URL 사용)
- Azure 파일 공유 활용 (SMB 프로토콜)
- Azure Storage에 직접 백업 (URL 사용)
- 주요 이점
- 현장 백업 실패 시에도 데이터 보호
- Azure VM에서 백업 데이터 복원 테스트 가능
- 클라우드의 안정적인 스토리지 활용
- 현장 백업 실패 시에도 데이터 보호
Azure Arc 지원 SQL Server
여러 환경의 SQL Server를 Azure에서 통합 관리할 수 있게 해주는 서비스
- 지원 환경
- 온프레미스
- 데이터 센터
- 엣지 환경
- 멀티클라우드
- 온프레미스
- 주요 기능
- 모든 SQL Server 배포 현황 파악
- 구성/사용 패턴/보안 평가
- 실시간 보안 경고
- 취약점 보고
- 모든 SQL Server 배포 현황 파악
보안 고려사항
하이브리드 SQL 환경을 안전하게 운영하기 위한 보안 요소
- 기본 요구사항
- Active Directory와 DNS 설정 (온프레미스/Azure 모두)
- 안전한 양방향 통신 구축
- Active Directory와 DNS 설정 (온프레미스/Azure 모두)
- 연결 방식
- 사이트 간(S2S) VPN
- ExpressRoute
- 사이트 간(S2S) VPN
- ExpressRoute 특징
- 장점
- 최고 수준의 보안
- 최소 지연 시간
- 공용 인터넷과 분리된 전용 채널
- 최고 수준의 보안
- 단점
- 높은 비용
- 멀티클라우드 환경에서 제한적 사용
- 높은 비용
- 장점
1.4 Explore performance and security
- Azure 에코시스템은 Azure 가상 머신의 SQL Server 인스턴스에 대한 다양한 성능 및 보안 옵션을 제공한다
- 각 옵션은 워크로드의 용량 및 성능 요구사항을 충족하는 다양한 디스크 유형과 같은 기능을 제공한다.
스토리지 고려사항
- SQL Server는 Azure VM이나 온프레미스 환경에서 모두 고성능을 위해 우수한 스토리지 성능이 필수적
- Azure는 다양한 스토리지 솔루션을 제공하는데, SQL Server 워크로드는 주로 Azure 관리 디스크를 사용
- Azure 관리 디스크는 VM에 제공되는 블록 수준 스토리지로, 높은 가용성과 확장성을 제공
Azure 관리 디스크의 주요 특징:
- 스토리지 유형
- Blob, 파일, 큐, 테이블 등 다양한 유형 제공
- SQL Server는 주로 관리 디스크 사용
- 장애 조치 클러스터는 파일 스토리지 사용 가능
- 백업은 blob 스토리지 활용
- Blob, 파일, 큐, 테이블 등 다양한 유형 제공
- 관리 디스크의 장점
- 99.999%의 높은 가용성
- 지역당 구독당 최대 50,000개 VM 디스크 지원
- 가용성 집합/영역과의 통합으로 높은 복원력
- 99.999%의 높은 가용성
- 암호화 옵션
- Azure 서버 측 암호화: 스토리지 서비스 레벨의 암호화
- Azure 디스크 암호화: VM 내부의 OS/데이터 디스크 암호화
- 두 옵션 모두 Azure Key Vault 통합 지원
- Azure 서버 측 암호화: 스토리지 서비스 레벨의 암호화
VM에 연결되는 디스크 유형:
- 운영 체제 디스크
- 부팅 볼륨 포함
- Windows: C: 드라이브
- Linux: /dev/sda1
- 부팅 볼륨 포함
- 임시 디스크
- 임시 스토리지용
- 페이지/스왑 파일 등 비영구 데이터 저장
- Windows: D: 드라이브
- Linux: /dev/sdb1
- 중요 데이터 저장 금지
- 임시 스토리지용
- 데이터 디스크
- VM에 추가되는 관리 디스크
- Windows: Storage Spaces로 풀링 가능
- Linux: 논리 볼륨 관리로 풀링 가능
- IOPS와 스토리지 용량 확장 가능
- VM에 추가되는 관리 디스크
| Feature | Ultra Disk | Premium SSD v2 | Premium SSD | Standard SSD | Standard HDD |
|---|---|---|---|---|---|
| Disk type | SSD | SSD | SSD | SSD | HDD |
| Best for | IO-intensive workloads | Performance-sensitive workloads | Performance-sensitive workloads | Lightweight workloads | Backups, non-critical workloads |
| Max disk size | 65,536 GiB | 64,000 GiB | 32,767 GiB | 32,767 GiB | 32,767 GiB |
| Max throughput | 10,000 MB/s | 1,200 MB/s | 900 MB/s | 750 MB/s | 500 MB/s |
| Max IOPS | 160,000 | 80,000 | 20,000 | 6,000 | 2,000 |
Azure SQL Server의 스토리지 구성에 대한 모범 사례를 살펴보면, 성능 최적화를 위해 여러 디스크를 적절히 구성하는 것이 중요. 특히 IOPS와 스토리지 용량을 효과적으로 관리하기 위해서는 프리미엄 디스크를 풀링하여 사용하는 것이 권장됨
각 데이터 유형별 스토리지 구성 권장사항:
- 데이터 파일
- 프리미엄 디스크의 자체 풀에 저장
- 읽기 캐싱 기능 활성화
- 높은 IOPS와 처리량 확보
- 프리미엄 디스크의 자체 풀에 저장
- 트랜잭션 로그 파일
- 별도의 디스크 풀에 저장
- 캐싱 기능 비활성화 (캐싱의 이점 없음)
- 안정적인 쓰기 성능 보장
- 별도의 디스크 풀에 저장
- TempDB
- 두 가지 옵션 중 선택:
- 자체 디스크 풀에 저장
- VM의 임시 디스크 활용 (물리 서버와 직접 연결되어 낮은 지연시간 제공)
- 자체 디스크 풀에 저장
- 두 가지 옵션 중 선택:
성능 요구사항에 따른 디스크 선택:
- 일반적인 워크로드: 프리미엄 SSD (밀리초 단위의 지연시간)
- 미션 크리티컬 워크로드: Ultra SSD (더 낮은 지연시간 필요시)
보안 고려사항
Azure는 가상 머신에서 실행되는 SQL Server의 규정 준수 솔루션을 위해 다양한 보안 도구와 기능을 제공합니다.
주요 보안 도구:
- SQL용 Microsoft Defender
- 취약성 평가 및 보안 경고 기능 제공
- SQL Server 인스턴스와 데이터베이스의 잠재적 취약점 식별
- 보안 위험 감지 및 해결 방안 제시
- 보안 상태 모니터링 및 개선을 위한 실행 가능한 단계 제공
- 취약성 평가 및 보안 경고 기능 제공
- Azure Security Center
- 통합 보안 관리 시스템
- 하이브리드 클라우드 워크로드 전반의 보안 상태 모니터링
- 공격 노출 감소 및 위협 대응 기능
- 보안 개선 기회 식별 및 제안
- 통합 보안 관리 시스템
성능 최적화 방안
Azure VM의 SQL Server는 온프레미스 환경과 유사한 성능 최적화 기능을 제공합니다.
주요 성능 최적화 기능:
- 테이블 파티셔닝
- 대규모 테이블의 효율적 관리
- 쿼리 성능 향상
- 유지보수 작업 효율화
- 파일 그룹 생성
- 파티션 함수 정의
- 파티션 스키마 생성
- 테이블 파티션 설정
- 대규모 테이블의 효율적 관리
- 데이터 압축
압축 유형:- 행 압축
- 기본적인 압축 방식
- 최소 저장 공간 사용
- 낮은 시스템 부하
- 기본적인 압축 방식
- 페이지 압축
- 행 압축 포함
- 접두사 압축과 사전 압축 기술 적용
- 높은 압축률 제공
- 행 압축 포함
- 컬럼스토어 아카이브 압축
- XPRESS 압축 알고리즘 사용
- 자주 접근하지 않는 보관 데이터에 적합
- 높은 CPU 사용률
- XPRESS 압축 알고리즘 사용
- 행 압축
- 추가 최적화 옵션
- 백업 압축 기능 활성화
- 즉각적인 파일 초기화 설정
- 데이터베이스 자동 증가 제한 설정
- 자동 축소/자동 닫기 기능 비활성화
- 시스템 데이터베이스 데이터 디스크 이전
- 로그 및 추적 파일 데이터 디스크 이전
- 백업 압축 기능 활성화
-- Partition function
CREATE PARTITION FUNCTION PartitionByMonth (datetime2)
AS RANGE RIGHT
-- The boundary values defined is the first day of each month, where the table will be partitioned into 13 partitions
FOR VALUES ('20210101', '20210201', '20210301',
'20210401', '20210501', '20210601', '20210701',
'20210801', '20210901', '20211001', '20211101',
'20211201');
-- The partition scheme below will use the partition function created above, and assign each partition to a specific filegroup.
CREATE PARTITION SCHEME PartitionByMonthSch
AS PARTITION PartitionByMonth
TO (FILEGROUP1, FILEGROUP2, FILEGROUP3, FILEGROUP4,
FILEGROUP5, FILEGROUP6, FILEGROUP7, FILEGROUP8,
FILEGROUP9, FILEGROUP10, FILEGROUP11, FILEGROUP12);
-- Creates a partitioned table called Order that applies PartitionByMonthSch partition scheme to partition the OrderDate column
CREATE TABLE Order ([Id] int PRIMARY KEY, OrderDate datetime2)
ON PartitionByMonthSch (OrderDate) ;
GO
데이터 압축
SQL Server의 데이터 압축은 데이터베이스의 성능과 저장 공간을 최적화하는 중요한 기능입니다.
데이터 압축의 기본 구조:
- SQL Server는 8KB 크기의 페이지 단위로 데이터를 저장
- 압축을 통해 한 페이지에 더 많은 데이터를 저장 가능
데이터 압축의 주요 효과:
1. 물리적 IO 감소
- 쿼리 실행 시 읽어야 할 페이지 수가 줄어듦
- 디스크 읽기/쓰기 작업이 감소
- 메모리 사용 효율성 향상
- 버퍼 풀의 메모리를 더 효율적으로 사용
- 동일한 메모리로 더 많은 데이터 처리 가능
- 버퍼 풀의 메모리를 더 효율적으로 사용
데이터 압축의 주요 특징과 장단점은 다음과 같습니다:
주요 이점
- 물리적 IO 감소
- 버퍼 풀의 효율적인 메모리 사용
- 저장 공간 절약
- 대부분의 경우 전반적인 성능 향상
- 물리적 IO 감소
잠재적 단점
- CPU 사용량 증가
- 압축/해제 과정에서의 추가 처리 시간
- CPU 사용량 증가
구현 특성
- 개체 수준에서 구현 가능
- 개별 인덱스나 테이블 단위로 압축 가능
- 파티션 단위로도 압축 설정 가능
- sp_estimate_data_compression_savings 프로시저로 압축 효과 예측 가능
- 개체 수준에서 구현 가능
압축 유형별 특징
행 압축:
- 기본적인 압축 방식으로 최소한의 시스템 부하
- 각 열의 값을 최소 필요 공간으로 저장
- 숫자 데이터는 가변 길이로 저장
- 고정 길이 문자열을 가변 길이로 변환
페이지 압축:
- 행 압축을 포함한 고급 압축 방식
- 접두사 압축으로 중복 데이터 제거
- 사전 압축으로 반복 값을 포인터로 대체
- 데이터 중복성이 높을수록 압축률 증가
컬럼스토어 아카이브 압축:
- XPRESS 압축 알고리즘 사용
- 자주 접근하지 않는 보관용 데이터에 적합
- 높은 압축률 제공
- CPU 사용량이 상대적으로 높음
- 기본적인 압축 방식으로 최소한의 시스템 부하
추가 옵션
다음은 프로덕션 워크로드에 대해 고려해야 할 추가 SQL Server 기능 및 작업 목록:
- 백업 압축 활성화
- 데이터 파일에 대한 즉각적인 파일 초기화 활성화
- 데이터베이스 자동 증가 제한
- 데이터베이스에 대한 자동 축소/자동 닫기 비활성화
- 시스템 데이터베이스를 포함한 모든 데이터베이스를 데이터 디스크로 이동
- SQL Server 오류 로그 및 추적 파일 디렉터리를 데이터 디스크로 이동
- 최대 SQL Server 메모리 제한 설정
- 메모리의 페이지 잠금 활성화
- OLTP 중심 환경을 위한 임시 워크로드 최적화 활성화
- 쿼리 스토어 활성화
- DBCC CHECKDB, 인덱스 재구성, 인덱스 재구축 및 통계 업데이트 작업을 실행하도록 SQL Server Agent 작업 예약
- 트랜잭션 로그 파일의 상태 및 크기 모니터링 및 관리
2 Explain high availability and disaster recovery options
Azure 플랫폼의 고가용성 옵션:
- 기본 제공 고가용성
- VM과 PaaS 워크로드에 기본적으로 제공
- 추가 고가용성 옵션
- 가용성 영역(Availability Zones)
- 가용성 집합(Availability Sets)
- 가용성 영역(Availability Zones)
- 주요 보호 기능
- 계획된 유지보수 활동으로부터 보호
- 잠재적인 하드웨어 장애로부터 보호
- 더 높은 수준의 가용성 제공
- 계획된 유지보수 활동으로부터 보호
2.1 High availability options
SQL Server 고가용성 솔루션의 Azure VM 지원:
- Azure 전용 솔루션
- 전체 HADR 시스템이 Azure에서 실행
- 완전한 클라우드 기반 운영 가능
- 전체 HADR 시스템이 Azure에서 실행
- 하이브리드 구성
- 일부는 Azure에서 실행
- 일부는 온프레미스에서 실행
- 유연한 구성 가능
- 일부는 Azure에서 실행
- Azure 환경의 장점
- 예산에 맞춘 단계적 마이그레이션 가능
- HADR 요구사항에 따른 유연한 구성
- 부분 또는 완전 마이그레이션 선택 가능
- 예산에 맞춘 단계적 마이그레이션 가능
Availability Zones
가용성 영역 개요
- 한 지역 내의 고유한 물리적 위치
- 각 영역은 독립적인 전원, 냉각, 네트워킹을 갖춘 데이터센터로 구성
- 지원되는 Azure 지역마다 3개의 가용성 영역 제공
가용성 영역 특징
- VM 생성 시 배치할 영역 지정 가능
- 여러 VM을 다른 영역에 분산 배포하여 데이터센터 장애 대비
- Microsoft는 한 번에 하나의 영역만 업데이트 (업데이트 도메인 사용)
- VM 에코시스템을 3개 영역에 분산 가능
가용성 영역 장점
- 가동 시간 99.99% 보장 (연간 최대 52.60분 다운타임)
- 애플리케이션에 가장 높은 수준의 가용성 제공
- docs.microsoft.com에서 지원 지역 확인 가능
가용성 영역 배포
- Zone 1, 2, 3 중 선택하여 배포 가능
- 물리적 데이터센터의 논리적 표현
- 구독별로 Zone 번호가 다른 데이터센터를 나타낼 수 있음
사용 조건
- 해당 지역에서 가용성 영역 지원 필요
- 애플리케이션이 최소한의 영역 간 지연 시간 지원 필요
Availability Sets
가용성 집합 개요
- 가용성 영역과의 차이점
- 가용성 영역: 지역의 데이터 센터에 워크로드 분산
- 가용성 집합: 데이터 센터 내의 서버와 랙에 워크로드 분산
- 가용성 영역: 지역의 데이터 센터에 워크로드 분산
주요 특징
- VM 분산 배치 보장
- Always On 가용성 그룹 멤버 VM들이 서로 다른 물리적 호스트에서 실행되도록 보장
- Azure의 대부분 워크로드가 가상화되어 있어 효과적
- Always On 가용성 그룹 멤버 VM들이 서로 다른 물리적 호스트에서 실행되도록 보장
성능 및 사용 조건
- 가용성 보장
- 최대 99.95%의 가용성 제공
- 최대 99.95%의 가용성 제공
- 사용 시나리오
- 가용성 영역을 사용할 수 없는 지역
- 애플리케이션이 영역 내 지연 시간을 허용할 수 없는 경우
- 가용성 영역을 사용할 수 없는 지역
Always On availability groups (AG)
- 구현 범위
- Azure 가상 머신에서 실행되는 두 개 이상(최대 9개)의 SQL Server 인스턴스 간
- 온프레미스 데이터 센터와 Azure 간 구현 가능
- Azure 가상 머신에서 실행되는 두 개 이상(최대 9개)의 SQL Server 인스턴스 간
- 작동 방식
- 데이터베이스 트랜잭션이 기본 복제본에 커밋
- 동기식 또는 비동기식으로 모든 보조 복제본으로 전송
- 데이터베이스 트랜잭션이 기본 복제본에 커밋
- 가용성 모드 선택 기준
- 서버 간 물리적 거리에 따라 결정
- 비동기식 가용성 모드 권장 상황:
- 워크로드가 낮은 지연 시간 요구
- 보조 복제본이 지리적으로 분산된 경우
- 워크로드가 낮은 지연 시간 요구
- 동기식 커밋 모드 권장 상황:
- 복제본이 동일한 Azure 지역 내 위치
- 애플리케이션이 일정 수준의 지연 시간 허용 가능
- 복제본이 동일한 Azure 지역 내 위치
- 서버 간 물리적 거리에 따라 결정
- 동기식 모드 특징
- 각 트랜잭션이 하나 이상의 보조 복제본에 커밋된 후 애플리케이션 진행
- 장점
- 단일 가용성 그룹이 동기식과 비동기식 가용성 모드 모두 지원
- 고가용성과 재해 복구 동시 제공
- 장애 조치 단위는 데이터베이스 그룹(전체 인스턴스가 아님)
- 단일 가용성 그룹이 동기식과 비동기식 가용성 모드 모두 지원
- 재해 복구 기능
- Azure 지역 전체에 걸쳐 최대 9개의 데이터베이스 복제본 구현 가능
- 분산 가용성 그룹을 통한 아키텍처 확장 가능
- 기본 지역 외 다른 위치에 데이터베이스 실행 가능한 복사본 보장
- 자연 재해와 인위적 재해로부터 데이터 생태계 보호
- Azure 지역 전체에 걸쳐 최대 9개의 데이터베이스 복제본 구현 가능
- 구성 예시
- Windows Server 장애 조치 클러스터에서 실행
- 하나의 기본 복제본과 4개의 보조 복제본 구성 가능
- 모든 복제본이 동기식이거나, 동기식과 비동기식 복제본 조합 가능
- 장애 조치 단위는 데이터베이스 그룹(인스턴스가 아님)
- 장애 조치 클러스터 인스턴스는 인스턴스 수준 HA 제공(재해 복구는 제공하지 않음)
- Windows Server 장애 조치 클러스터에서 실행
SQL Server Failover Cluster instances
- SQL Server 장애 조치 클러스터 인스턴스(FCI) 개요
- 전체 인스턴스 보호를 위한 솔루션
- 단일 지역에서 전체 인스턴스에 대한 고가용성 제공
- 단독으로는 재해 복구 기능 제공하지 않음
- 가용성 그룹이나 로그 전달과 같은 기능과 결합 필요
- 가용성 그룹이나 로그 전달과 같은 기능과 결합 필요
- 공유 스토리지 요구사항 존재
- Azure에서 공유 파일 스토리지 사용 가능
- Windows Server의 Storage Spaces Direct 활용 가능
- Azure에서 공유 파일 스토리지 사용 가능
- 전체 인스턴스 보호를 위한 솔루션
- Azure 환경에서의 FCI 고려사항
- 새로운 배포에서는 가용성 그룹이 선호됨
- FCI의 공유 스토리지 요구사항이 배포 복잡성 증가
- FCI의 공유 스토리지 요구사항이 배포 복잡성 증가
- 온프레미스 솔루션 마이그레이션 시 FCI 필요 가능성
- 기존 애플리케이션 지원을 위한 요구사항 고려
- 새로운 배포에서는 가용성 그룹이 선호됨
Disaster Recovery options
- Azure 플랫폼 기본 특성
- 기본적으로 99.9%의 가동 시간 제공
- 재해 발생 가능성 여전히 존재
- 애플리케이션 가동 시간에 영향을 미칠 수 있음
- 기본적으로 99.9%의 가동 시간 제공
- 재해 복구 계획의 중요성
- 마이그레이션 수행 시 적절한 계획 수립 필요
- 데이터 및 서비스 연속성 보장
- 마이그레이션 수행 시 적절한 계획 수립 필요
- Azure의 SQL Server 보호 방법 (두 가지 구성 요소)
- Azure 플랫폼 옵션
- 지역 복제 스토리지 (백업용)
- Azure Site Recovery (포괄적인 재해 복구 솔루션)
- 지역 복제 스토리지 (백업용)
- SQL Server 전용 기능
- 가용성 그룹(Availability Groups)
- 네이티브 백업 기능
- 가용성 그룹(Availability Groups)
- Azure 플랫폼 옵션
Native SQL Server backups
- 백업의 중요성
- 모든 데이터베이스 관리자에게 있어 생명줄과 같은 역할
- 클라우드 솔루션에서도 동일하게 중요
- 모든 데이터베이스 관리자에게 있어 생명줄과 같은 역할
- Azure VM의 SQL Server 백업 특징
- 백업 시기와 저장 위치에 대한 세밀한 제어 가능
- SQL 에이전트 작업을 통한 Azure blob 스토리지 직접 백업 지원
- URL을 통한 백업 연결 방식 제공
- 백업 시기와 저장 위치에 대한 세밀한 제어 가능
- Azure 스토리지 옵션
- 지역 중복 스토리지(GRS) 제공
- 읽기 액세스 지역 중복 스토리지(RA-GRS) 제공
- 지리적으로 분산된 환경에서 백업 파일 안전 보장
- 지역 중복 스토리지(GRS) 제공
- 자동화 옵션
- Azure SQL VM 서비스 제공자를 통한 자동 백업 관리 가능
- 플랫폼 수준의 백업 자동화 지원
- Azure SQL VM 서비스 제공자를 통한 자동 백업 관리 가능
Azure Backup for SQL Server
- 기본 구성 요소
- 가상 머신에 에이전트 설치 필요
- SQL Server 데이터베이스의 자동 백업 관리
- Azure 서비스와 에이전트 간 통신
- 가상 머신에 에이전트 설치 필요
- 주요 기능
- 지정된 RPO/RTO 메트릭 충족 관리
- 백업 모니터링을 위한 중앙 집중식 인터페이스 제공
- 장기 데이터 보존 지원
- 자동화된 백업 관리 기능
- 추가적인 데이터 보호 기능
- 지정된 RPO/RTO 메트릭 충족 관리
- 비용 및 가치
- 직접 백업보다 높은 비용
- SQL Server용 Azure 리소스 공급자보다 비용 증가
- 더 포괄적인 엔터프라이즈 백업 솔루션 제공
- 완벽한 백업 기능 세트 제공
- 직접 백업보다 높은 비용
Azure Site Recovery
- 개요
- Azure 가상 머신의 블록 수준 복제를 수행하는 저비용 솔루션
- 재해 복구 전략을 테스트하고 검증할 수 있는 다양한 기능 제공
- Azure 가상 머신의 블록 수준 복제를 수행하는 저비용 솔루션
- 적합한 사용 환경
- 상태가 없는 환경(예: 웹 서버)에 가장 적합
- 트랜잭션 데이터베이스 가상 머신에는 덜 적합
- 상태가 없는 환경(예: 웹 서버)에 가장 적합
- SQL Server와 함께 사용 시 고려사항
- 더 높은 복구 지점 설정 필요 (잠재적 데이터 손실 의미)
- RTO(복구 시간 목표)가 본질적으로 RPO(복구 지점 목표)가 됨
- 더 높은 복구 지점 설정 필요 (잠재적 데이터 손실 의미)
- 작동 프로세스
- VM이 Azure Site Recovery에 등록
- 데이터가 캐시로 지속적으로 복제
- 캐시가 대상 스토리지 계정으로 복제
- 장애 조치(failover) 중에 가상 머신이 대상 환경에 추가
- VM이 Azure Site Recovery에 등록