메뉴
Amazon Relational Database Service
사용 설명서 (API Version 2014-10-31)

데이터베이스 미러링 기능을 이용한 Microsoft SQL Server의 다중 AZ 배포

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

Amazon RDS는 다중 AZ 배포를 능동적으로 모니터링하면서 기본 인스턴스에 문제가 발생할 때 장애 조치를 시작하여 장애 조치를 관리합니다. 대기 및 기본 인스턴스가 완벽히 동기화되어 있지 않으면 장애 조치가 이루어지지 않습니다. Amazon RDS는 비정상 DB 인스턴스를 자동으로 복구하고 동기 복제를 다시 설정하여 다중 AZ 배포를 능동적으로 유지합니다. 따라서 Amazon RDS가 기본 인스턴스, 미러링 감시, 대기 인스턴스를 자동으로 처리하기 때문에 사용자가 따로 관리할 것이 없습니다. SQL Server 다중 AZ를 설정하면 인스턴스 상의 모든 데이터베이스가 자동으로 미러링됩니다.

Amazon RDS는 다음 SQL Server 버전에 미러링을 통한 다중 AZ를 지원합니다.

  • SQL Server 2016: Standard 및 Enterprise Edition

  • 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를 지원하지만 다음은 예외입니다.

  • 지원하지 않음

    • 미국 서부(캘리포니아 북부 지역)

    • 아시아 태평양(싱가포르)

    • AWS GovCloud (US)

 

미러링을 포함한 다중 AZ를 Microsoft SQL Server DB 인스턴스에 추가

AWS Management Console을 사용하여 새로운 SQL Server DB 인스턴스를 생성할 때는 [Specify DB Details] 페이지의 [Multi-AZ Deployment] 목록에서 [Yes (Mirroring)]을 선택하기만 하면 미러링을 포함한 다중 AZ를 추가할 수 있습니다. 자세한 내용은 Microsoft SQL Server 데이터베이스 엔진 기반 DB 인스턴스의 생성을(를) 참조하십시오.

AWS Management Console을 사용하여 기존 SQL Server DB 인스턴스를 수정할 때는 [Modify DB Instance] 페이지의 [Multi-AZ Deployment] 목록에서 [Yes (Mirroring)]를 선택하기만 하면 미러링을 포함한 다중 AZ를 추가할 수 있습니다. 자세한 내용은 Microsoft SQL Server 데이터베이스 엔진 기반 DB 인스턴스의 수정을(를) 참조하십시오.

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

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

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

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

  • 전용 테넌시 DB 인스턴스에서는 미러링을 사용하는 다중 AZ가 지원되지 않습니다.

  • 인 메모리 최적화가 활성화된 DB 인스턴스에서는 미러링을 사용하는 다중 AZ가 지원되지 않습니다. 자세한 내용은 Microsoft 설명서의 Unsupported SQL Server Features for In-Memory OLTP을(를) 참조하십시오.

  • 미러링 배포를 통한 SQL Server 다중 AZ에 있는 SQL Server DB 인스턴스의 데이터베이스는 이름을 변경할 수 없습니다. 이러한 인스턴스의 데이터베이스 이름을 변경해야 하는 경우에는 먼저 DB 인스턴스에서 다중 AZ를 비활성화하여 데이터베이스 이름을 변경한 후 DB 인스턴스에서 다중 AZ를 다시 활성화해야 합니다.

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

  • VPC에서 SQL Server DB 인스턴스와 함께 미러링을 통한 SQL Server 다중 AZ를 사용하려면 먼저 별개의 가용 영역 2개 이상에 서브넷이 있는 DB 서브넷 그룹을 만들어야 합니다. 그런 다음 미러링되는 SQL Server DB 인스턴스에 DB 서브넷 그룹을 배정해야 합니다.

  • 다중 AZ 배포를 위해 DB 인스턴스를 수정하는 경우 DB 인스턴스의 상태는 [modifying]입니다. Amazon RDS가 대기 미러를 생성하고, 기본 DB 인스턴스를 백업합니다. 프로세스가 완료되면 기본 DB 인스턴스의 상태가 [available]이 됩니다.

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

  • 미러링을 사용하는 다중 AZ는 대기 미러 하나를 지원합니다.

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

  • SQL Server Agent 작업이 있는 경우 이들 작업은 msdb 데이터베이스에 저장되고 미러링을 통해 이 데이터베이스를 복제할 수는 없으므로 보조 인스턴스에 이 작업을 다시 만들어야 합니다. 원래의 기본 인스턴스에서 작업을 먼저 만든 다음, 장애 조치하고 새 기본 인스턴스에서 같은 작업을 만들어야 합니다.

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

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

  • 다중 AZ DB 인스턴스에 백업 파일을 복원할 때는 미러링이 종료된 다음에 재구성됩니다. 복원하는 것뿐만 아니라 DB 인스턴스의 모든 데이터베이스에 대해 미러링이 종료되고 재구성됩니다. RDS가 미러링을 재구성하는 사이에 DB 인스턴스가 장애 조치를 할 수 없습니다. 미러링 재구성 시간은 복원 크기에 따라 30분 이상이 걸릴 수도 있습니다. 자세한 내용은 SQL Server 데이터베이스 가져오기 및 내보내기을(를) 참조하십시오.

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

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

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

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

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

    Copy
    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 명령을 사용하면 안 됩니다. 예를 들어 다음과 같이 실행하면 안 됩니다.

    Copy
    ALTER DATABASE db1 SET PARTNER off
  • 복구 모드를 simple로 설정하면 안 됩니다. 예를 들어 다음과 같이 실행하면 안 됩니다.

    Copy
    ALTER DATABASE db1 SET RECOVERY simple
  • 이런 설정을 대기 미러에 적용할 수 없으므로 다중 AZ DB 인스턴스에 새 로그인을 만들 때 DEFAULT_DATABASE 파라미터를 사용하면 안 됩니다. 예를 들어 다음과 같이 실행하면 안 됩니다.

    Copy
    CREATE LOGIN [test_dba] WITH PASSWORD=foo, DEFAULT_DATABASE=[db2]

    다음과 같이 실행하면 안 됩니다.

    Copy
    ALTER LOGIN [test_dba] SET DEFAULT_DATABASE=[db3]

대기 미러의 위치 결정

AWS Management Console을 사용하여 대기 미러의 위치를 결정할 수 있습니다. VPC에서 기본 DB 인스턴스를 설정할 경우 대기 미러의 위치를 알아야 합니다.

 단일 AZ 시나리오

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

관련 주제