가용성 그룹 만들기(SQL Server PowerShell)

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

[!참고]

가용성 그룹에 대한 개요를 보려면 AlwaysOn 가용성 그룹 개요(SQL Server)를 참조하십시오.

  • 시작하기 전 주의 사항 

    사전 요구 사항, 제한 사항 및 권장 사항

    보안

    태스크 및 해당 PowerShell cmdlet 요약

    SQL Server PowerShell 공급자를 설정하고 사용하려면

  • 가용성 그룹을 만들고 구성하려면:  PowerShell을 사용하여 가용성 그룹 만들기 및 구성

  • 예: PowerShell을 사용하여 가용성 그룹 만들기

  • 관련 태스크

  • 관련 내용

[!참고]

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

시작하기 전 주의 사항

가용성 그룹을 처음 만들어 보는 경우 이 섹션을 먼저 읽는 것이 좋습니다.

사전 요구 사항, 제한 사항 및 권장 사항

  • 가용성 그룹을 만들기 전에 SQL Server의 호스트 인스턴스가 각각 단일 WSFC 장애 조치(Failover) 클러스터 내의 다른 WSFC(Windows Server 장애 조치(Failover) 클러스터링) 노드에 있는지 확인합니다. 또한 해당 서버 인스턴스가 다른 서버 인스턴스의 사전 요구 사항을 충족하는지와 다른 모든 AlwaysOn 가용성 그룹 요구 사항을 충족하는지, 그리고 현재 권장 사항을 알고 있는지 확인합니다. 자세한 내용은 온라인 설명서의 AlwaysOn 가용성 그룹(SQL Server)에 대한 사전 요구 사항, 제한 사항 및 권장 사항을 읽어 보십시오.

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

보안

사용 권한

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

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

태스크 및 해당 PowerShell cmdlet 요약

다음 표에서는 가용성 그룹을 구성하는 데 필요한 기본 태스크와 PowerShell cmdlet이 지원하는 기능을 보여 줍니다. AlwaysOn 가용성 그룹 태스크는 표에 나오는 순서대로 수행해야 합니다.

태스크

PowerShell cmdlet(사용 가능한 경우) 또는 Transact-SQL 문

태스크를 수행할 위치*

SQL Server 인스턴스당 하나의 데이터베이스 미러링 끝점 만들기

New-SqlHadrEndPoint

데이터베이스 미러링 끝점이 없는 각 서버 인스턴스에서 실행합니다.

[!참고]

기존 데이터베이스 미러링 끝점을 변경하려면 Set-SqlHadrEndpoint를 사용합니다.

가용성 그룹 만들기

먼저 New-SqlAvailabilityReplica cmdlet과 -AsTemplate 매개 변수를 사용하여 가용성 그룹에 포함할 두 개의 각 가용성 복제본에 대한 메모리 내 가용성 복제본 개체를 만듭니다.

그런 다음 New-SqlAvailabilityGroup cmdlet을 사용하고 가용성 복제본 개체를 참조하여 가용성 그룹을 만듭니다.

초기 주 복제본을 호스트할 서버 인스턴스에서 실행합니다.

가용성 그룹에 보조 복제본 조인

Join-SqlAvailabilityGroup

보조 복제본을 호스트할 각 서버 인스턴스에서 실행합니다.

보조 데이터베이스 준비

Backup-SqlDatabase 및 Restore-SqlDatabase

주 복제본을 호스트하는 서버 인스턴스에 백업을 만듭니다.

NoRecovery 복원 매개 변수를 사용하여 보조 복제본을 호스팅하는 각 서버 인스턴스에 백업을 복원합니다. 또한 주 복제본을 호스팅하는 컴퓨터와 대상 보조 복제본을 호스팅하는 컴퓨터의 파일 경로가 다른 경우 RelocateFile 복원 매개 변수를 사용합니다.

가용성 그룹에 각 보조 데이터베이스를 조인하여 데이터 동기화 시작

Add-SqlAvailabilityDatabase

보조 복제본을 호스트하는 각 서버 인스턴스에서 실행합니다.

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

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

SQL Server PowerShell 공급자를 설정하고 사용하려면

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

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

[!참고]

특정 cmdlet의 구문 및 예를 보려면 SQL Server PowerShell 환경에서 Get-Help cmdlet을 사용합니다. 자세한 내용은 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 권한을 부여합니다.

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

예를 들어 PowerShell을 사용하여 가용성 그룹 만들기

다음 PowerShell 예에서는 가용성 복제본 두 개와 가용성 데이터베이스 한 개가 포함된 MyAG라는 단순한 가용성 그룹을 만들고 구성합니다. 예:

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

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

  3. SQL Server의 로컬 인스턴스에 의해 호스트될 주 복제본의 메모리 내 표현을 만듭니다(PrimaryComputer\Instance).

  4. SQL Server 인스턴스에 의해 호스트될 보조 복제본의 메모리 내 표현을 만듭니다(SecondaryComputer\Instance).

  5. MyAG라는 가용성 그룹을 만듭니다.

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

  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 11 `
    -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 11 `
    -AsTemplate

# Create the availability group
New-SqlAvailabilityGroup `
    -Name "MyAG" `
    -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 "MyAG"

# Join the secondary database to the availability group.
Add-SqlAvailabilityDatabase -Path "SQLSERVER:\SQL\SecondaryComputer\Instance\AvailabilityGroups\MyAG" -Database "MyDatabase"

관련 태스크

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

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

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

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

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

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

관련 내용

맨 위 링크와 함께 사용되는 화살표 아이콘[Top]

참고 항목

개념

데이터베이스 미러링 끝점(SQL Server)

AlwaysOn 가용성 그룹 개요(SQL Server)