TR-4923: Amazon FSx ONTAP을 사용하는 AWS EC2의 SQL Server
이 솔루션은 Amazon FSx ONTAP를 사용하여 AWS EC2에 SQL Server를 구축하는 것을 포함합니다.
저자: Pat Sinth두산, Niyaz Mohamed, NetApp
소개
사내 스토리지 시스템 및 클라우드 스토리지 서비스에서 제공하는 기능 차이로 인해 사내 애플리케이션을 클라우드로 마이그레이션하려는 많은 회사가 이러한 노력에 어려움을 겪고 있습니다. 이러한 격차로 인해 Microsoft SQL Server와 같은 엔터프라이즈 애플리케이션을 마이그레이션하는 데 훨씬 더 많은 문제가 있었습니다. 특히, 강력한 스냅샷, 스토리지 효율성 기능, 고가용성, 안정성, 일관된 성능 등과 같은 엔터프라이즈 애플리케이션을 실행하는 데 필요한 서비스 간의 격차를 좁히기 위해 고객은 설계 트레이드오프나 forgo 애플리케이션 마이그레이션을 수행할 수밖에 없었습니다. FSx ONTAP을 사용하면 고객이 더 이상 타협할 필요가 없습니다. FSx ONTAP은 AWS에서 판매, 지원, 청구 및 완전 관리형 네이티브(1세대) AWS 서비스입니다. NetApp ONTAP의 강력한 기능을 사용하여 NetApp에서 30년 동안 사내에 제공해온 엔터프라이즈급 스토리지 및 데이터 관리 기능을 관리형 서비스로 제공합니다.
데이터베이스 관리자는 EC2 인스턴스에서 SQL Server를 사용하여 데이터베이스 환경과 기본 운영 체제에 액세스하고 사용자 지정할 수 있습니다. 와 함께 EC2 인스턴스의 SQL Server "AWS FSx ONTAP" 데이터베이스 파일을 저장하려면, 블록 레벨 복제를 사용하여 고성능, 데이터 관리 및 간단하고 쉬운 마이그레이션 경로를 설정합니다. 따라서 간단한 인양이동 접근 방식, 클릭 수 감소, 스키마 변환 없이 AWS VPC에서 복잡한 데이터베이스를 실행할 수 있습니다.
Amazon FSx ONTAP를 SQL Server와 함께 사용할 때의 이점
Amazon FSx ONTAP은 AWS의 SQL Server 구축에 이상적인 파일 스토리지입니다. 다음과 같은 이점을 제공합니다.
-
짧은 지연 시간과 일관된 고성능 및 높은 처리량
-
NVMe 캐시를 이용한 지능형 캐싱으로 성능 향상
-
용량, 처리량, IOP를 즉시 늘리거나 줄일 수 있는 유연한 사이징
-
사내-AWS 블록 간 효율적인 복제
-
데이터베이스 환경에서 잘 알려진 프로토콜인 iSCSI를 사용합니다
-
씬 프로비저닝, 설치 공간 제로 클론 복제 등의 스토리지 효율성 기능
-
백업 시간이 몇 시간에서 몇 분으로 단축되어 RTO가 감소합니다
-
직관적인 NetApp SnapCenter UI를 사용하여 SQL 데이터베이스의 세분화된 백업 및 복구
-
실제 마이그레이션 전에 여러 번의 테스트 마이그레이션을 수행할 수 있습니다
-
마이그레이션 중 다운타임 단축 및 파일 레벨 또는 I/O 레벨 사본으로 마이그레이션 문제 해결
-
주요 릴리스 또는 패치 업데이트 후 근본 원인을 찾아 MTTR 감소
iSCSI 프로토콜을 사용하여 FSx ONTAP에 SQL Server 데이터베이스를 배포하면 일반적으로 사내에서 사용되는 것처럼 탁월한 성능, 스토리지 효율성 및 데이터 관리 기능을 갖춘 이상적인 데이터베이스 스토리지 환경을 제공합니다. 작업 세트 크기가 5%라고 가정하여 여러 iSCSI 세션을 사용하는 경우 Flash Cache를 fitting 하면 FSx ONTAP 서비스에 100K IOPS 이상이 제공됩니다. 이 구성을 통해 가장 까다로운 애플리케이션의 성능을 완벽하게 제어할 수 있습니다. FSx ONTAP에 연결된 작은 EC2 인스턴스에서 실행되는 SQL Server는 네트워크 대역폭 제한만 FSx ONTAP에 적용되기 때문에 훨씬 큰 EC2 인스턴스에서 실행되는 SQL Server와 동일한 성능을 수행할 수 있습니다. 또한 인스턴스 크기를 줄이면 컴퓨팅 비용도 절감되므로 TCO에 최적화된 구축이 가능합니다. iSCSI를 사용하는 SQL, SMB3.0과 FSx ONTAP의 멀티채널 지속적인 가용성 공유를 결합하여 SQL 워크로드에 탁월한 이점을 제공합니다.
시작하기 전에
Amazon FSx ONTAP와 EC2 인스턴스의 SQL Server를 결합하여 오늘날 가장 까다로운 애플리케이션 요구사항을 충족할 수 있는 엔터프라이즈급 데이터베이스 스토리지 설계를 생성할 수 있습니다. 두 기술을 모두 최적화하려면 SQL Server I/O 패턴과 특성을 이해하는 것이 중요합니다. SQL Server 데이터베이스를 위해 잘 설계된 스토리지 레이아웃은 SQL Server의 성능과 SQL Server 인프라의 관리를 지원합니다. 또한 우수한 스토리지 레이아웃을 통해 초기 구축을 성공적으로 수행하고 비즈니스 성장에 따라 시간이 지남에 따라 환경을 원활하게 확장할 수 있습니다.
필수 구성 요소
이 문서의 단계를 완료하기 전에 다음과 같은 전제 조건이 충족되어야 합니다.
-
AWS 계정
-
EC2 및 FSx ONTAP 프로비저닝을 위한 적절한 IAM 역할
-
EC2의 Windows Active Directory 도메인
-
모든 SQL Server 노드는 서로 통신할 수 있어야 합니다
-
DNS 확인이 작동하고 호스트 이름을 확인할 수 있는지 확인합니다. 그렇지 않은 경우 호스트 파일 항목을 사용합니다.
-
SQL Server 설치에 대한 일반적인 지식
또한 최적의 스토리지 구성을 보장하기 위해 SQL Server 환경에 대한 NetApp 모범 사례 를 참조하십시오.
EC2의 SQL Server 환경에 대한 모범 사례 구성
FSx ONTAP를 사용하면 스토리지를 조달하는 것이 가장 쉬우므로 파일 시스템을 업데이트하여 수행할 수 있습니다. 이 간단한 프로세스를 통해 필요에 따라 동적인 비용 및 성능 최적화를 수행할 수 있으며, SQL 워크로드의 균형을 유지하는 데 도움이 되며, 씬 프로비저닝을 위한 훌륭한 원동력이기도 합니다. FSX ONTAP 씬 프로비저닝은 SQL Server를 실행하는 EC2 인스턴스에 파일 시스템에서 프로비저닝되는 것보다 더 많은 논리적 스토리지를 제공하도록 설계되었습니다. 공간을 미리 할당하는 대신 데이터가 기록될 때 스토리지 공간이 각 볼륨 또는 LUN에 동적으로 할당됩니다. 대부분의 구성에서는 볼륨 또는 LUN의 데이터가 삭제되고 스냅샷 복사본이 보류되지 않는 경우에도 사용 가능한 공간이 다시 해제됩니다. 다음 표에는 스토리지를 동적으로 할당할 수 있는 구성 설정이 나와 있습니다.
설정 |
구성 |
볼륨 보장 |
없음(기본값으로 설정) |
LUN 예약입니다 |
활성화됨 |
fractional_reserve |
0%(기본값으로 설정) |
snap_reserve |
0% |
자동 삭제 |
Volume/OLDEST_FIRST(볼륨/가장 오래된 |
자동 크기 조정 |
켜짐 |
먼저 시도하십시오 |
자동 확장 |
볼륨 계층화 정책 |
스냅샷만 |
스냅샷 정책 |
없음 |
이 구성에서는 볼륨의 총 크기가 파일 시스템에서 사용 가능한 실제 스토리지보다 클 수 있습니다. LUN 또는 스냅샷 복사본에 볼륨에서 사용 가능한 공간보다 더 많은 공간이 필요한 경우 볼륨은 자동으로 확장되므로 포함된 파일 시스템에서 더 많은 공간을 차지합니다. 자동 확장 기능을 사용하면 FSx ONTAP에서 미리 결정한 최대 크기까지 볼륨 크기를 자동으로 늘릴 수 있습니다. 볼륨의 자동 증가를 지원하려면 포함하는 파일 시스템에 사용 가능한 공간이 있어야 합니다. 따라서 자동 확장 기능이 설정된 경우 포함된 파일 시스템의 사용 가능한 공간을 모니터링하고 필요할 때 파일 시스템을 업데이트해야 합니다.
이와 함께 "공간 할당" 볼륨의 공간이 부족하고 볼륨의 LUN이 쓰기를 수락할 수 없을 때 FSx ONTAP가 EC2 호스트에 알리도록 LUN에 대한 옵션을 enabled로 설정합니다. 또한 이 옵션을 사용하면 EC2 호스트의 SQL Server가 데이터를 삭제할 때 FSx ONTAP이 공간을 자동으로 재확보할 수 있습니다. 공간 할당 옵션은 기본적으로 사용하지 않도록 설정됩니다.
공간 예약 LUN이 NONE-Guaranteed 볼륨에 생성된 경우 LUN은 공간이 예약되지 않은 LUN과 동일하게 작동합니다. 이는 보장된 볼륨 중 어느 것도 LUN에 할당할 공간이 없기 때문입니다. 볼륨 자체는 이 볼륨에 쓸 때만 공간을 할당할 수 있습니다. 이 경우 보장이 없기 때문입니다. |
이 구성을 사용하면 FSx ONTAP 관리자는 일반적으로 호스트 측 및 파일 시스템의 LUN에서 사용된 공간을 관리 및 모니터링해야 하는 볼륨 크기를 조정할 수 있습니다.
SQL Server 워크로드에 별도의 파일 시스템을 사용하는 것이 좋습니다. 파일 시스템이 여러 애플리케이션에 사용되는 경우 파일 시스템 및 파일 시스템 내의 볼륨 모두의 공간 사용량을 모니터링하여 볼륨이 사용 가능한 공간에 대해 경합하지 않는지 확인합니다. |
FlexClone 볼륨을 생성하는 데 사용되는 스냅샷 복사본은 자동 삭제 옵션에 의해 삭제되지 않습니다. |
SQL Server와 같은 미션 크리티컬 애플리케이션에 대해 스토리지 구매의사를 신중하게 고려하고 관리해야 하며, 운영 중단을 최소화해서는 안 됩니다. 이런 경우 스토리지 소비 추세를 모니터링하여 어느 정도의 구매량(있는 경우)을 허용할 수 있는지 확인하는 것이 좋습니다. |
-
모범 사례 *
-
최적의 스토리지 성능을 위해 파일 시스템 용량을 총 데이터베이스 사용 크기의 1.35배로 프로비저닝합니다.
-
애플리케이션 다운타임을 방지하기 위해 씬 프로비저닝을 사용할 때는 효과적인 작업 계획과 함께 적절한 모니터링이 필요합니다.
-
스토리지가 가득 찰 때 사람들이 연락할 수 있는 충분한 시간이 확보되도록 Cloudwatch 및 기타 모니터링 툴 알림을 설정해야 합니다.
-
SQL Server용 스토리지를 구성하고 백업, 복원 및 클론 작업을 위해 SnapCenter를 구축합니다
SnapCenter를 사용하여 SQL Server 작업을 수행하려면 먼저 SQL Server용 볼륨 및 LUN을 생성해야 합니다.
SQL Server용 볼륨 및 LUN을 생성합니다
SQL Server용 볼륨 및 LUN을 생성하려면 다음 단계를 수행하십시오.
-
에서 Amazon FSx 콘솔을 엽니다 https://console.aws.amazon.com/fsx/
-
생성 방법 아래의 표준 생성 옵션을 사용하여 NetApp ONTAP 파일 시스템에 대한 Amazon FSx를 생성합니다. 이를 통해 FSxadmin 및 vsadmin 자격 증명을 정의할 수 있습니다.
-
fsxadmin의 암호를 지정합니다.
-
SVM에 대한 암호를 지정합니다.
-
에 나와 있는 단계에 따라 볼륨을 "FSx ONTAP에서 볼륨 생성" 생성합니다.
-
모범 사례 *
-
스토리지 Snapshot 복사본 일정 및 보존 정책을 사용하지 않도록 설정합니다. 대신 NetApp SnapCenter를 사용하여 SQL Server 데이터 및 로그 볼륨의 스냅샷 복사본을 조정합니다.
-
개별 볼륨의 개별 LUN에서 데이터베이스를 구성하여 빠르고 세분화된 복원 기능을 활용할 수 있습니다.
-
사용자 데이터 파일(.mdf)은 랜덤 읽기/쓰기 워크로드이므로 별도의 볼륨에 배치하십시오. 일반적으로 트랜잭션 로그 백업은 데이터베이스 백업보다 더 자주 생성됩니다. 따라서 트랜잭션 로그 파일(.ldf)을 데이터 파일과 별도의 볼륨에 배치하여 각 볼륨에 대해 독립적인 백업 일정을 생성할 수 있습니다. 또한 이 분리 방식은 로그 파일의 순차적 쓰기 I/O를 데이터 파일의 랜덤 읽기/쓰기 I/O에서 격리하고 SQL Server 성능을 크게 향상시킵니다.
-
tempdb는 Microsoft SQL Server가 임시 작업 공간으로 사용하는 시스템 데이터베이스로, 특히 I/O 집약적인 DBCC CHECKDB 작업에 사용됩니다. 따라서 이 데이터베이스를 전용 볼륨에 배치합니다. 볼륨 수가 문제가 되는 대규모 환경에서는 신중하게 계획을 수립한 후 tempdb를 더 적은 볼륨으로 통합하고 동일한 볼륨에 저장할 수 있습니다. Microsoft SQL Server를 다시 시작할 때마다 이 데이터베이스가 다시 생성되므로 tempdb에 대한 데이터 보호는 높은 우선 순위가 아닙니다.
-
-
-
다음 SSH 명령을 사용하여 볼륨을 생성합니다.
vol create -vserver svm001 -volume vol_awssqlprod01_data -aggregate aggr1 -size 800GB -state online -tiering-policy snapshot-only -percent-snapshot-space 0 -autosize-mode grow -snapshot-policy none -security-style ntfs volume modify -vserver svm001 -volume vol_awssqlprod01_data -fractional-reserve 0 volume modify -vserver svm001 -volume vol_awssqlprod01_data -space-mgmt-try-first vol_grow volume snapshot autodelete modify -vserver svm001 -volume vol_awssqlprod01_data -delete-order oldest_first
-
Windows Server에서 상승된 권한을 사용하여 PowerShell로 iSCSI 서비스를 시작합니다.
Start-service -Name msiscsi Set-Service -Name msiscsi -StartupType Automatic
-
Windows Server에서 상승된 권한을 사용하여 PowerShell로 Multipath-IO를 설치합니다.
Install-WindowsFeature -name Multipath-IO -Restart
-
Windows Server에서 상승된 권한을 사용하여 PowerShell을 사용하는 Windows 이니시에이터 이름을 찾습니다.
Get-InitiatorPort | select NodeAddress
-
putty를 사용하여 SVM(스토리지 가상 시스템)에 연결하고 iGroup을 생성합니다.
igroup create -igroup igrp_ws2019sql1 -protocol iscsi -ostype windows -initiator iqn.1991-05.com.microsoft:ws2019-sql1.contoso.net
-
다음 SSH 명령을 사용하여 LUN을 생성합니다.
lun create -path /vol/vol_awssqlprod01_data/lun_awssqlprod01_data -size 700GB -ostype windows_2008 -space-allocation enabled lun create -path /vol/vol_awssqlprod01_log/lun_awssqlprod01_log -size 100GB -ostype windows_2008 -space-allocation enabled
-
OS 파티셔닝 스키마와 입출력 정렬을 달성하려면 Windows_2008을 권장되는 LUN 유형으로 사용합니다. 을 참조하십시오 "여기" 자세한 내용은 를 참조하십시오.
-
다음 SSH 명령을 사용하여 방금 생성한 LUN에 igroup을 매핑합니다.
lun show lun map -path /vol/vol_awssqlprod01_data/lun_awssqlprod01_data -igroup igrp_awssqlprod01lun map -path /vol/vol_awssqlprod01_log/lun_awssqlprod01_log -igroup igrp_awssqlprod01
-
Windows 페일오버 클러스터를 사용하는 공유 디스크의 경우 SSH 명령을 실행하여 Windows 페일오버 클러스터에 참여하는 모든 서버에 속한 igroup에 동일한 LUN을 매핑합니다.
-
Windows Server를 iSCSI Target을 사용하여 SVM에 연결합니다. AWS Portal에서 타겟 IP 주소를 찾습니다.
-
서버 관리자 및 도구 메뉴에서 iSCSI 초기자를 선택합니다. 검색 탭을 선택한 다음 포털 검색 을 선택합니다. 이전 단계의 iSCSI IP 주소를 제공하고 고급을 선택합니다. 로컬 어댑터 에서 Microsoft iSCSI 초기자 를 선택합니다. 이니시에이터 IP에서 서버의 IP를 선택합니다. 그런 다음 확인 을 선택하여 모든 창을 닫습니다.
-
SVM에서 두 번째 iSCSI IP에 대해 12단계를 반복합니다.
-
Targets * 탭을 선택하고 * Connect * 를 선택한 다음 * Enable Muti-path * 를 선택합니다.
-
최상의 성능을 얻으려면 세션을 더 추가하고 5개의 iSCSI 세션을 생성하는 것이 좋습니다. 속성 * > * 세션 추가 * > * 고급 * 을 선택하고 12단계를 반복합니다.
$TargetPortals = ('10.2.1.167', '10.2.2.12') foreach ($TargetPortal in $TargetPortals) {New-IscsiTargetPortal -TargetPortalAddress $TargetPortal}
-
모범 사례 *
-
최적의 성능을 위해 타겟 인터페이스당 5개의 iSCSI 세션을 구성합니다.
-
최상의 전체 iSCSI 성능을 위해 라운드 로빈 정책을 구성합니다.
-
LUN을 포맷할 때 할당 유닛 크기가 파티션의 64K로 설정되어 있는지 확인합니다
-
다음 PowerShell 명령을 실행하여 iSCSI 세션이 유지되는지 확인합니다.
$targets = Get-IscsiTarget foreach ($target in $targets) { Connect-IscsiTarget -IsMultipathEnabled $true -NodeAddress $target.NodeAddress -IsPersistent $true }
-
다음 PowerShell 명령으로 디스크를 초기화합니다.
$disks = Get-Disk | where PartitionStyle -eq raw foreach ($disk in $disks) {Initialize-Disk $disk.Number}
-
PowerShell을 사용하여 Create Partition 및 Format Disk 명령을 실행합니다.
New-Partition -DiskNumber 1 -DriveLetter F -UseMaximumSize Format-Volume -DriveLetter F -FileSystem NTFS -AllocationUnitSize 65536 New-Partition -DiskNumber 2 -DriveLetter G -UseMaximumSize Format-Volume -DriveLetter G -FileSystem NTFS -AllocationUnitSize 65536
-
-
부록 B의 PowerShell 스크립트를 사용하여 볼륨 및 LUN 생성을 자동화할 수 있습니다 SnapCenter를 사용하여 LUN을 생성할 수도 있습니다.
볼륨 및 LUN을 정의한 후에는 SnapCenter를 설정하여 데이터베이스 작업을 수행할 수 있어야 합니다.
SnapCenter 개요
NetApp SnapCenter는 계층 1 엔터프라이즈 애플리케이션을 위한 차세대 데이터 보호 소프트웨어입니다. SnapCenter는 단일 창 방식의 관리 인터페이스를 통해, 여러 데이터베이스와 기타 애플리케이션 워크로드의 백업, 복구 및 클론 복제와 관련된 시간 소모적이고 복잡한 수동 프로세스를 자동화 및 단순화합니다. SnapCenter는 NetApp Snapshot, NetApp SnapMirror, SnapRestore 및 NetApp FlexClone을 비롯한 NetApp 기술을 활용합니다. 이와 같은 통합을 통해 IT 조직은 스토리지 인프라를 확장하고, 점점 엄격해지는 SLA 규정을 충족하고, 기업 전체에서 관리자의 생산성을 향상시킬 수 있습니다.
SnapCenter 서버 요구 사항
다음 표에는 Microsoft Windows Server에 SnapCenter Server 및 플러그인을 설치하기 위한 최소 요구 사항이 나열되어 있습니다.
구성 요소 | 요구 사항 |
---|---|
최소 CPU 수입니다 |
코어/vCPU 4개 |
메모리 |
최소 8GB 권장: 32GB |
저장 공간 |
최소 설치 공간: 10GB의 리포지토리 최소 공간: 10GB |
지원되는 운영 체제 |
|
소프트웨어 패키지 |
|
자세한 내용은 을 참조하십시오 "요구사항을 충족해야 합니다".
버전 호환성은 를 참조하십시오 "NetApp 상호 운용성 매트릭스 툴".
데이터베이스 스토리지 레이아웃
다음 그림에서는 SnapCenter를 사용하여 백업할 때 Microsoft SQL Server 데이터베이스 스토리지 레이아웃을 생성할 때 고려해야 할 몇 가지 사항을 보여 줍니다.
-
모범 사례 *
-
데이터베이스를 I/O 집약적 쿼리로 배치하거나 데이터베이스 크기가 큰(예: 500GB 이상) 데이터베이스를 별도의 볼륨에 배치하여 복구 속도를 높입니다. 이 볼륨은 별도의 작업으로 백업되어야 합니다.
-
중요도가 덜하거나 I/O 요구사항이 적은 중소 규모의 데이터베이스를 단일 볼륨에 통합합니다. 동일한 볼륨에 상주하는 많은 데이터베이스를 백업하면 유지해야 하는 Snapshot 복사본이 줄어듭니다. 또한 Microsoft SQL Server 인스턴스를 통합하여 동일한 볼륨을 사용하여 생성한 백업 Snapshot 복사본 수를 제어하는 것이 모범 사례입니다.
-
전체 텍스트 관련 파일 및 파일 스트리밍 관련 파일을 저장할 별도의 LUN을 생성합니다.
-
Microsoft SQL Server 로그 백업을 저장할 호스트당 별도의 LUN을 할당합니다.
-
데이터베이스 서버 메타데이터 구성 및 작업 세부 정보를 저장하는 시스템 데이터베이스는 자주 업데이트되지 않습니다. 시스템 데이터베이스/tempdb를 별도의 드라이브 또는 LUN에 배치합니다. 사용자 데이터베이스와 동일한 볼륨에 시스템 데이터베이스를 배치하지 마십시오. 사용자 데이터베이스는 다른 백업 정책을 가지고 있으며 사용자 데이터베이스 백업 빈도는 시스템 데이터베이스에 대해 동일하지 않습니다.
-
Microsoft SQL Server Availability Group 설정의 경우 복제본의 데이터 및 로그 파일을 모든 노드의 동일한 폴더 구조에 배치합니다.
-
사용자 데이터베이스 레이아웃을 서로 다른 볼륨으로 분리함으로써 얻을 수 있는 성능 이점 외에도 데이터베이스가 백업 및 복구에 필요한 시간에 큰 영향을 미칩니다. 데이터 및 로그 파일을 위한 별도의 볼륨을 가지고 있으면 여러 사용자 데이터 파일을 호스팅하는 볼륨에 비해 복원 시간이 크게 향상됩니다. 마찬가지로, I/O 집약적인 애플리케이션이 있는 사용자 데이터베이스는 백업 시간이 증가하기 쉽습니다. 백업 및 복원 방법에 대한 자세한 설명은 이 문서의 뒷부분에 나와 있습니다.
SQL Server 2012(11.x), 시스템 데이터베이스(Master, Model, msdb 및 TempDB)부터 데이터베이스 엔진 사용자 데이터베이스는 SMB 파일 서버와 함께 스토리지 옵션으로 설치할 수 있습니다. 이는 독립 실행형 SQL Server 및 SQL Server 장애 조치 클러스터 설치 모두에 적용됩니다. 이로써 FSx ONTAP을 볼륨 용량, 성능 확장성, 데이터 보호 기능을 비롯하여 SQL Server에서 활용할 수 있는 모든 성능 및 데이터 관리 기능과 함께 사용할 수 있습니다. 응용 프로그램 서버에서 사용하는 공유는 지속적으로 사용 가능한 속성 집합을 사용하여 구성해야 하며 볼륨은 NTFS 보안 스타일로 만들어야 합니다. NetApp SnapCenter는 FSx ONTAP의 SMB 공유에 배치된 데이터베이스에는 사용할 수 없습니다. |
SnapCenter를 사용하여 백업을 수행하지 않는 SQL Server 데이터베이스의 경우 데이터와 로그 파일을 별도의 드라이브에 배치하는 것이 좋습니다. 데이터를 동시에 업데이트하고 요청하는 응용 프로그램의 경우 로그 파일은 쓰기 작업이 많고 데이터 파일(응용 프로그램에 따라 다름)은 읽기/쓰기 작업이 많이 사용됩니다. 데이터 검색을 위해 로그 파일이 필요하지 않습니다. 따라서 자체 드라이브에 있는 데이터 파일에서 데이터 요청을 처리할 수 있습니다. |
새 데이터베이스를 만들 때는 데이터와 로그에 대해 별도의 드라이브를 지정하는 것이 좋습니다. 데이터베이스를 만든 후 파일을 이동하려면 데이터베이스를 오프라인으로 전환해야 합니다. Microsoft 권장 사항에 대한 자세한 내용은 별도의 드라이브에 데이터 및 로그 파일 배치 를 참조하십시오. |
SnapCenter 설치 및 설정
를 따릅니다 "SnapCenter 서버를 설치합니다" 및 "Microsoft SQL Server용 SnapCenter 플러그인 설치" SnapCenter를 설치하고 설정합니다.
SnapCenter를 설치한 후 다음 단계를 수행하여 설정합니다.
-
자격 증명을 설정하려면 * 설정 * > * 새로 만들기 * 를 선택한 다음 자격 증명 정보를 입력합니다.
-
스토리지 시스템 > 새로 만들기를 선택하고 에서 적절한 FSx ONTAP 스토리지 정보를 제공하여 스토리지 시스템을 추가합니다.
-
호스트 * > * 추가 * 를 선택하여 호스트를 추가한 다음 호스트 정보를 제공합니다. SnapCenter는 Windows 및 SQL Server 플러그인을 자동으로 설치합니다. 이 프로세스에는 시간이 다소 걸릴 수 있습니다.
모든 플러그인을 설치한 후에는 로그 디렉토리를 구성해야 합니다. 트랜잭션 로그 백업이 상주하는 위치입니다. 호스트를 선택한 다음 로그 디렉토리 구성을 선택하여 로그 디렉토리를 구성할 수 있습니다.
SnapCenter는 호스트 로그 디렉토리를 사용하여 트랜잭션 로그 백업 데이터를 저장합니다. 호스트 및 인스턴스 레벨에 있습니다. SnapCenter에서 사용하는 각 SQL Server 호스트에는 로그 백업을 수행하도록 구성된 호스트 로그 디렉토리가 있어야 합니다. SnapCenter에는 데이터베이스 저장소가 있으므로 백업, 복원 또는 클론 복제 작업과 관련된 메타데이터가 중앙 데이터베이스 저장소에 저장됩니다. |
호스트 로그 디렉토리의 크기는 다음과 같이 계산됩니다.
호스트 로그 디렉토리의 크기 = 시스템 데이터베이스 크기 + (최대 DB LDF 크기 × 일일 로그 변경률 % × (스냅샷 복사본 보존) ÷ (1 – LUN 오버헤드 공간 %)
호스트 로그 디렉토리 사이징 공식은 다음을 가정합니다.
-
tempdb 데이터베이스를 포함하지 않는 시스템 데이터베이스 백업입니다
-
10% LUN 오버헤드 공간 전용 볼륨 또는 LUN에 호스트 로그 디렉토리를 저장합니다. 호스트 로그 디렉토리의 데이터 양은 백업 크기 및 백업 보존 일수에 따라 달라집니다.
LUN이 이미 용량 할당된 경우 호스트 로그 디렉토리를 나타내는 마운트 지점을 선택할 수 있습니다.
이제 SQL Server에 대한 백업, 복원 및 클론 작업을 수행할 준비가 되었습니다.
SnapCenter를 사용하여 데이터베이스를 백업합니다
데이터베이스와 로그 파일을 FSx ONTAP LUN에 배치한 후 SnapCenter를 사용하여 데이터베이스를 백업할 수 있습니다. 다음 프로세스를 사용하여 전체 백업을 생성합니다.
-
모범 사례 *
-
SnapCenter의 경우 RPO를 백업 빈도로 식별할 수 있습니다. 예를 들어, 데이터 손실을 최대 몇 분 이내로 줄이기 위해 백업 스케줄을 얼마나 자주 지정할지 알 수 있습니다. SnapCenter를 사용하면 5분마다 백업을 예약할 수 있습니다. 그러나 최대 트랜잭션 시간 동안 5분 내에 백업을 완료하지 못하거나 지정된 시간 내에 데이터 변화율이 더 높은 경우가 있을 수 있습니다. 가장 좋은 방법은 전체 백업 대신 빈번한 트랜잭션 로그 백업을 예약하는 것입니다.
-
RPO 및 RTO를 처리하는 방법은 여러 가지가 있습니다. 이 백업 방식을 대체하는 방법 중 하나는 데이터 및 로그에 대해 서로 다른 간격을 두고 별도의 백업 정책을 사용하는 것입니다. 예를 들어, SnapCenter에서 로그 백업을 15분 간격으로 예약하고 데이터 백업을 6시간 간격으로 예약하는 경우가 있습니다.
-
스냅샷 최적화 및 관리할 작업 수를 위한 백업 구성에 리소스 그룹을 사용합니다.
-
Resources * 를 선택한 다음 왼쪽 상단의 드롭다운 메뉴에서 * Microsoft SQL Server * 를 선택합니다. 리소스 새로 고침 * 을 선택합니다.
-
백업할 데이터베이스를 선택한 다음 * Next * 및 (**)를 선택하여 정책을 만들지 않은 경우 추가합니다. 새 SQL Server 백업 정책 * 에 따라 새 정책을 만듭니다.
-
필요한 경우 검증 서버를 선택합니다. 이 서버는 전체 백업이 생성된 후 SnapCenter가 DBCC CHECKDB를 실행하는 서버입니다. 알림을 보려면 * 다음 * 을 클릭하고 검토하려면 * 요약 * 을 선택합니다. 검토 후 * 마침 * 을 클릭합니다.
-
백업을 테스트하려면 * 지금 백업 * 을 클릭합니다. 팝업 창에서 * 백업 * 을 선택합니다.
-
백업이 완료되었는지 확인하려면 * Monitor * 를 선택합니다.
-
-
모범 사례 *
-
SnapCenter에서 트랜잭션 로그 백업을 백업하면 복원 프로세스 중에 SnapCenter가 모든 백업 파일을 읽고 순서대로 자동으로 복원할 수 있습니다.
-
타사 제품을 백업에 사용하는 경우 SnapCenter에서 백업 복사를 선택하여 로그 시퀀스 문제를 방지하고 운영 환경으로 롤링하기 전에 복원 기능을 테스트합니다.
SnapCenter를 사용하여 데이터베이스를 복원합니다
EC2에서 FSx ONTAP와 SQL Server를 함께 사용할 경우 얻을 수 있는 주요 이점 중 하나는 각 데이터베이스 레벨에서 신속하고 세분화된 복원을 수행할 수 있다는 것입니다.
SnapCenter를 사용하여 개별 데이터베이스를 특정 시점 또는 최대 분으로 복원하려면 다음 단계를 완료하십시오.
-
리소스 를 선택한 다음 복원할 데이터베이스를 선택합니다.
-
데이터베이스를 복원해야 하는 백업 이름을 선택한 다음 복원 을 선택합니다.
-
데이터베이스를 복원하려면 * 복원 * 팝업 창을 따르십시오.
-
복구 프로세스가 성공적인지 확인하려면 * Monitor * 를 선택합니다.
크기가 작은 데이터베이스를 여러 개 사용하는 인스턴스에 대한 고려 사항입니다
SnapCenter는 리소스 그룹 내의 인스턴스 또는 인스턴스 그룹에서 상당히 많은 수의 데이터베이스를 백업할 수 있습니다. 데이터베이스의 크기는 백업 시간의 주요 요인이 아닙니다. 백업 기간은 볼륨당 LUN 수, Microsoft SQL Server의 로드, 인스턴스당 총 데이터베이스 수, 특히 I/O 대역폭 및 사용량에 따라 달라질 수 있습니다. 인스턴스 또는 리소스 그룹에서 데이터베이스를 백업하도록 정책을 구성하는 동안에는 스냅샷 복사본당 백업된 최대 데이터베이스를 호스트당 100개로 제한하는 것이 좋습니다. 총 스냅샷 복사본 수가 1,023개 복사본 제한을 초과하지 않도록 해야 합니다.
또한 각 데이터베이스 또는 인스턴스에 대해 여러 작업을 생성하는 대신 데이터베이스 수를 그룹화하여 병렬로 실행 중인 백업 작업을 제한하는 것이 좋습니다. 백업 기간의 성능을 최적화하려면 백업 작업 수를 한 번에 100개 이하의 데이터베이스를 백업할 수 있는 숫자로 줄입니다.
앞서 언급한 것처럼, I/O 사용은 백업 프로세스에서 중요한 요소입니다. 백업 프로세스는 데이터베이스에서 모든 I/O 작업이 완료될 때까지 일시 중지되도록 대기해야 합니다. I/O 작업이 매우 많은 데이터베이스는 다른 백업 시간으로 지연되거나 백업할 동일한 리소스 그룹 내의 다른 리소스에 영향을 주지 않도록 다른 백업 작업과 격리되어야 합니다.
호스트당 4개의 LUN과 생성된 볼륨당 1개의 LUN을 가정하여 인스턴스당 200개의 데이터베이스를 호스팅하는 Microsoft SQL Server 호스트가 6개 있는 환경의 경우 스냅샷 복사본당 백업된 최대 데이터베이스가 있는 전체 백업 정책을 100으로 설정합니다. 각 인스턴스에 200개의 데이터베이스가 2개의 LUN에 균등하게 분산되는 200개의 데이터 파일로 배치되고 200개의 로그 파일이 2개의 LUN에 균등하게 배포되며, 이는 볼륨당 100개의 파일입니다.
세 개의 리소스 그룹을 생성하여 세 개의 백업 작업을 예약합니다. 각 그룹은 총 400개의 데이터베이스를 포함하는 두 인스턴스를 그룹화합니다.
세 백업 작업을 모두 병렬로 실행하면 1,200개의 데이터베이스가 동시에 백업됩니다. 서버의 로드 및 I/O 사용량에 따라 각 인스턴스의 시작 및 종료 시간이 달라질 수 있습니다. 이 경우 총 24개의 스냅샷 복사본이 생성됩니다.
전체 백업 외에도 중요 데이터베이스에 대한 트랜잭션 로그 백업을 구성하는 것이 좋습니다. 데이터베이스 속성이 전체 복구 모델로 설정되어 있는지 확인합니다.
-
모범 사례 *
-
백업에 포함된 데이터는 일시적이므로 백업에 tempdb 데이터베이스를 포함하지 마십시오. Snapshot 복제본이 생성되지 않는 스토리지 시스템 볼륨에 있는 LUN 또는 SMB 공유에 tempdb를 배치합니다.
-
I/O 집약적인 응용 프로그램이 있는 Microsoft SQL Server 인스턴스를 다른 백업 작업에서 격리하여 다른 리소스에 대한 전체 백업 시간을 줄여야 합니다.
-
동시에 백업할 데이터베이스 집합을 약 100개로 제한하고 나머지 데이터베이스 백업 집합을 스태그하여 동시 프로세스가 발생하지 않도록 합니다.
-
Microsoft SQL Server 인스턴스에서 새 데이터베이스를 만들 때마다 SnapCenter에서는 자동으로 새 데이터베이스를 백업할 수 있도록 간주하므로 여러 데이터베이스 대신 리소스 그룹에서 Microsoft SQL Server 인스턴스 이름을 사용합니다.
-
데이터베이스 복구 모델을 전체 복구 모델로 변경하는 등 데이터베이스 구성을 변경하는 경우 즉시 백업을 수행하여 최신 복원 작업을 수행할 수 있습니다.
-
SnapCenter는 SnapCenter 외부에서 생성된 트랜잭션 로그 백업을 복원할 수 없습니다.
-
FlexVol 볼륨을 클론 복제할 때 클론 메타데이터를 위한 충분한 공간이 있는지 확인합니다.
-
데이터베이스를 복원할 때 볼륨에서 충분한 공간을 사용할 수 있는지 확인합니다.
-
시스템 데이터베이스를 최소한 일주일에 한 번 관리하고 백업하기 위한 별도의 정책을 생성합니다.
-
SnapCenter를 사용하여 데이터베이스 클론 생성
개발 또는 테스트 환경의 다른 위치로 데이터베이스를 복원하거나 비즈니스 분석을 위해 복사본을 생성하기 위해 NetApp 모범 사례는 클론 복제 방법을 활용하여 동일한 인스턴스 또는 대체 인스턴스에서 데이터베이스 복사본을 생성하는 것입니다.
일반적으로 FSx ONTAP 환경에 호스팅된 iSCSI 디스크에서 500GB인 데이터베이스를 복제하는 데 걸리는 시간은 5분 미만입니다. 클론 생성이 완료되면 사용자는 클론 복제된 데이터베이스에서 필요한 모든 읽기/쓰기 작업을 수행할 수 있습니다. 대부분의 시간은 디스크 검사(diskpart)에 사용됩니다. NetApp 클론 복제 절차는 데이터베이스의 크기에 관계없이 일반적으로 2분 이내에 완료됩니다.
데이터베이스 클론 생성은 이중 방법으로 수행할 수 있습니다. 최신 백업에서 클론을 생성하거나 보조 인스턴스에서 최신 복사본을 사용할 수 있는 클론 라이프사이클 관리를 사용할 수 있습니다.
SnapCenter를 사용하면 필요한 디스크에 클론 복제본을 마운트하여 보조 인스턴스에서 폴더 구조의 형식을 유지하고 백업 작업 스케줄을 계속 지정할 수 있습니다.
동일한 인스턴스에서 새 데이터베이스 이름으로 데이터베이스 클론 생성
다음 단계를 사용하여 EC2에서 실행되는 동일한 SQL Server 인스턴스에서 데이터베이스를 새 데이터베이스 이름으로 복제할 수 있습니다.
-
리소스를 선택한 다음 클론을 생성해야 하는 데이터베이스를 선택합니다.
-
클론 복제할 백업 이름을 선택하고 클론 을 선택합니다.
-
백업 윈도우의 클론 지침에 따라 클론 프로세스를 완료합니다.
-
복제를 완료하려면 Monitor 를 선택합니다.
EC2에서 실행 중인 새 SQL Server 인스턴스로 데이터베이스 클론 생성
다음 단계는 EC2에서 실행되는 새 SQL Server 인스턴스에 데이터베이스를 복제하는 데 사용됩니다.
-
동일한 VPC에서 EC2에 새 SQL Server를 생성합니다.
-
iSCSI 프로토콜 및 MPIO를 활성화한 다음 "SQL Server용 볼륨 및 LUN 생성" 섹션의 3단계와 4단계에 따라 FSx ONTAP에 대한 iSCSI 연결을 설정합니다.
-
"SnapCenter 설치 및 설정" 섹션의 3단계를 따라 EC2의 새 SQL Server를 SnapCenter에 추가합니다.
-
리소스 > 인스턴스 보기 를 선택한 다음 리소스 새로 고침 을 선택합니다.
-
리소스를 선택한 다음 복제할 데이터베이스를 선택합니다.
-
클론 복제할 백업 이름을 선택한 다음 클론 을 선택합니다.
-
EC2 및 인스턴스 이름에 새 SQL Server 인스턴스를 제공하여 Clone from Backup 지침에 따라 클론 프로세스를 완료합니다.
-
복제를 완료하려면 Monitor 를 선택합니다.
이 프로세스에 대한 자세한 내용은 다음 비디오를 참조하십시오.
부록
부록 A: 클라우드 형성 템플릿에 사용할 YAML 파일
다음 .YAML 파일은 AWS 콘솔의 Cloud formation Template과 함께 사용할 수 있습니다.
PowerShell을 사용하여 iSCSI LUN 생성 및 NetApp SnapCenter 설치를 자동화하려면 에서 리포를 클론 복제하십시오 "이 GitHub 링크를 클릭합니다".
부록 B: 볼륨 및 LUN 프로비저닝을 위한 Powershell 스크립트
다음 스크립트는 볼륨 및 LUN을 프로비저닝하는 데 사용되며, 위에 제공된 지침에 따라 iSCSI를 설정하는 데도 사용됩니다. 두 개의 PowerShell 스크립트가 있습니다.
-
_EnableMPIO.ps1
Function Install_MPIO_ssh {
$hostname = $env:COMPUTERNAME
$hostname = $hostname.Replace('-','_')
#Add schedule action for the next step
$path = Get-Location
$path = $path.Path + '\2_CreateDisks.ps1'
$arg = '-NoProfile -WindowStyle Hidden -File ' +$path
$schAction = New-ScheduledTaskAction -Execute "Powershell.exe" -Argument $arg
$schTrigger = New-ScheduledTaskTrigger -AtStartup
$schPrincipal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$return = Register-ScheduledTask -Action $schAction -Trigger $schTrigger -TaskName "Create Vols and LUNs" -Description "Scheduled Task to run configuration Script At Startup" -Principal $schPrincipal
#Install -Module Posh-SSH
Write-host 'Enable MPIO and SSH for PowerShell' -ForegroundColor Yellow
$return = Find-PackageProvider -Name 'Nuget' -ForceBootstrap -IncludeDependencies
$return = Find-Module PoSH-SSH | Install-Module -Force
#Install Multipath-IO with PowerShell using elevated privileges in Windows Servers
Write-host 'Enable MPIO' -ForegroundColor Yellow
$return = Install-WindowsFeature -name Multipath-IO -Restart
}
Install_MPIO_ssh
Remove-Item -Path $MyInvocation.MyCommand.Source
-
_CreateDisks.ps1
.... #Enable MPIO and Start iSCSI Service Function PrepISCSI { $return = Enable-MSDSMAutomaticClaim -BusType iSCSI #Start iSCSI service with PowerShell using elevated privileges in Windows Servers $return = Start-service -Name msiscsi $return = Set-Service -Name msiscsi -StartupType Automatic } Function Create_igroup_vols_luns ($fsxN){ $hostname = $env:COMPUTERNAME $hostname = $hostname.Replace('-','_') $volsluns = @() for ($i = 1;$i -lt 10;$i++){ if ($i -eq 9){ $volsluns +=(@{volname=('v_'+$hostname+'_log');volsize=$fsxN.logvolsize;lunname=('l_'+$hostname+'_log');lunsize=$fsxN.loglunsize}) } else { $volsluns +=(@{volname=('v_'+$hostname+'_data'+[string]$i);volsize=$fsxN.datavolsize;lunname=('l_'+$hostname+'_data'+[string]$i);lunsize=$fsxN.datalunsize}) } } $secStringPassword = ConvertTo-SecureString $fsxN.password -AsPlainText -Force $credObject = New-Object System.Management.Automation.PSCredential ($fsxN.login, $secStringPassword) $igroup = 'igrp_'+$hostname #Connect to FSx N filesystem $session = New-SSHSession -ComputerName $fsxN.svmip -Credential $credObject -AcceptKey:$true #Create igroup Write-host 'Creating igroup' -ForegroundColor Yellow #Find Windows initiator Name with PowerShell using elevated privileges in Windows Servers $initport = Get-InitiatorPort | select -ExpandProperty NodeAddress $sshcmd = 'igroup create -igroup ' + $igroup + ' -protocol iscsi -ostype windows -initiator ' + $initport $ret = Invoke-SSHCommand -Command $sshcmd -SSHSession $session #Create vols Write-host 'Creating Volumes' -ForegroundColor Yellow foreach ($vollun in $volsluns){ $sshcmd = 'vol create ' + $vollun.volname + ' -aggregate aggr1 -size ' + $vollun.volsize #+ ' -vserver ' + $vserver $return = Invoke-SSHCommand -Command $sshcmd -SSHSession $session } #Create LUNs and mapped LUN to igroup Write-host 'Creating LUNs and map to igroup' -ForegroundColor Yellow foreach ($vollun in $volsluns){ $sshcmd = "lun create -path /vol/" + $vollun.volname + "/" + $vollun.lunname + " -size " + $vollun.lunsize + " -ostype Windows_2008 " #-vserver " +$vserver $return = Invoke-SSHCommand -Command $sshcmd -SSHSession $session #map all luns to igroup $sshcmd = "lun map -path /vol/" + $vollun.volname + "/" + $vollun.lunname + " -igroup " + $igroup $return = Invoke-SSHCommand -Command $sshcmd -SSHSession $session } } Function Connect_iSCSI_to_SVM ($TargetPortals){ Write-host 'Online, Initialize and format disks' -ForegroundColor Yellow #Connect Windows Server to svm with iSCSI target. foreach ($TargetPortal in $TargetPortals) { New-IscsiTargetPortal -TargetPortalAddress $TargetPortal for ($i = 1; $i -lt 5; $i++){ $return = Connect-IscsiTarget -IsMultipathEnabled $true -IsPersistent $true -NodeAddress (Get-iscsiTarget | select -ExpandProperty NodeAddress) } } } Function Create_Partition_Format_Disks{ #Create Partion and format disk $disks = Get-Disk | where PartitionStyle -eq raw foreach ($disk in $disks) { $return = Initialize-Disk $disk.Number $partition = New-Partition -DiskNumber $disk.Number -AssignDriveLetter -UseMaximumSize | Format-Volume -FileSystem NTFS -AllocationUnitSize 65536 -Confirm:$false -Force #$return = Format-Volume -DriveLetter $partition.DriveLetter -FileSystem NTFS -AllocationUnitSize 65536 } } Function UnregisterTask { Unregister-ScheduledTask -TaskName "Create Vols and LUNs" -Confirm:$false } Start-Sleep -s 30 $fsxN = @{svmip ='198.19.255.153';login = 'vsadmin';password='net@pp11';datavolsize='10GB';datalunsize='8GB';logvolsize='8GB';loglunsize='6GB'} $TargetPortals = ('10.2.1.167', '10.2.2.12') PrepISCSI Create_igroup_vols_luns $fsxN Connect_iSCSI_to_SVM $TargetPortals Create_Partition_Format_Disks UnregisterTask Remove-Item -Path $MyInvocation.MyCommand.Source ....
파일을 실행합니다 EnableMPIO.ps1
첫 번째 및 두 번째 스크립트는 서버가 재부팅된 후 자동으로 실행됩니다. 이러한 PowerShell 스크립트는 SVM에 대한 자격 증명 액세스로 인해 실행된 후에 제거할 수 있습니다.
추가 정보를 찾을 수 있는 위치
-
Amazon FSx ONTAP을 소개합니다
-
FSx ONTAP 시작하기
-
SnapCenter 인터페이스의 개요입니다
-
SnapCenter 탐색 창 옵션을 둘러봅니다
-
SQL Server용 SnapCenter 4.0 플러그인을 설치합니다
-
SnapCenter with SQL Server 플러그인을 사용하여 데이터베이스를 백업 및 복원하는 방법
-
SnapCenter with SQL Server 플러그인을 사용하여 데이터베이스를 복제하는 방법