가용성 그룹 만들기(SQL Server PowerShell)Create an Availability Group (SQL Server PowerShell)

이 항목에서는 SQL Server 2017SQL Server 2017에서 PowerShell cmdlet을 사용하여 Always On 가용성 그룹을 만들고 구성하는 방법에 대해 설명합니다.This topic describes how to use PowerShell cmdlets to create and configure an Always On availability group by using PowerShell in SQL Server 2017SQL Server 2017. 가용성 그룹 은 단일 단위로 장애 조치(Failover)될 사용자 데이터베이스 집합과 장애 조치(Failover)를 지원하는 장애 조치(Failover) 파트너 집합( 가용성 복제본이라고 함)을 정의합니다.An availability group defines a set of user databases that will fail over as a single unit and a set of failover partners, known as availability replicas, which support failover.

참고

가용성 그룹에 대한 개요를 보려면 Always On 가용성 그룹 개요(SQL Server)에서 PowerShell cmdlet을 사용하여 Always On 가용성 그룹을 만들고 구성하는 방법에 대해 설명합니다.For an introduction to availability groups, see Overview of Always On Availability Groups (SQL Server).

참고

PowerShell cmdlet을 사용하는 대신 가용성 그룹 만들기 마법사나 Transact-SQLTransact-SQL을 사용할 수도 있습니다.As an alternative to using PowerShell cmdlets, you can use the Create Availability Group wizard or Transact-SQLTransact-SQL. 자세한 내용은 새 가용성 그룹 대화 상자 사용(SQL Server Management Studio) 또는 가용성 그룹 만들기(Transact-SQL)에서 PowerShell cmdlet을 사용하여 Always On 가용성 그룹을 만들고 구성하는 방법에 대해 설명합니다.For more information, see Use the New Availability Group Dialog Box (SQL Server Management Studio) or Create an Availability Group (Transact-SQL).

시작하기 전에 Before You Begin

가용성 그룹을 처음 만들어 보는 경우 이 섹션을 먼저 읽는 것이 좋습니다.We strongly recommend that you read this section before attempting to create your first availability group.

필수 구성 요소, 제한 사항 및 권장 사항 Prerequisites, Restrictions, and Recommendations

  • 가용성 그룹을 만들기 전에 SQL ServerSQL Server 의 호스트 인스턴스가 각각 단일 WSFC 장애 조치(Failover) 클러스터 내의 다른 WSFC(Windows Server 장애 조치(Failover) 클러스터링) 노드에 있는지 확인합니다.Before creating an availability group, verify that the host instances of SQL ServerSQL Server each resides on a different Windows Server Failover Clustering (WSFC) node of a single WSFC failover cluster. 또한 해당 서버 인스턴스가 다른 서버 인스턴스의 사전 요구 사항을 충족하는지와 다른 모든 Always On 가용성 그룹Always On availability groups 요구 사항을 충족하는지, 그리고 현재 권장 사항을 알고 있는지 확인합니다.Also, verify that your server instances met the other server-instance prerequisites and that all of the other Always On 가용성 그룹Always On availability groups requirements are meet and that you are aware of the recommendations. 자세한 내용은 Always On 가용성 그룹에 대한 필수 조건, 제한 사항 및 권장 사항(SQL Server)를 참조하세요.For more information, we strongly recommend that you read Prerequisites, Restrictions, and Recommendations for Always On Availability Groups (SQL Server).

보안 Security

사용 권한 Permissions

CREATE AVAILABILITY GROUP 서버 권한, ALTER ANY AVAILABILITY GROUP 권한, CONTROL SERVER 권한 중 하나와 sysadmin 고정 서버 역할의 멤버 자격이 필요합니다.Requires membership in the sysadmin fixed server role and either CREATE AVAILABILITY GROUP server permission, ALTER ANY AVAILABILITY GROUP permission, or CONTROL SERVER permission.

태스크 및 해당 PowerShell cmdlet 요약 Summary of Tasks and Corresponding PowerShell Cmdlets

다음 표에서는 가용성 그룹을 구성하는 데 필요한 기본 태스크와 PowerShell cmdlet이 지원하는 기능을 보여 줍니다.The following table lists the basic tasks involved in configuring an availability group and indicates those that are supported by PowerShell cmdlets. Always On 가용성 그룹Always On availability groups 태스크는 표에 나오는 순서대로 수행해야 합니다.The Always On 가용성 그룹Always On availability groups tasks must be performed in the sequence in which they are presented in the table.

태스크Task PowerShell cmdlet(사용 가능한 경우) 또는 Transact-SQL 문PowerShell Cmdlets (if Available) or Transact-SQL Statement 태스크를 수행할 위치\Where to Perform Task\**
SQL ServerSQL Server 인스턴스당 하나의 데이터베이스 미러링 끝점 만들기Create database mirroring endpoint (once per SQL ServerSQL Server instance) New-SqlHadrEndPointNew-SqlHadrEndPoint 데이터베이스 미러링 끝점이 없는 각 서버 인스턴스에서 실행합니다.Execute on each server instance that lacks database mirroring endpoint.

기존 데이터베이스 미러링 끝점을 변경하려면 Set-SqlHadrEndpoint를 사용합니다.Note: To alter an existing database mirroring endpoint, use Set-SqlHadrEndpoint.
가용성 그룹 만들기Create availability group 먼저 New-SqlAvailabilityReplica cmdlet과 -AsTemplate 매개 변수를 사용하여 가용성 그룹에 포함할 두 개의 각 가용성 복제본에 대한 메모리 내 가용성 복제본 개체를 만듭니다.First, use the New-SqlAvailabilityReplica cmdlet with the -AsTemplate parameter to create an in-memory availability-replica object for each of the two availability replicas that you plan to include in the availability group.

그런 다음 New-SqlAvailabilityGroup cmdlet을 사용하고 가용성 복제본 개체를 참조하여 가용성 그룹을 만듭니다.Then, create the availability group by using the New-SqlAvailabilityGroup cmdlet and referencing your availability-replica objects.
초기 주 복제본을 호스트할 서버 인스턴스에서 실행합니다.Execute on the server instance that is to host the initial primary replica.
가용성 그룹에 보조 복제본 조인Join secondary replica to availability group Join-SqlAvailabilityGroupJoin-SqlAvailabilityGroup 보조 복제본을 호스트할 각 서버 인스턴스에서 실행합니다.Execute on each server instance that is hosts a secondary replica.
보조 데이터베이스 준비Prepare the secondary database Backup-SqlDatabaseRestore-SqlDatabaseBackup-SqlDatabase and Restore-SqlDatabase 주 복제본을 호스트하는 서버 인스턴스에 백업을 만듭니다.Create backups on the server instance that hosts the primary replica.

NoRecovery 복원 매개 변수를 사용하여 보조 복제본을 호스팅하는 각 서버 인스턴스에 백업을 복원합니다.Restore backups on each server instance that hosts a secondary replica, using the NoRecovery restore parameter. 또한 주 복제본을 호스팅하는 컴퓨터와 대상 보조 복제본을 호스팅하는 컴퓨터의 파일 경로가 다른 경우 RelocateFile 복원 매개 변수를 사용합니다.If the file paths differ between the computers that host the primary replica and the target secondary replica, also use the RelocateFile restore parameter.
가용성 그룹에 각 보조 데이터베이스를 조인하여 데이터 동기화 시작Start data synchronization by joining each secondary database to availability group Add-SqlAvailabilityDatabaseAdd-SqlAvailabilityDatabase 보조 복제본을 호스트하는 각 서버 인스턴스에서 실행합니다.Execute on each server instance that hosts a secondary replica.

*지정된 태스크를 수행하려면 표시된 서버 인스턴스로 디렉터리를 변경(cd)합니다.*To perform a given task, change directory (cd) to the indicated server instance or instances.

SQL Server PowerShell 공급자를 설정하고 사용하려면 To Set Up and Use the SQL Server PowerShell Provider

PowerShell을 사용하여 가용성 그룹 만들기 및 구성 Using PowerShell to Create and Configure an Availability Group

참고

특정 cmdlet의 구문 및 예제를 보려면 PowerShell 환경에서 Get-Help SQL ServerSQL Server cmdlet을 사용합니다.To view the syntax and an example of a given cmdlet, use the Get-Help cmdlet in the SQL ServerSQL Server PowerShell environment. 자세한 내용은 Get Help SQL Server PowerShell을 참조하세요.For more information, see Get Help SQL Server PowerShell.

  1. 주 복제본을 호스트할 서버 인스턴스로 디렉터리를 변경(cd)합니다.Change directory (cd) to the server instance that is to host the primary replica.

  2. 주 복제본에 대한 메모리 내 가용성 복제본 개체를 만듭니다.Create an in-memory availability-replica object for the primary replica.

  3. 각 보조 복제본에 대한 메모리 내 가용성 복제본 개체를 만듭니다.Create an in-memory availability-replica object for each of the secondary replicas.

  4. 가용성 그룹을 만듭니다.Create the availability group.

    참고

    가용성 그룹 이름의 최대 길이는 128자입니다.The maximum length for an availability group name is 128 characters.

  5. 새 보조 복제본을 가용성 그룹에 조인합니다.Join the new secondary replica to the availability group. 자세한 내용은 가용성 그룹에 보조 복제본 조인(SQL Server)에서 PowerShell cmdlet을 사용하여 Always On 가용성 그룹을 만들고 구성하는 방법에 대해 설명합니다.For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

  6. 가용성 그룹의 각 데이터베이스에 대해 RESTORE WITH NORECOVERY를 사용하여 주 데이터베이스의 최신 백업을 복원하는 방법으로 보조 데이터베이스를 만듭니다.For each database in the availability group, create a secondary database by restoring recent backups of the primary database, using RESTORE WITH NORECOVERY.

  7. 모든 새 보조 데이터베이스를 가용성 그룹에 조인합니다.Join every new secondary database to the availability group. 자세한 내용은 가용성 그룹에 보조 복제본 조인(SQL Server)에서 PowerShell cmdlet을 사용하여 Always On 가용성 그룹을 만들고 구성하는 방법에 대해 설명합니다.For more information, see Join a Secondary Replica to an Availability Group (SQL Server).

  8. 필요한 경우 Windows dir 명령을 사용하여 새 가용성 그룹의 내용을 확인합니다.Optionally, use the Windows dir command to verify the contents of the new availability group.

참고

서버 인스턴스의 SQL ServerSQL Server 서비스 계정이 다른 도메인 사용자 계정으로 실행되는 경우에는 각 서버 인스턴스에서 다른 서버 인스턴스에 대한 로그인을 만들고 로컬 데이터베이스 미러링 끝점에 이 로그인 CONNECT 권한을 부여합니다.If the SQL ServerSQL Server service accounts of the server instances run under different domain user accounts, on each server instance, create a login for the other server instance and grant this login CONNECT permission to the local database mirroring endpoint.

예: PowerShell을 사용하여 가용성 그룹 만들기 Example: Using PowerShell to Create an Availability Group

다음 PowerShell 예에서는 가용성 복제본 두 개와 가용성 데이터베이스 한 개가 포함된 MyAG 라는 단순한 가용성 그룹을 만들고 구성합니다.The following PowerShell example creates and configures a simple availability group named MyAG with two availability replicas and one availability database. 예:The example:

  1. MyDatabase 와 해당 트랜잭션 로그를 백업합니다.Backs up MyDatabase and its transaction log.

  2. MyDatabase -NoRecovery 옵션을 사용하여 및 해당 트랜잭션 로그를 복원합니다.Restores MyDatabase and its transaction log, using the -NoRecovery option.

  3. SQL ServerSQL Server 의 로컬 인스턴스에 의해 호스트될 주 복제본의 메모리 내 표현을 만듭니다( PrimaryComputer\Instance).Creates an in-memory representation of the primary replica, which will be hosted by the local instance of SQL ServerSQL Server (named PrimaryComputer\Instance).

  4. SQL ServerSQL Server 인스턴스에 의해 호스트될 보조 복제본의 메모리 내 표현을 만듭니다( SecondaryComputer\Instance).Creates an in-memory representation of the secondary replica, which will be hosted by an instance of SQL ServerSQL Server (named SecondaryComputer\Instance).

  5. MyAG라는 가용성 그룹을 만듭니다.Creates an availability group named MyAG.

  6. 보조 복제본을 가용성 그룹에 조인합니다.Joins the secondary replica to the availability group.

  7. 보조 데이터베이스를 가용성 그룹에 조인합니다.Joins the secondary database to the availability group.

# 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 "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"  

Always On 가용성 그룹에 대한 서버 인스턴스를 구성하려면To configure a server instance for Always On Availability Groups

참고 항목See Also

데이터베이스 미러링 끝점(SQL Server) The Database Mirroring Endpoint (SQL Server)
Always On 가용성 그룹 개요(SQL Server)Overview of Always On Availability Groups (SQL Server)