Microsoft SQL Server 다중 AZ 배포의 제한, 참고 및 권장 사항
다음은 RDS for SQL Server DB 인스턴스에서 다중 AZ 배포 작업 시 알아두어야 할 몇 가지 제한 사항입니다.
-
교차 리전 다중 AZ는 지원되지 않습니다.
다중 AZ 배포에서는 RDS for SQL Server DB 인스턴스를 중지할 수 없습니다.
-
보조 DB 인스턴스가 데이터베이스 읽기 작업을 허용하도록 구성할 수 없습니다.
-
상시 작동 가용성 그룹(AG)을 사용하는 다중 AZ는 인 메모리 최적화를 지원합니다.
-
상시 작동 가용성 그룹(AG)이 있는 다중 AZ는 가용성 그룹 리스너에 대한 Kerberos 인증을 지원하지 않습니다. 이는 리스너에 SPN(서비스 보안 주체 이름)이 없기 때문입니다.
-
SQL Server 다중 AZ 배포에 있는 SQL Server DB 인스턴스의 데이터베이스는 이름을 변경할 수 없습니다. 그러한 인스턴스의 데이터베이스 이름을 바꿔야 하는 경우, 먼저 DB 인스턴스의 다중 AZ를 끈 후 데이터베이스 이름을 바꿉니다. 마지막으로 DB 인스턴스의 다중 AZ를 다시 켭니다.
-
전체 복구 모델을 사용하여 백업한 다중 AZ DB 인스턴스만 복원할 수 있습니다.
-
다중 AZ 배포에서는 SQL Server 에이전트 작업이 10,000개로 제한됩니다.
한도를 늘려야 할 경우 지원에 문의하여 할당량 증대를 요청하세요. [지원 센터(AWS Support Center)
] 페이지를 열고 필요한 경우, 로그인한 다음 [사례 생성(Create Case)]을 선택합니다. Service Limit increase(서비스 한도 증가)를 선택합니다. 양식을 작성하고 제출합니다. -
SQL Server 다중 AZ 배포에 있는 SQL Server DB 인스턴스에 오프라인 데이터베이스를 가질 수 없습니다.
-
RDS for SQL Server는 보조 인스턴스에 MSDB 데이터베이스 권한을 복제하지 않습니다. 보조 인스턴스에서 이러한 권한이 필요한 경우 수동으로 다시 생성해야 합니다.
다음은 RDS for SQL Server DB 인스턴스에서 다중 AZ 배포 작업 시 알아두어야 할 몇 가지 참고 사항입니다.
-
Amazon RDS는 상시 가동 AG 가용성 그룹 리스너 엔드포인트
를 표시합니다. 이 엔드포인트는 콘솔에 표시되며, DescribeDBInstances
API 작업에 의해 엔드포인트 필드의 항목으로 반환됩니다. -
Amazon RDS는 가용성 그룹 다중 서브넷 장애 조치
를 지원합니다. -
Virtual Private Cloud(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는 새로운 정상 호스트를 프로비저닝하고 비정상 호스트를 대체합니다.
-
DBM 또는 AG를 사용하는 다중 AZ는 예비 복제본 하나를 지원합니다.
-
사용자, 로그인 및 권한은 보조에 자동으로 복제됩니다. 이를 다시 생성할 필요가 없습니다. 사용자 정의 서버 역할은 다중 AZ 배포에 Always On AG를 사용하는 DB 인스턴스에서만 복제됩니다.
-
다중 AZ 배포에서 RDS for SQL Server는 SQL Server 로그인을 생성하여 상시 작동 AG 또는 데이터베이스 미러링을 허용합니다. RDS는
db_<dbiResourceId>_node1_login
,db_<dbiResourceId>_node2_login
,db_<dbiResourceId>_witness_login
패턴으로 로그인을 생성합니다. -
RDS for SQL Server는 읽기 전용 복제본에 대한 액세스를 허용하기 위해 SQL Server 로그인을 생성합니다. RDS는
db_<readreplica_dbiResourceId>_node_login
패턴으로 로그인을 생성합니다. -
다중 AZ 배포에서 SQL Server 에이전트 작업은 작업 복제 기능이 켜져 있을 때 기본 호스트에서 보조 호스트로 복제됩니다. 자세한 내용은 SQL Server 에이전트 작업 복제 켜기을 참조하세요.
-
동기식 데이터 복제로 인해 단일 가용 영역에서 표준 DB 인스턴스 배포와 비교했을 때 지연 시간이 증가할 수 있습니다.
-
장애 조치 시간은 복구 프로세스 완료에 걸리는 시간의 영향을 받습니다. 트랜잭션이 크면 장애 조치 시간이 늘어납니다.
-
SQL Server 다중 AZ 배포에서 장애 조치를 사용하여 재부팅하면 기본 DB 인스턴스만 재부팅됩니다. 장애 조치 후에는 기본 DB 인스턴스가 새 보조 DB 인스턴스가 됩니다. 다중 AZ 인스턴스의 경우 파라미터가 업데이트되지 않을 수 있습니다. 장애 조치 없이 재부팅하는 경우 기본 DB 인스턴스와 보조 DB 인스턴스가 모두 재부팅되고 재부팅된 후 파라미터가 업데이트됩니다. DB 인스턴스가 응답하지 않는 경우 장애 조치 없이 재부팅하는 것이 좋습니다.
다음은 RDS for Microsoft SQL Server DB 인스턴스에서 다중 AZ 배포 작업 시 알아두어야 할 몇 가지 권장 사항입니다.
-
프로덕션 또는 프로덕션 이전 환경에서 사용되는 데이터베이스의 경우 다음 옵션을 권장합니다.
고가용성을 위한 다중 AZ 배포
빠르고 일관적인 성능을 위한 “프로비저닝된 IOPS”
“범용”이 아닌 “메모리 최적화”
-
보조 인스턴스에 대해 가용 영역(AZ)을 선택할 수 없으므로 애플리케이션 호스트를 배포할 경우 이 점을 고려하십시오. 데이터베이스를 다른 AZ로 장애 조치할 수 있으며, 애플리케이션 호스트가 데이터베이스와 다른 AZ에 있을 수도 있습니다. 이러한 이유로 지정된 AWS 리전의 모든 AZ에서 애플리케이션 호스트의 균형을 조정하는 것이 좋습니다.
-
최상의 성능을 위해, 큰 데이터 로드 작업 중에는 데이터베이스 미러링 또는 상시 작동 AG를 활성화하지 마십시오. 데이터 로드를 최대한 빠르게 수행하려면 데이터 로드를 완료한 후에 DB 인스턴스를 다중 AZ 배포로 변환합니다.
-
SQL Server 데이터베이스에 액세스하는 애플리케이션에 연결 오류를 포착하는 예외 처리 기능이 있어야 합니다. 다음 코드 샘플에 통신 오류를 포착하는 try/catch 블록이 표시되어 있습니다. 이 예제에서
break
문은 연결에 성공하면while
루프를 종료하지만 예외가 발생하면 10회까지 다시 시도합니다.int RetryMaxAttempts = 10; int RetryIntervalPeriodInSeconds = 1; int iRetryCount = 0; while (iRetryCount < RetryMaxAttempts) { using (SqlConnection connection = new SqlConnection(DatabaseConnString)) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = "INSERT INTO SOME_TABLE VALUES ('SomeValue');"; try { connection.Open(); command.ExecuteNonQuery(); break; } catch (Exception ex) { Logger(ex.Message); iRetryCount++; } finally { connection.Close(); } } } 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]