포함된 가용성 그룹이란?

적용 대상: SQL Server 2022(16.x)

포함된 가용성 그룹은 다음을 지원하는 Always On(가용성 그룹)입니다:

  • 인스턴스 수준 외에도 AG 수준에서 메타데이터 개체(사용자, 로그인, 권한, SQL 에이전트 작업 등)를 관리합니다.

  • AG 내에 포함된 특수 시스템 데이터베이스입니다.

이 문서에서는 포함된 AG의 유사성, 차이점 및 기능에 대해 자세히 설명합니다.

개요

AG는 일반적으로 조정된 그룹으로 작동하기 위한 하나 이상의 사용자 데이터베이스로 구성되며 클러스터의 일부 노드 수에 복제본(replica). 노드에 오류가 발생하거나 주 복사본을 호스트하는 노드의 SQL Server의 상태에 오류가 발생하면 데이터베이스 그룹이 AG의 다른 복제본(replica) 노드로 한 단위로 이동됩니다. 모든 사용자 데이터베이스는 동기 또는 비동기 모드에서 AG의 모든 복제본(replica) 동기화 상태로 유지됩니다.

이는 해당 사용자 데이터베이스 집합과만 상호 작용하는 애플리케이션에서는 잘 작동하지만 애플리케이션이 시스템 데이터베이스(master 또는 msdb) 중 하나에 저장된 사용자, 로그인, 권한, 에이전트 작업 등과 같은 개체도 사용하는 경우에는 문제가 있습니다. 애플리케이션이 원활하고 예측 가능하게 작동하려면 관리자는 AG의 모든 복제본(replica) 인스턴스에서 이러한 개체에 대한 변경 내용이 중복되는지 수동으로 확인해야 합니다. 새 인스턴스를 AG로 가져오는 경우 간단한 프로세스에서 데이터베이스를 자동으로 또는 수동으로 시드할 수 있지만 다른 복제본(replica) 일치하도록 새 인스턴스에서 모든 시스템 데이터베이스 사용자 지정을 다시 구성해야 합니다.

포함된 AG는mastermsdb데이터베이스의 관련 부분을 포함하도록 복제본(replica) 데이터베이스 그룹의 개념을 확장합니다. 포함된 AG를 사용하는 애플리케이션의 실행 컨텍스트로 간주합니다. 포함된 AG 환경에는 해당 설정을 사용하는 애플리케이션에 영향을 주는 설정이 포함되어 있다는 개념입니다. 따라서 포함된 AG 환경은 애플리케이션이 상호 작용하는 모든 데이터베이스, 애플리케이션이 사용하는 인증(로그인, 사용자, 권한), 애플리케이션이 실행할 것으로 예상하는 예약된 작업 및 애플리케이션에 영향을 주는 기타 구성 설정과 관련이 있습니다.

이는 사용자 계정에 다른 메커니즘을 사용하여 데이터베이스 자체 내에 사용자 정보를 저장하는 포함된 데이터베이스와 다릅니다. 포함된 데이터베이스는 로그인 및 사용자만 복제하고 복제된 로그인 또는 사용자의 범위는 해당 단일 데이터베이스(및 해당 복제본)로 제한됩니다.

반면, 포함된 AG에서는 AG 수준에서 사용자, 로그인, 사용 권한 등을 만들 수 있으며 AG의 복제본(replica) 간에 자동으로 일관되고 포함된 AG 내의 데이터베이스 간에 일관성이 유지됩니다. 이렇게 하면 관리자가 수동으로 이러한 변경을 수행할 필요가 없습니다.

차이점

포함된 시스템 데이터베이스를 만들고 인스턴스 수준에서 연결하지 않고 포함된 AG 수준에서 연결을 강제하는 것과 같이 포함된 AG로 작업할 때 고려해야 할 몇 가지 실질적인 차이점이 있습니다.

포함된 시스템 데이터베이스

포함된 AG에는 가용성 그룹의 이름을 따서 명명된 자체mastermsdb 시스템 데이터베이스가 있습니다. 예를 들어 포함된 AGMyContainedAG에는 이름이 지정된MyContainedAG_masterMyContainedAG_msdb라는 데이터베이스가 있습니다. 이러한 시스템 데이터베이스는 새 복제본에 자동으로 시드되고 업데이트는 가용성 그룹의 다른 데이터베이스와 마찬가지로 이러한 데이터베이스에 복제됩니다. 즉, 포함된 AG에 연결된 동안 로그인 또는 에이전트 작업과 같은 개체를 추가할 때 포함된 AG가 다른 인스턴스로 장애 조치(fail over)되어 포함된 AG에 연결되면 에이전트 작업이 계속 표시되고 포함된 AG에서 만든 로그인을 사용하여 인증할 수 있습니다.

중요

포함된 AG는 가용성 그룹의 복제본(replica) 실행 환경 구성을 일관되게 유지하는 메커니즘입니다. 보안 경계를 나타내지 않습니다. 예를 들어 포함된 AG에 대한 연결이 AG 외부의 데이터베이스에 액세스하지 못하도록 하는 경계는 없습니다.

새로 만든 포함된 AG의 시스템 데이터베이스는 CREATE AVAILABILITY GROUP명령이 실행되는 인스턴스 CREATE AVAILABILITY GROUP의 복사본이 아닙니다. 처음에는 데이터가 없는 빈 템플릿입니다. 만든 직후 포함된 AG를 만드는 인스턴스의 관리자 계정이 포함된 AG master에 복사됩니다. 이렇게 하면 관리자가 포함된 AG에 로그인하고 나머지 구성을 설정할 수 있습니다. 인스턴스에서 로컬 사용자 또는 구성을 만드는 경우 포함된 시스템 데이터베이스를 만들 때 자동으로 표시되지 않으며 포함된 AG에 연결할 때 표시되지 않습니다. 포함된 AG의 컨텍스트 내에서 포함된 시스템 데이터베이스에서 수동으로 다시 만들어야 합니다. 예외는 부모 인스턴스의 sysadmin 역할에 있는 모든 로그인이 새 AG 특정master 데이터베이스에 복사된다는 것입니다.

포함된 시스템 데이터베이스 복원

두 가지 방법 중 하나를 사용하여 포함된 시스템 데이터베이스를 복원할 수 있습니다.

  • 보조 복제본(replica): 사용하여 포함된 데이터베이스를 복원합니다

    1. 포함된master 데이터베이스와 msdb 데이터베이스를 모든 복원 작업RESTORE WITH NORECOVERY에 사용하여 보조 복제본(replica) 호스트하는 서버 인스턴스로 복원합니다. 자세한 내용은 Always On 가용성 그룹에 대한 보조 데이터베이스 준비를 참고해 주세요.

    2. 포함된 각 데이터베이스를 가용성 그룹에 조인합니다. 자세한 내용은 가용성 그룹에 보조 데이터베이스 조인을 참조하세요.

  • 포함된 AG를 삭제하여 포함된 데이터베이스를 복원합니다:

    1. 포함된 AG를 삭제합니다.

    2. 포함된 AG에 참여하는 각 인스턴스에서 포함된 master 데이터베이스와 msdb 데이터베이스를 복원합니다.

    3. WITH (CONTAINED, REUSE_SYSTEM_DATABASES) 구문을 사용하여 원래 노드 및 이름을 사용하여 포함된 AG를 다시 만듭니다.

커넥트(포함된 환경)

인스턴스에 연결하고 포함된 AG에 연결하는 것의 차이를 구분하는 것이 중요합니다. 포함된 AG의 환경에 액세스하는 유일한 방법은 포함된 AG 수신기에 연결하거나 포함된 AG에 있는 데이터베이스에 연결하는 것입니다.

"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=MyContainedDatabase;
Server=MyServer;"

여기서 MyContainedDatabase 은 상호 작용하려는 것이 포함된 AG 내의 데이터베이스입니다.

즉, 포함된 AG를 효과적으로 사용하려면 포함된 AG에 대한 수신기를 만들어야 합니다. 수신기를 통해 포함된 AG에 직접 연결하지 않고 포함된 AG를 호스팅하는 인스턴스하나에 연결하는 경우 포함된 AG가 아닌 인스턴스의 환경에 있는 것입니다.

예를 들어 가용성 그룹MyContainedAG이 서버SERVER\MSSQLSERVER에서 호스트 되고 수신기MyContainedAG_Listener에 연결하는 대신 인스턴스에 연결하는SERVER\MSSQLSERVER 경우 인스턴스 환경에 있고 환경MyContainedAG이 아닙니다. 즉, 인스턴스의 시스템 데이터베이스에 있는 콘텐츠(사용자, 권한, 작업 등)가 적용됩니다. 포함된 AG의 포함된 시스템 데이터베이스에 있는 콘텐츠에 액세스하려면 포함된 AG 수신기(MyContainedAG_Listener, 예)에 연결합니다. 포함된 AG 수신기를 통해 인스턴스에 연결된 경우 상호master 작용할 때 실제로 포함된 master데이터베이스(예: MyContainedAG_master)로 리디렉션됩니다.

읽기 전용 라우팅 및 포함된 가용성 그룹

읽기 의도가 있는 연결을 보조 복제본(replica)으로 리디렉션하도록 읽기 전용 라우팅을 구성하고(Always On 가용성 그룹에 대한 읽기 전용 라우팅 구성을 참조해 주세요) 포함된 AG에서만 만든 로그인을 사용하여 연결하려는 경우 다음과 같은 몇 가지 추가 고려 사항이 있습니다:

  • 연결 문자열에 포함된 AG의 일부인 데이터베이스를 지정해야 합니다
  • 연결 문자열에 지정된 사용자는 포함된 AG의 데이터베이스에 액세스할 수 있는 권한이 있어야 합니다.

예를 들면 다음 연결 문자열에서 AdventureWorksMyContainedListener가 포함된 포함된 AG 내의 데이터베이스이고, MyUser은 포함된 AG에 정의된 사용자이며 참여하는 인스턴스는 없습니다:

"Persist Security Info=False;
User ID=MyUser;Password=*****;
Initial Catalog=AdventureWorks;
Server=MyContainedListener;
ApplicationIntent=ReadOnly"

이 연결 문자열을 ReaOnly 라우팅 구성의 일부인 읽기 가능한 보조 데이터베이스에 연결되고 포함된 AG의 컨텍스트 내에 있게 됩니다.

인스턴스에 연결과 포함된 가용성 그룹에 연결의 차이점

  • 포함된 AG에 연결될 때 사용자는 포함된 AG의 데이터베이스와 tempdb만 표시됩니다.
  • 인스턴스 수준에서 포함된 AGmaster과 이름 msdb[contained AG]_master[contained AG]_msdb입니다. 포함된 AG 내에서 해당 이름은 다음과 같습니다mastermsdb.
  • 포함된 AG master데이터베이스 ID는 포함된 AG 내부1에서 가져오지만 인스턴스에 연결할 때는 다른 ID입니다.
  • 포함된 AG 연결에 sys.databases연결된 경우 포함된 AG 외부의 데이터베이스는 표시되지 않지만, 세 부분으로 구성된 이름 또는 USE명령을 통해 해당 데이터베이스에 엑세스할 수 있습니다.
  • 서버 구성을 통해 sp_configuresp_configure 연결된 경우 AG 연결에서 읽을 수 있지만 인스턴스 수준에서만 작성할 수 있습니다.
  • 포함된 AG 연결에서 sysadmin은 SQL Server 종료와 같은 인스턴스 수준 작업을 수행할 수 있습니다.
  • 대부분의 데이터베이스 수준, 엔드포인트 수준 또는 AG 수준 작업은 AG 연결이 포함되지 않은 인스턴스 연결에서만 수행할 수 있습니다.

다른 기능과의 상호 작용

포함된 AG에서 특정 기능을 사용하는 경우 추가 고려 사항이 있으며 현재 지원되지 않는 몇 가지 기능이 있습니다.

지원되지 않음

현재 다음 SQL Server 기능은 포함된 AG에서 지원되지 않습니다:

  • 모든 유형(트랜잭션, 병합, 스냅샷 등)의 SQL Server 복제.
  • 분산된 가용성 그룹.
  • 대상 데이터베이스가 포함된 AG에 있는 로그 전달입니다. 포함된 AG의 원본 데이터베이스를 사용한 로그 전달이 지원됩니다.

변경 데이터 캡처

CDC(변경 데이터 캡처)는 SQL 에이전트 작업으로 구현되므로 SQL 에이전트는 포함된 AG의 복제본(replica) 있는 모든 인스턴스에서 실행되어야 합니다.

포함된 AG와 함께 변경 데이터 캡처를 사용하려면 CDC를 구성할 때 AG 수신기에 연결하여 CDC 메타데이터가 포함된 시스템 데이터베이스를 사용하여 구성되도록 합니다.

로그 전달

원본 데이터베이스가 포함된 AG에 있는 경우 로그 전달을 구성할 수 있습니다. 그러나 로그 전달 대상은 포함된 AG 내에서 지원되지 않습니다. 또한 CDC가 구성된 후 로그 전달 작업을 수정하는 추가 단계가 있습니다.

포함된 AG를 사용하여 로그 전달을 구성하려면 다음 단계를 수행합니다:

  1. 포함된 AG 수신기에 커넥트.
  2. 평소와 같이 로그 전달을 구성합니다.
  3. 로그 전달 작업을 구성한 후 백업을 수행하기 전에 포함된 AG 수신기에 연결하여 작업을 변경합니다.

TDE(투명한 데이터 암호화)

포함된 AG의 데이터베이스에서 TDE(투명한 데이터 암호화)를 사용하려면 포함된 AG 내의 포함된master 데이터베이스에 DMK(데이터베이스 마스터 키)를 수동으로 설치합니다.

TDE를 사용하는 데이터베이스는 master 데이터베이스의 인증서를 사용하여 DEK(데이터베이스 암호화 키)의 암호를 해독합니다. 이 인증서가 없으면 SQL Server는 TDE로 암호화된 데이터베이스의 암호를 해독하거나 온라인 상태로 만들 수 없습니다. 포함된 AG에서 SQL Server는 DMK에 대한 master데이터베이스, 인스턴스의 master데이터베이스 및 포함된 AG 내의 포함된 데이터베이스를 모두 검사 master데이터베이스의 암호를 해독합니다. 어느 위치에서든 인증서를 찾을 수 없는 경우 SQL Server에서 데이터베이스를 온라인 상태로 만들 수 없습니다.

인스턴스의 master 데이터베이스에서 포함된 master데이터베이스로 DMK를 전송하려면 TDE 보호 데이터베이스를 다른 SQL Server로 이동을 참조해 주세요. 주로 DMK가 이전 서버에서 새 서버로 전송되는 부분에 중점을 두어야 합니다.

SSIS 패키지 및 기본 테넌트 계획

기본 테넌트 계획을 포함한 SSIS 패키지 사용은 포함된 가용성 그룹에서 지원되지 않습니다.

DDL 변경 내용

유일한 DDL 변경 내용은 CREATE AVAILABILITY GROUP워크플로에 있습니다. 두 개의 새로운 WITHWITH 절이 있습니다:

<with_option_spec> ::=
CONTAINED |
REUSE_SYSTEM_DATABASES

포함

이렇게 하면 생성되는 AG가 포함된 AG여야 합니다.

REUSE_SYSTEM_DATABASES

이 옵션은 포함된 AG에 대해서만 유효하며, 새로 만든 AG가 동일한 이름의 이전에 포함된 AG에 대해 포함된 기존 시스템 데이터베이스를 다시 사용하도록 지정합니다. 예를 들어 이름MyContainedAG이 MyContainedAG 포함된 AG가 있고 삭제하고 다시 만들려는 경우 이 옵션을 사용하여 원래 포함된 시스템 데이터베이스의 내용을 다시 사용할 수 있습니다.

DMV 변경 내용

포함된 AG와 관련된 두 가지 DMV가 추가되었습니다:

  • DMV sys.dm_exec_sessions 에는 추가된 열contained_availability_group_id이 있습니다:
  • sys.availability_groups카탈로그 뷰에 추가된 열is_contained이 있습니다: