Amazon Relational Database Service
사용 설명서 (API 버전 2014-10-31)

Microsoft SQL Server의 다중 AZ 배포

다중 AZ 배포는 DB 인스턴스를 위해 향상된 가용성, 데이터 내구성 및 내결함성을 제공합니다. 계획된 데이터베이스 유지 관리 또는 예기치 않은 서비스 중단이 발생할 경우, Amazon RDS가 최신 보조 DB 인스턴스로 자동으로 장애 조치를 수행합니다. 이 기능을 통해 수동 개입 없이 데이터베이스 작업을 빠르게 재개할 수 있습니다. 기본 인스턴스 및 예비 인스턴스는 동일한 엔드포인트를 사용합니다. 이 엔드포인트의 물리적 네트워크 주소는 장애 조치 프로세스의 일환으로 보조 복제본으로 전환됩니다. 장애 조치가 발생하는 경우 애플리케이션을 다시 구성할 필요가 없습니다.

Amazon RDS는 SQL Server 데이터베이스 미러링 또는 상시 작동 가용성 그룹을 사용하여 Microsoft SQL Server의 다중 AZ 배포를 지원합니다. Amazon RDS는 다중 AZ 배포의 상태를 모니터링하고 유지 관리합니다. 문제가 발생하면 RDS는 이상 있는 DB 인스턴스를 복구하고, 동기화를 재설정하며, 장애 조치를 시작합니다. 대기 및 기본 인스턴스가 완벽히 동기화되어 있는 경우에만 장애 조치가 이루어집니다. 사용자가 따로 관리할 것이 없습니다.

SQL Server 다중 AZ를 설정하면 RDS가 미러링 또는 상시 작동을 사용하도록 인스턴스의 모든 데이터베이스를 자동으로 구성합니다. Amazon RDS는 사용자를 위해 기본, 감시 및 보조 DB 인스턴스를 처리합니다.

구성이 자동이므로 RDS는 사용자가 배포한 SQL Server 버전에 따라 미러링 또는 상시 작동을 선택합니다. Amazon RDS는 다음 SQL Server 버전과 에디션에 미러링 또는 상시 작동을 사용하는 다중 AZ를 지원합니다(예외 표시).

  • SQL Server 2017: Standard 및 Enterprise Editions (상시 작동이 아직 지원되지 않음)

  • SQL Server 2016: Standard 및 Enterprise Editions(13.00.5216.0 이상에서만 상시 작동 지원)

  • SQL Server 2014: Standard 및 Enterprise Edition

  • SQL Server 2012: Standard 및 Enterprise Edition

  • SQL Server 2008 R2: Standard 및 Enterprise Edition

Amazon RDS는 모든 AWS 리전에서 SQL Server에 다중 AZ를 지원하지만 다음은 예외입니다.

  • 미국 서부(캘리포니아 북부 지역): 여기에서는 미러링과 상시 작동이 모두 지원되지 않음

  • 아시아 태평양(시드니): VPC의 DB 인스턴스가 지원됨

  • 아시아 태평양(도쿄): VPC의 DB 인스턴스가 지원됨

  • 남아메리카(상파울루): m1 또는 m2를 제외한 모든 DB 인스턴스 클래스에서 지원됨

다중 AZ를 Microsoft SQL Server DB 인스턴스에 추가

AWS Management 콘솔을 사용하여 새로운 SQL Server DB 인스턴스를 만들 때, 미러링 또는 상시 작동을 사용하는 다중 AZ를 추가할 수 있습니다. 이렇게 하려면 DB 세부 정보 지정 페이지의 다중 AZ 배포 목록에서 예(미러링/상시 작동)를 선택합니다. 자세한 내용은 Microsoft SQL Server 데이터베이스 엔진 기반 DB 인스턴스의 생성 단원을 참조하십시오.

AWS Management 콘솔을 사용하여 기존 SQL Server DB 인스턴스를 수정할 때 DB 인스턴스 수정 페이지의 다중 AZ 배포 목록에서 예(미러링/상시 작동)를 선택하여 미러링 또는 상시 작동을 사용하는 다중 AZ를 추가할 수 있습니다. 자세한 내용은 Microsoft SQL Server 데이터베이스 엔진 기반 DB 인스턴스의 수정 단원을 참조하십시오.

Microsoft SQL Server 다중 AZ 배포의 참고 및 권장 사항

다음은 Microsoft SQL Server DB 인스턴스에서 다중 AZ 배포 작업 시 알아두어야 할 몇 가지 제약 조건입니다.

  • 교차 리전 다중 AZ는 현재 지원되지 않습니다.

  • 보조 인스턴스가 데이터베이스 읽기 작업을 허용하도록 구성할 수 없습니다.

  • 상시 작동을 사용하는 다중 AZ는 인 메모리 최적화를 지원합니다.

  • SQL Server 다중 AZ 배포에 있는 SQL Server DB 인스턴스의 데이터베이스는 이름을 변경할 수 없습니다. 그러한 인스턴스의 데이터베이스 이름을 바꿔야 하는 경우, 먼저 DB 인스턴스의 다중 AZ를 끈 후 데이터베이스 이름을 바꿉니다. 마지막으로 DB 인스턴스의 다중 AZ를 다시 켭니다.

  • 전체 복구 모델을 사용하여 백업한 다중 AZ DB 인스턴스만 복원할 수 있습니다.

다음은 Microsoft SQL Server DB 인스턴스에서 다중 AZ 배포 작업 시 알아두어야 할 몇 가지 참고 사항입니다.

  • Amazon RDS는 상시 작동 가용성 그룹 리스너 엔드포인트를 표시합니다. 이 엔드포인트는 콘솔에 표시되며, DescribeDBInstances API에 의해 엔드포인트 필드의 항목으로 반환됩니다.

  • Amazon RDS는 가용성 그룹 다중 서브넷 장애 조치를 지원합니다.

  • VPC에서 SQL Server DB 인스턴스와 함께 SQL Server 다중 AZ를 사용하려면 먼저 별개의 가용 영역 2개 이상에 서브넷이 있는 DB 서브넷 그룹을 만들어야 합니다. 그런 다음 SQL Server DB 인스턴스의 기본 복제본에 DB 서브넷 그룹을 할당합니다.

  • DB 인스턴스를 다중 AZ 배포로 수정할 때 수정하는 동안 인스턴스의 상태는 modifying(수정 중)입니다. Amazon RDS는 대기를 생성하며 기본 DB 인스턴스의 백업을 생성합니다. 프로세스가 완료되면 기본 DB 인스턴스의 상태가 사용 가능이 됩니다.

  • 다중 AZ 배포가 같은 노드 상의 모든 데이터베이스를 유지 관리합니다. 기본 호스트의 데이터베이스가 장애 조치하는 경우, 모든 SQL Server 데이터베이스가 하나의 원자 단위로 대기 호스트로 장애 조치합니다. Amazon RDS는 새로운 정상 호스트를 프로비저닝하여 비정상 호스트를 대체합니다.

  • 미러링 또는 상시 작동을 사용하는 다중 AZ는 예비 복제본 하나를 지원합니다.

  • 사용자, 로그인 및 권한은 보조에 자동으로 복제됩니다. 이런 것을 다시 만들 걱정을 할 필요가 없습니다. 사용자 정의 서버 역할(SQL Server 2012 기능)은 상시 작동 인스턴스의 다중 AZ 인스턴스에서만 복제됩니다.

  • SQL Server 에이전트 작업이 있는 경우, 보조에서 다시 생성합니다. 이러한 작업은 msdb 데이터베이스에 저장되므로 미러링 또는 상시 작동을 사용하여 이 데이터베이스를 복제할 수 없기 때문입니다. 원래의 기본 인스턴스에서 작업을 먼저 만든 다음, 장애 조치하고 새 기본 인스턴스에서 같은 작업을 만들어야 합니다.

  • 동기식 데이터 복제로 인해 단일 가용 영역에서 표준 DB 인스턴스 배포와 비교했을 때 지연 시간이 증가할 수 있습니다.

  • 장애 조치 시간은 복구 프로세스 완료에 걸리는 시간의 영향을 받습니다. 트랜잭션이 크면 장애 조치 시간이 늘어납니다.

다음은 Microsoft SQL Server DB 인스턴스에서 다중 AZ 배포 작업 시 알아두어야 할 몇 가지 권장 사항입니다.

  • 프로덕션 또는 프리 프로덕션 환경에서 사용되는 데이터베이스의 경우, 고가용성, 빠르고 일관된 성능을 위한 프로비저닝된 IOPS 및 프로비저닝된 IOPS용으로 최적화된 인스턴스 클래스(m3.large 이상, m4.large 이상)에 다중 AZ 배포를 사용하는 것이 좋습니다.

  • 보조 인스턴스에 대해 가용 영역(AZ)을 선택할 수 없으므로 애플리케이션 호스트를 배포할 경우 이 점을 고려하십시오. 데이터베이스를 다른 AZ로 장애 조치할 수 있으며, 애플리케이션 호스트가 데이터베이스와 다른 AZ에 있을 수도 있습니다. 이러한 이유로 지정된 AWS 리전의 모든 AZ에서 애플리케이션 호스트의 균형을 조정하는 것이 좋습니다.

  • 최상의 성능을 위해, 큰 데이터 로드 작업 중에는 미러링 또는 상시 작동을 활성화하지 마십시오. 데이터 로드를 최대한 빠르게 수행하려면 데이터 로드를 완료한 후에 DB 인스턴스를 다중 AZ 배포로 변환합니다.

  • SQL Server 데이터베이스에 액세스하는 애플리케이션에 연결 오류를 포착하는 예외 처리 기능이 있어야 합니다. 다음 코드 샘플에 통신 오류를 포착하는 try/catch 블록이 표시되어 있습니다.

    for (int iRetryCount = 0; (iRetryCount < RetryMaxAttempts && keepInserting); iRetryCount++) { using (SqlConnection connection = new SqlConnection(DatabaseConnString)) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = "INSERT INTO SOME_TABLE VALUES ('SomeValue');"; try { connection.Open(); while (keepInserting) { command.ExecuteNonQuery(); intervalCount++; } connection.Close(); } catch (Exception ex) { Logger(ex.Message); } } } if (iRetryCount < RetryMaxAttempts && keepInserting) { Thread.Sleep(RetryIntervalPeriodInSeconds * 1000); } }
  • 다중 AZ 인스턴스로 작업할 때는 Set Partner Off 명령을 사용하지 마십시오. 예를 들어 다음을 수행하지 마십시오.

    --Don't do this ALTER DATABASE db1 SET PARTNER off
  • 복구 모드를 simple로 설정하지 마십시오. 예를 들어 다음을 수행하지 마십시오.

    --Don't do this ALTER DATABASE db1 SET RECOVERY simple
  • 이러한 설정은 대기 미러에 적용할 수 없으므로 다중 AZ DB 인스턴스에 새 로그인을 만들 때 DEFAULT_DATABASE 파라미터를 사용하지 마십시오. 예를 들어 다음을 수행하지 마십시오.

    --Don't do this CREATE LOGIN [test_dba] WITH PASSWORD=foo, DEFAULT_DATABASE=[db2]

    또한 다음 작업을 수행하지 마십시오.

    --Don't do this ALTER LOGIN [test_dba] SET DEFAULT_DATABASE=[db3]

보조의 위치 확인

AWS Management 콘솔을 사용하여 보조 복제본의 위치를 확인할 수 있습니다. VPC에서 기본 DB 인스턴스를 설정할 경우 보조의 위치를 알아야 합니다.


				단일 AZ 시나리오

AWS CLI 명령 describe-db-instances 또는 RDS API 작업 DescribeDBInstances를 사용하여 보조의 가용 영역을 확인할 수도 있습니다. 출력에는 대기 미러가 있는 보조 AZ가 표시됩니다.

미러링에서 상시 작동으로 마이그레이션

미러링에서 상시 작동으로 마이그레이션하려면 먼저 버전을 확인합니다. 버전이 13.00.5216.0 이전인 DB 인스턴스를 사용하는 경우, 13.00.5216.0으로 패치하도록 인스턴스를 수정합니다.

상시 작동으로 업그레이드하려면 다중 AZ를 제거하도록 인스턴스를 수정한 후, 다시 다중 AZ를 추가하도록 수정합니다. 그러면 인스턴스가 상시 작동을 사용하도록 변환됩니다.