PowerShell을 사용하여 Always On 가용성 그룹을 만들기

적용 대상:SQL Server

이 항목에서는 PowerShell cmdlet을 사용하여 Always On 가용성 그룹을 만들고 구성하는 방법에 관해 설명합니다. 가용성 그룹은 단일 단위로 장애 조치(failover)할 사용자 데이터베이스 집합과 장애 조치(failover)를 지원하는 가용성 복제본(replica)이라고 알려진 장애 조치(failover) 파트너 집합을 정의합니다.

참고 항목

가용성 그룹에 대한 소개는 Always On 가용성 그룹 개요(SQL Server)를 참조하세요.

참고 항목

PowerShell cmdlet을 사용하는 대신 가용성 그룹 만들기 마법사나 Transact-SQL을 사용할 수도 있습니다. 자세한 내용은 새 가용성 그룹 대화 상자 사용(SQL Server Management Studio) 또는 가용성 그룹 만들기(Transact-SQL)를 참조해 주세요.

시작하기 전에

필수 구성 요소, 제한 사항 및 권장 사항

  • 가용성 그룹을 만들기 이전에 SQL Server의 호스트 인스턴스가 각각 단일 WSFC 장애 조치(failover) 클러스터의 다른 WSFC(Windows Server 장애 조치 클러스터링) 노드에 있는지 확인합니다. 또한 서버 인스턴스가 다른 서버 인스턴스의 필수 구성 요소를 충족하고 있으며 다른 모든 Always On 가용성 그룹의 요구 사항이 충족되면서 권장 사항도 알고 있는지 확인합니다. 자세한 내용은 Always On 가용성 그룹 필수 구성 요소, 제한 사항 및 권장 사항(SQL Server)을 참조하세요.

사용 권한

CREATE AVAILABILITY GROUP 서버 권한, ALTER ANY AVAILABILITY GROUP 권한, CONTROL SERVER 권한 중 하나와 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.

PowerShell을 사용하여 가용성 그룹을 만들기 및 구성

다음 표에서는 가용성 그룹 구성과 관련된 기본 작업을 나열하고 PowerShell cmdlet에서 지원하는 작업을 나타냅니다. Always On 가용성 그룹 작업은 테이블에 표시되는 순서대로 실행해야 합니다.

작업 PowerShell cmdlet(사용 가능한 경우) 또는 Transact-SQL 문 태스크를 실행할 위치
데이터베이스 미러 엔드포인트 만들기(SQL Server 인스턴스당 한 번) New-SqlHadrEndPoint 데이터베이스 미러링 엔드포인트가 없는 각 서버 인스턴스에서 실행합니다.

기존 데이터베이스 미러링 엔드포인트를 변경하려면 Set-SqlHadrEndpoint를 사용합니다.
가용성 그룹 만들기 먼저 -AsTemplate 매개 변수와 함께 New-SqlAvailabilityReplica cmdlet을 사용하여 가용성 그룹에 포함하고자 하는 두 개의 각 가용성 복제본(replica) 각각에 대한 메모리 내 가용성 복제본(replica) 개체를 만듭니다.

그런 다음 New-SqlAvailabilityGroup cmdlet을 사용하고 가용성 복제본 개체를 참조하여 가용성 그룹을 만듭니다.
초기 주 복제본(replica)을 호스팅하는 서버 인스턴스에 연결합니다.
가용성 그룹에 보조 복제본 조인 Join-SqlAvailabilityGroup 보조 복제본(replica)을 호스팅하는 각 서버 인스턴스에서 실행합니다.
보조 데이터베이스 준비 Backup-SqlDatabaseRestore-SqlDatabase 주 복제본을 호스트하는 서버 인스턴스에 백업을 만듭니다.

NoRecovery 복원 매개 변수를 사용하여 보조 복제본을 호스팅하는 각 서버 인스턴스에 백업을 복원합니다. 또한 주 복제본을 호스팅하는 컴퓨터와 대상 보조 복제본을 호스팅하는 컴퓨터의 파일 경로가 다른 경우 RelocateFile 복원 매개 변수를 사용합니다.
각 보조 데이터베이스를 가용성 그룹에 조인하여 데이터 동기화 시작 Add-SqlAvailabilityDatabase 보조 복제본(replica) 호스트하는 각 서버 인스턴스에서 실행합니다.

참고

지정된 태스크를 수행하려면 표시된 서버 인스턴스로 디렉터리를 변경(cd)합니다.

PowerShell 사용하기

SQL Server PowerShell 공급자를 설정하고 사용합니다.

참고

지정된 cmdlet의 구문 및 예제를 보기 위해서는 SQL Server PowerShell 환경에서 Get-Help SQL Server cmdlet을 사용합니다. 자세한 내용은 Get Help SQL Server PowerShell을 참조해 주세요.

  1. 주 복제본을 호스트하는 서버 인스턴스로 디렉터리(cd)를 변경합니다.

  2. 주 복제본에 대한 메모리 내 가용성 복제본 개체를 만듭니다.

  3. 각 보조 복제본에 대한 메모리 내 가용성 복제본 개체를 만듭니다.

  4. 가용성 그룹을 만듭니다.

    참고 항목

    가용성 그룹 이름의 최대 길이는 128자입니다.

  5. 새 보조 복제본을 가용성 그룹에 조인합니다. 가용성 그룹에 보조 복제본 조인(SQL Server)을 참조하세요.

  6. 가용성 그룹의 각 데이터베이스에 대해 RESTORE WITH NORECOVERY를 사용하여 주 데이터베이스의 최근 백업을 복원하여 보조 데이터베이스를 만듭니다.

  7. 새 보조 데이터베이스를 가용성 그룹에 모두 조인합니다. 가용성 그룹에 보조 복제본 조인(SQL Server)을 참조해 주세요.

  8. (선택 사항) Windows dir 명령을 사용해서 새 가용성 그룹의 내용을 확인합니다.

참고

서버 인스턴스의 SQL Server 서비스 계정이 서로 다른 계정의 사용자 계정으로 실행되는 경우 각 서버 인스턴스에서 다른 서버 인스턴스에 대한 로그인을 생성하고 이 로그인 CONNECT 권한을 로컬 데이터베이스 미러링 엔드포인트에 부여합니다.

예시

다음 PowerShell 예제에서는 두 개의 가용성 복제본(replica)과 한 개의 가용성 데이터베이스를 사용해서 명명된<myAvailabilityGroup> 간단한 가용성 그룹을 만들고 구성합니다. 예:

  1. <myDatabase> 와 해당 트랜잭션 로그를 백업합니다.

  2. <myDatabase> -NoRecovery 옵션을 사용하여 및 해당 트랜잭션 로그를 복원합니다.

  3. SQL Server의 로컬 인스턴스(명명된 PrimaryComputer\Instance)에서 호스팅할 주 복제본(replcica)의 메모리 내 표현을 만듭니다.

  4. SQL Server의 인스턴스(명명된 SecondaryComputer\Instance)에서 호스팅할 보조 복제본(replica) 메모리 내 표현을 만듭니다.

  5. 명명된 <myAvailabilityGroup>라는 가용성 그룹을 만듭니다.

  6. 보조 복제본(replica)을 가용성 그룹에 조인합니다.

  7. 보조 데이터베이스를 가용성 그룹에 조인합니다.

# Backup my database and its log on the primary  
Backup-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.bak" `  
    -ServerInstance "PrimaryComputer\Instance"  
  
Backup-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.log" `  
    -ServerInstance "PrimaryComputer\Instance" `  
    -BackupAction Log   
  
# Restore the database and log on the secondary (using NO RECOVERY)  
Restore-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.bak" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -NoRecovery  
  
Restore-SqlDatabase `  
    -Database "<myDatabase>" `  
    -BackupFile "\\share\backups\<myDatabase>.log" `  
    -ServerInstance "SecondaryComputer\Instance" `  
    -RestoreAction Log `  
    -NoRecovery  
  
# Create an in-memory representation of the primary replica.  
$primaryReplica = New-SqlAvailabilityReplica `  
    -Name "PrimaryComputer\Instance" `  
    -EndpointURL "TCP://PrimaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  
  
# Create an in-memory representation of the secondary replica.  
$secondaryReplica = New-SqlAvailabilityReplica `  
    -Name "SecondaryComputer\Instance" `  
    -EndpointURL "TCP://SecondaryComputer.domain.com:5022" `  
    -AvailabilityMode "SynchronousCommit" `  
    -FailoverMode "Automatic" `  
    -Version 12 `  
    -AsTemplate  
  
# Create the availability group  
New-SqlAvailabilityGroup `  
    -Name "<myAvailabilityGroup>" `  
    -Path "SQLSERVER:\SQL\PrimaryComputer\Instance" `  
    -AvailabilityReplica @($primaryReplica,$secondaryReplica) `  
    -Database "<myDatabase>"  
  
# Join the secondary replica to the availability group.  
Join-SqlAvailabilityGroup -Path "SQLSERVER:\SQL\SecondaryComputer\Instance" -Name "<myAvailabilityGroup>"  
  
# Join the secondary database to the availability group.  
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\<myAvailabilityGroup>" -Database "<myDatabase>"  

관련 작업

Always On 가용성 그룹에 대한 서버 인스턴스를 구성하려면

가용성 그룹 및 복제본(replica) 속성을 구성하려면

가용성 그룹 구성을 완료하려면

가용성 그룹을 만드는 다른 방법

Always On 가용성 그룹 구성 문제를 해결하려면

관련 내용

참고 항목

데이터베이스 미러링 엔드포인트(SQL Server)
Always On 가용성 그룹 개요(SQL Server)