New-SqlAvailabilityGroup
가용성 그룹을 만듭니다.
구문
New-SqlAvailabilityGroup
-AvailabilityReplica <AvailabilityReplica[]>
[-Database <String[]>]
[-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
[-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
[-HealthCheckTimeout <Int32>]
[-BasicAvailabilityGroup]
[-ContainedAvailabilityGroup]
[-ReuseSystemDatabases]
[-DatabaseHealthTrigger]
[-DtcSupportEnabled]
[-ClusterType <AvailabilityGroupClusterType>]
[-RequiredSynchronizedSecondariesToCommit <Int32>]
[-Name] <String>
[[-Path] <String>]
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
New-SqlAvailabilityGroup
-AvailabilityReplica <AvailabilityReplica[]>
[-Database <String[]>]
[-AutomatedBackupPreference <AvailabilityGroupAutomatedBackupPreference>]
[-FailureConditionLevel <AvailabilityGroupFailureConditionLevel>]
[-HealthCheckTimeout <Int32>]
[-BasicAvailabilityGroup]
[-ContainedAvailabilityGroup]
[-ReuseSystemDatabases]
[-DatabaseHealthTrigger]
[-DtcSupportEnabled]
[-ClusterType <AvailabilityGroupClusterType>]
[-RequiredSynchronizedSecondariesToCommit <Int32>]
[-Name] <String>
[-InputObject] <Server>
[-Script]
[-AccessToken <PSObject>]
[-TrustServerCertificate]
[-HostNameInCertificate <String>]
[-Encrypt <String>]
[-ProgressAction <ActionPreference>]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
New-SqlAvailabilityGroup cmdlet은 Always On 가용성 그룹에 가용성 그룹을 만듭니다.
InputObject 또는 Path 매개 변수는 초기 주 복제본을 호스트하는 서버를 지정합니다.
Module requirements: version 21+ on PowerShell 5.1; version 22+ on PowerShell 7.x.
예제
예제 1: 가용성 그룹 만들기
PS C:\> $PrimaryServer = Get-Item "SQLSERVER:\SQL\PrimaryServer\Instance22"
PS C:\> $SecondaryServer = Get-Item "SQLSERVER:\SQL\SecondaryServer\Instance22"
PS C:\> $PrimaryReplica = New-SqlAvailabilityReplica -Name "PrimaryServer\Instance22" -EndpointUrl "TCP://PrimaryServer.domain:5022" -FailoverMode "Automatic" -AvailabilityMode "SynchronousCommit" -AsTemplate -Version ($PrimaryServer.Version)
PS C:\> $SecondaryReplica = New-SqlAvailabilityReplica -Name "SecondaryServer\Instance22" -EndpointUrl "TCP://SecondaryServer.domain:5022" -FailoverMode "Automatic" -AvailabilityMode "SynchronousCommit" -AsTemplate -Version ($SecondaryServer.Version)
PS C:\> New-SqlAvailabilityGroup -InputObject $PrimaryServer -Name "MainAG" -AvailabilityReplica ($PrimaryReplica, $SecondaryReplica) -Database @("Database01","Database02")
첫 번째 명령은 주 서버에서 SQL Server 인스턴스를 가져오고 $PrimaryServer 변수에 저장합니다.
네 번째 명령은 New-SqlAvailabilityReplica를 사용하여 보조 서버 인스턴스를 포함하는 복제본을 만든 다음 $SecondaryReplica 변수에 저장합니다.
이 명령은 $SecondaryServer Version 속성을 사용하여 서버 인스턴스의 버전을 지정합니다.
예제 2: WSFC에서 지원되는 가용성 그룹 만들기
# Get server
PS C:\> cd 'SQLSERVER:\SQL\some-hostname\Default'
PS SQLSERVER:\SQL\some-hostname\Default> $server = Get-Item $PWD
# Create primary replica
PS SQLSERVER:\SQL\some-hostname\Default> $primaryReplica = New-SqlAvailabilityReplica -Name 'some-hostname' -EndpointUrl 'tcp://some-hostname:5022' -FailoverMode Automatic -AvailabilityMode SynchronousCommit -AsTemplate
# Create AG with explicit cluster type WSFC (same as not passing -ClusterType, since it is the default value)
PS SQLSERVER:\SQL\some-hostname\Default> $server | New-SqlAvailabilityGroup -Name 'ag1' -AvailabilityReplica $PrimaryReplica -Script -ClusterType Wsfc
예제 3: 독립 가용성 그룹 클러스터 만들기
# Get server
PS C:\> CD 'SQLSERVER:\SQL\some-hostname\Default'
PS SQLSERVER:\SQL\some-hostname\Default> $server = Get-Item $PWD
# Create primary replica
PS SQLSERVER:\SQL\some-hostname\Default> $primaryReplica = New-SqlAvailabilityReplica -Name 'some-hostname' -EndpointUrl 'tcp://some-hostname:5022' -FailoverMode Automatic -AvailabilityMode SynchronousCommit -AsTemplate
# Create AG cluster group independent
PS SQLSERVER:\SQL\some-hostname\Default> $server | New-SqlAvailabilityGroup -Name 'ag1' -AvailabilityReplica $PrimaryReplica -Script -ClusterType None
예제 4: 주 복제본에서 트랜잭션을 커밋하는 데 사용할 수 있어야 하는 SYNCHRONOUS_COMMIT 보조 복제본 수를 설정하는 가용성 그룹 만들기
# Get server
PS C:\> Get-Item 'SQLSERVER:\SQL\some-hostname\Default'
# Create primary replica
PS C:\> $primaryReplica = New-SqlAvailabilityReplica -Name 'some-hostname' -EndpointUrl 'tcp://some-hostname:5022' -FailoverMode Automatic -AvailabilityMode SynchronousCommit -AsTemplate
# Create AG with RequiredSynchronizedSecondariesToCommit = 3
PS C:\> $server | New-SqlAvailabilityGroup -Name 'ag1' -AvailabilityReplica $PrimaryReplica -RequiredSynchronizedSecondariesToCommit 3
참고: 대상 서버 버전이 SQL Server 2016 이하일 때 -RequiredSynchronizedSecondariesToCommit 매개 변수를 사용하는 경우 예외가 throw됩니다.
매개 변수
-AccessToken
사용자/암호 또는 Windows 인증 대신 SQL Server에 인증하는 데 사용되는 액세스 토큰입니다.
예를 들어 Service Principal
또는 Managed Identity
사용하여 SQL Azure DB
연결하고 SQL Azure Managed Instance
데 사용할 수 있습니다.
사용할 매개 변수는 토큰을 나타내는 문자열이거나 Get-AzAccessToken -ResourceUrl https://database.windows.net
실행하여 반환된 PSAccessToken
개체일 수 있습니다.
이 매개 변수는 모듈의 v22에서 새로 생성됩니다.
형식: | PSObject |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-AutomatedBackupPreference
가용성 그룹에 대한 자동화된 백업 기본 설정을 지정합니다.
이 매개 변수에 허용되는 값은 다음과 같습니다.
- 본래의. 백업이 항상 주 복제본에서 수행되도록 지정합니다. 이 옵션은 차등 백업과 같은 보조 복제본에서 백업을 실행할 때 사용할 수 없는 기능을 사용할 수 있도록 지원합니다.
- SecondaryOnly. 주 복제본에서 백업이 수행되지 않도록 지정합니다. 주 복제본이 온라인의 유일한 복제본인 경우 백업이 발생하지 않습니다.
- 보조. 주 복제본이 온라인의 유일한 복제본이 아닌 한 보조 복제본에서 백업이 수행되도록 지정합니다. 그런 다음 주 복제본에서 백업이 수행됩니다.
- 없음. 백업을 수행하는 복제본을 결정할 때 주 또는 보조 상태가 고려되지 않도록 지정합니다. 대신 백업 우선 순위 및 온라인 상태에 따라 백업을 수행하는 복제본이 결정됩니다.
형식: | AvailabilityGroupAutomatedBackupPreference |
허용되는 값: | Primary, SecondaryOnly, Secondary, None, Unknown |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-AvailabilityReplica
이 cmdlet이 가용성 그룹에 포함하는 가용성 복제본의 배열을 지정합니다. AvailabilityReplica가져오려면 New-SqlAvailabilityReplica cmdlet을 사용합니다. AsTemplate 매개 변수를 지정합니다.
형식: | AvailabilityReplica[] |
Position: | Named |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-BasicAvailabilityGroup
advanced
(기본값) 또는 basic
가용성 그룹을 만들지 여부를 지정합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-ClusterType
AG를 지원하는 클러스터의 유형입니다. 가능한 값은 다음과 같습니다.
- Wsfc. AG는 Windows Server 장애 조치(failover) 클러스터에 통합됩니다. 이것이 SQL Server 2016 이하의 AG를 만드는 방법입니다. 기본값입니다.
- 없음. AG는 클러스터 독립적입니다.
- 외부. AG는 Linux의 Pacemaker와 같이 Windows Server 장애 조치(failover) 클러스터가 아닌 클러스터 관리자에 의해 관리됩니다. SQL Server 2017 이상에서 지원됩니다. Linux에서 SQL Server를 대상으로 지정할 때 이 값을 지정해야 합니다. 그렇지 않으면 오류가 발생합니다.
참고: 대상 서버가 SQL Server 2016 이하일 때 -ClusterType 매개 변수를 사용하는 경우 예외가 throw됩니다.
형식: | AvailabilityGroupClusterType |
허용되는 값: | Wsfc, None, External |
Position: | Named |
Default value: | Wsfc |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Confirm
cmdlet을 실행하기 전에 확인 메시지를 표시합니다.
형식: | SwitchParameter |
별칭: | cf |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-ContainedAvailabilityGroup
포함된 가용성 그룹을 만드는 데 사용됩니다. 이 옵션은 가용성 그룹의 복제본 집합에서 동기화된 상태로 유지되는 자체 master
및 msdb
데이터베이스를 사용하여 가용성 그룹을 만드는 데 사용됩니다. 이 매개 변수는 해당 도우미 -ReuseSystemDatabases함께 사용할 수 있습니다.
이 매개 변수는 대상 SQL Server가 포함된 가용성 그룹(SQL 2022 이상)을 지원하는 경우에만 허용됩니다. 사용하려고 하면 포함된 가용성 그룹을 지원하지 않는 SQL 버전에 대해 cmdlet에서 오류가 발생합니다.
이 매개 변수는 모듈 버전 22 이상에서만 사용할 수 있습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Database
로컬 읽기/쓰기 사용자 데이터베이스의 배열을 지정합니다. 이러한 데이터베이스는 전체 복구 모델을 사용해야 하며 AUTO_CLOSE 사용하면 안 됩니다. 이러한 데이터베이스는 다른 가용성 그룹에 속할 수 없으며 데이터베이스 미러링에 대해 구성할 수 없습니다. 이 매개 변수의 값을 지정해야 합니다.
형식: | String[] |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-DatabaseHealthTrigger
가용성 그룹 내의 사용자 데이터베이스 복제본에 데이터베이스 오류 조건이 발생하는 경우 가용성 그룹의 자동 장애 조치(failover)를 트리거할지 여부를 지정합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-DtcSupportEnabled
가용성 그룹 내의 데이터베이스가 인스턴스 수준(기본값) 또는 데이터베이스별 수준에서 MSDTC에 등록되는지 여부를 지정합니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Encrypt
SQL Server에 연결할 때 사용할 암호화 유형입니다.
이 값은 Microsoft.Data.SqlClient 드라이버의 SqlConnection 개체에 있는 Encrypt
속성 SqlConnectionEncryptOption
매핑됩니다.
모듈의 v22에서 기본값은 Optional
(v21과의 호환성을 위해)입니다. 모듈의 v23+에서 기본값은 기존 스크립트에 대한 호환성이 손상되는 변경을 만들 수 있는 '필수'입니다.
이 매개 변수는 모듈의 v22에서 새로 생성됩니다.
형식: | String |
허용되는 값: | Mandatory, Optional, Strict |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-FailureConditionLevel
가용성 그룹의 자동 장애 조치(failover) 동작을 지정합니다. 이 매개 변수에 허용되는 값은 다음과 같습니다.
- OnServerDown. SQL Server 서비스가 중지되면 장애 조치(failover)하거나 다시 시작합니다.
- OnServerUnresponsive. SQL Server 서비스가 클러스터에 연결되어 있고 HealthCheckTimeout 임계값을 초과하는 경우 또는 현재 주 역할에 있는 가용성 복제본이 실패 상태인 경우 장애 조치(failover) 또는 다시 시작합니다.
- OnCriticalServerError. 더 낮은 값의 조건이 충족되는 경우 장애 조치(failover) 또는 다시 시작, 메모리 부족 상태, 심각한 쓰기 액세스 위반 또는 너무 많은 덤프를 포함하는 내부 중요 서버 오류가 발생하는 경우.
- OnModerateServerError. 더 낮은 값의 조건이 충족되는 경우 장애 조치(failover) 또는 다시 시작하며, 메모리 부족 상태의 영구를 포함하는 보통 서버 오류가 발생하는 경우를 더합니다.
- OnAnyQualifiedFailureConditions. 더 낮은 값의 조건이 충족되는 경우 장애 조치(failover) 또는 다시 시작합니다. 또한 엔진 작업자 스레드 고갈 및 해결 불가능한 교착 상태가 감지된 것을 포함하여 한정된 오류 조건이 발생하는 경우.
형식: | AvailabilityGroupFailureConditionLevel |
허용되는 값: | OnServerDown, OnServerUnresponsive, OnCriticalServerErrors, OnModerateServerErrors, OnAnyQualifiedFailureCondition, Unknown |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-HealthCheckTimeout
Always On 가용성 그룹이 응답하지 않는 서버를 비정상으로 선언하는 시간(밀리초)을 지정합니다.
형식: | Int32 |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-HostNameInCertificate
SQL Server TLS/SSL 인증서의 유효성을 검사하는 데 사용할 호스트 이름입니다. SQL Server 인스턴스가 Force Encryption을 사용하도록 설정되어 있고 호스트 이름/짧은 이름을 사용하여 인스턴스에 연결하려는 경우 이 매개 변수를 전달해야 합니다. 이 매개 변수를 생략하면 강제 암호화를 사용하도록 설정된 SQL Server 인스턴스에 연결하려면 FQDN(정규화된 도메인 이름)을 -ServerInstance 전달해야 합니다.
이 매개 변수는 모듈의 v22에서 새로 생성됩니다.
형식: | String |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-InputObject
이 cmdlet이 만드는 가용성 그룹의 주 복제본을 호스팅하는 SQL Server 인스턴스를 지정합니다.
형식: | Server |
Position: | 2 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | True |
와일드카드 문자 허용: | False |
-Name
이 cmdlet이 만드는 가용성 그룹의 이름을 지정합니다.
형식: | String |
Position: | 1 |
Default value: | None |
필수: | True |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Path
이 cmdlet이 만드는 가용성 그룹의 초기 주 복제본을 호스팅하는 SQL Server 인스턴스의 경로를 지정합니다. 이 매개 변수를 지정하지 않으면 이 cmdlet은 현재 작업 위치를 사용합니다. 값을 지정하는 경우 경로가 현재 있어야 합니다.
형식: | String |
Position: | 2 |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-ProgressAction
powerShell이 스크립트, cmdlet 또는 공급자(예: Write-Progress cmdlet에서 생성된 진행률 표시줄)에 의해 생성된 진행률 업데이트에 응답하는 방법을 결정합니다. Write-Progress cmdlet은 명령의 상태를 표시하는 진행률 표시줄을 만듭니다.
형식: | ActionPreference |
별칭: | proga |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-RequiredSynchronizedSecondariesToCommit
주 복제본에서 커밋할 수 있어야 하는 동기 커밋 보조 복제본의 수입니다.
SYNCHRONOUS_COMMIT
보조 복제본이 일정 시간 동안 주 복제본과 연결이 끊어지면 주 복제본은 커밋 차단을 방지하기 위해 ASYNCHRONOUS_COMMIT
강등합니다. 주 복제본을 사용할 수 없게 되고 사용자가 이러한 보조 복제본 중 하나로 장애 조치(failover)하려는 경우 데이터 손실이 발생할 수 있습니다. RequiredSynchronizedSecondariesToCommit
이 설정의 기본값은 0입니다. 즉, 기본값은 커밋을 차단하지 않습니다. 이는 SQL Server 2017 이전의 동작과 동일합니다.
형식: | Int32 |
Position: | Named |
Default value: | 0 |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-ReuseSystemDatabases
이 매개 변수를 사용하면 이전 버전의 AG에서 포함된 master
및 msdb
데이터베이스가 이 새 가용성 그룹을 만드는 데 사용됩니다.
-ContainedAvailabilityGroup
지정하지 않고 이 매개 변수를 사용하려고 하면 cmdlet에서 오류가 발생합니다.
이 매개 변수는 모듈 버전 22 이상에서만 사용할 수 있습니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-Script
이 cmdlet이 이 cmdlet이 수행하는 작업을 수행하는 Transact-SQL 스크립트를 반환한다는 것을 나타냅니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-TrustServerCertificate
신뢰의 유효성을 검사하기 위해 인증서 체인을 건너뛰는 동안 채널이 암호화되는지 여부를 나타냅니다.
모듈의 v22에서 기본값은 $true
(v21과의 호환성을 위해)입니다. 모듈의 v23+에서 기본값은 '$false'이며, 이로 인해 기존 스크립트에 대한 호환성이 손상되는 변경이 발생할 수 있습니다.
이 매개 변수는 모듈의 v22에서 새로 생성됩니다.
형식: | SwitchParameter |
Position: | Named |
Default value: | None |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
-WhatIf
cmdlet이 실행되면 어떻게 되는지 보여 주세요. cmdlet이 실행되지 않습니다.
형식: | SwitchParameter |
별칭: | wi |
Position: | Named |
Default value: | False |
필수: | False |
파이프라인 입력 허용: | False |
와일드카드 문자 허용: | False |
입력
Microsoft.SqlServer.Management.Smo.Server
서버 인스턴스를 이 cmdlet에 전달할 수 있습니다.
출력
Microsoft.SqlServer.Management.Smo.AvailabilityGroup
이 cmdlet은 가용성 그룹을 반환합니다.