Yük devretme grubuna elastik havuz eklemek için PowerShell kullanma
Şunlar için geçerlidir: Azure SQL Veritabanı
Bu Azure PowerShell betiği örneği, Azure SQL Veritabanı'da bir veritabanı oluşturur, elastik havuza ekler, yük devretme grubu oluşturur ve yük devretmeyi test eder.
Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
Not
Bu makalede, Azure ile etkileşim için önerilen PowerShell modülü olan Azure Az PowerShell modülü kullanılır. Az PowerShell modülünü kullanmaya başlamak için Azure PowerShell’i yükleyin. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Azure Cloud Shell kullanma
Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.
Azure Cloud Shell'i başlatmak için:
Seçenek | Örnek/Bağlantı |
---|---|
Kod bloğunun sağ üst köşesindeki Deneyin’i seçin. Deneyin seçildiğinde kod otomatik olarak Cloud Shell'e kopyalanmaz. | |
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. | |
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. |
Azure Cloud Shell'de bu makaledeki kodu çalıştırmak için:
Cloud Shell'i başlatın.
Kodu kopyalamak için kod bloğundaki Kopyala düğmesini seçin.
Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu Cloud Shell oturumuna yapıştırın.
Kodu çalıştırmak için Enter'ı seçin.
PowerShell'i yerel olarak yükleyip kullanmayı seçerseniz, bu öğretici için Az PowerShell 1.4.0 veya üzeri gerekir. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. PowerShell'i yerel olarak çalıştırıyorsanız Azure bağlantısı oluşturmak için Connect-AzAccount
komutunu da çalıştırmanız gerekir.
Örnek betikler
# Set variables for your server and database
$subscriptionId = '<Subscription-ID>'
$randomIdentifier = $(Get-Random)
$resourceGroupName = "myResourceGroup-$randomIdentifier"
$location = "East US"
$adminLogin = "azureuser"
$password = "PWD27!"+(New-Guid).Guid
$serverName = "mysqlserver-$randomIdentifier"
$poolName = "myElasticPool"
$databaseName = "mySampleDatabase"
$drLocation = "West US"
$drServerName = "mysqlsecondary-$randomIdentifier"
$failoverGroupName = "failovergrouptutorial-$randomIdentifier"
# The ip address range that you want to allow to access your server
# Leaving at 0.0.0.0 will prevent outside-of-azure connections
$startIp = "0.0.0.0"
$endIp = "0.0.0.0"
# Show randomized variables
Write-host "Resource group name is" $resourceGroupName
Write-host "Password is" $password
Write-host "Server name is" $serverName
Write-host "DR Server name is" $drServerName
Write-host "Failover group name is" $failoverGroupName
# Set subscription ID
Set-AzContext -SubscriptionId $subscriptionId
# Create a resource group
Write-host "Creating resource group..."
$resourceGroup = New-AzResourceGroup -Name $resourceGroupName -Location $location -Tag @{Owner="SQLDB-Samples"}
$resourceGroup
# Create a server with a system-wide unique server name
Write-host "Creating primary logical server..."
New-AzSqlServer -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-Location $location `
-SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $adminLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
Write-host "Primary logical server = " $serverName
# Create a server firewall rule that allows access from the specified IP range
Write-host "Configuring firewall for primary logical server..."
New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp
Write-host "Firewall configured"
# Create General Purpose Gen5 database with 2 vCore
Write-host "Creating a gen5 2 vCore database..."
$database = New-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-Edition "GeneralPurpose" `
-VCore 2 `
-ComputeGeneration Gen5 `
-MinimumCapacity 1 `
-SampleName "AdventureWorksLT"
$database
# Create primary Gen5 elastic 2 vCore pool
Write-host "Creating elastic pool..."
$elasticPool = New-AzSqlElasticPool -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-ElasticPoolName $poolName `
-Edition "GeneralPurpose" `
-vCore 2 `
-ComputeGeneration Gen5
$elasticPool
# Add single db into elastic pool
Write-host "Creating elastic pool..."
$addDatabase = Set-AzSqlDatabase -ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-DatabaseName $databaseName `
-ElasticPoolName $poolName
$addDatabase
# Create a secondary server in the failover region
Write-host "Creating a secondary logical server in the failover region..."
New-AzSqlServer -ResourceGroupName $resourceGroupName `
-ServerName $drServerName `
-Location $drLocation `
-SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential `
-ArgumentList $adminlogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
Write-host "Secondary logical server =" $drServerName
# Create a server firewall rule that allows access from the specified IP range
Write-host "Configuring firewall for secondary logical server..."
New-AzSqlServerFirewallRule -ResourceGroupName $resourceGroupName `
-ServerName $drServerName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $startIp -EndIpAddress $endIp
Write-host "Firewall configured"
# Create secondary Gen5 elastic 2 vCore pool
Write-host "Creating secondary elastic pool..."
$elasticPool = New-AzSqlElasticPool -ResourceGroupName $resourceGroupName `
-ServerName $drServerName `
-ElasticPoolName $poolName `
-Edition "GeneralPurpose" `
-vCore 2 `
-ComputeGeneration Gen5
$elasticPool
# Create a failover group between the servers
Write-host "Creating failover group..."
New-AzSqlDatabaseFailoverGroup `
–ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-PartnerServerName $drServerName `
–FailoverGroupName $failoverGroupName `
–FailoverPolicy Automatic `
-GracePeriodWithDataLossHours 2
Write-host "Failover group created successfully."
# Add elastic pool to the failover group
Write-host "Enumerating databases in elastic pool...."
$FailoverGroup = Get-AzSqlDatabaseFailoverGroup `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FailoverGroupName $failoverGroupName
$databases = Get-AzSqlElasticPoolDatabase `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-ElasticPoolName $poolName
Write-host "Adding databases to failover group..."
$failoverGroup = $failoverGroup | Add-AzSqlDatabaseToFailoverGroup `
-Database $databases
$failoverGroup
# Check role of secondary replica
Write-host "Confirming the secondary server is secondary...."
(Get-AzSqlDatabaseFailoverGroup `
-FailoverGroupName $failoverGroupName `
-ResourceGroupName $resourceGroupName `
-ServerName $drServerName).ReplicationRole
# Failover to secondary server
Write-host "Failing over failover group to the secondary..."
Switch-AzSqlDatabaseFailoverGroup `
-ResourceGroupName $resourceGroupName `
-ServerName $drServerName `
-FailoverGroupName $failoverGroupName
Write-host "Failover group failed over to" $drServerName
# Check role of secondary replica
Write-host "Confirming the secondary server is now primary"
(Get-AzSqlDatabaseFailoverGroup `
-FailoverGroupName $failoverGroupName `
-ResourceGroupName $resourceGroupName `
-ServerName $drServerName).ReplicationRole
# Revert failover to primary server
Write-host "Failing over failover group to the primary...."
Switch-AzSqlDatabaseFailoverGroup `
-ResourceGroupName $resourceGroupName `
-ServerName $serverName `
-FailoverGroupName $failoverGroupName
Write-host "Failover group failed over to" $serverName
# Clean up resources by removing the resource group
# Write-host "Removing resource group..."
# Remove-AzResourceGroup -ResourceGroupName $resourceGroupName
# Write-host "Resource group removed =" $resourceGroupName
Dağıtımı temizleme
Kaynak grubunu ve onunla ilişkili tüm kaynakları kaldırmak için aşağıdaki komutu kullanın.
Remove-AzResourceGroup -ResourceGroupName $resourceGroupName
Betik açıklaması
Bu betik aşağıdaki komutları kullanır. Tablodaki her komut, komuta özgü belgelere yönlendirir.
Command | Notlar |
---|---|
New-AzResourceGroup | Tüm kaynakların depolandığı bir kaynak grubu oluşturur. |
New-AzSqlServer | Veritabanlarını ve elastik havuzları barındıran bir sunucu oluşturur. |
New-AzSqlServerFirewallRule | Sunucu için sunucu düzeyinde bir güvenlik duvarı kuralı oluşturur. |
New-AzSqlDatabase | Yeni bir veritabanı oluşturur. |
New-AzSqlElasticPool | Elastik veritabanı havuzu oluşturur. |
Set-AzSqlDatabase | Bir veritabanının özelliklerini ayarlar veya var olan bir veritabanını elastik havuza taşır. |
New-AzSqlDatabaseFailoverGroup | Yeni bir yük devretme grubu oluşturur. |
Get-AzSqlDatabase | Bir veya daha fazla veritabanını alır. |
Add-AzSqlDatabaseToFailoverGroup | Yük devretme grubuna bir veya daha fazla veritabanı ekler. |
Get-AzSqlDatabaseFailoverGroup | Veritabanı yük devretme gruplarını alır veya listeler. |
Switch-AzSqlDatabaseFailoverGroup | Veritabanı yük devretme grubunun yük devretmesini yürütür. |
Remove-AzResourceGroup | Kaynak grubunu kaldırır |
Sonraki adımlar
Azure PowerShell hakkında daha fazla bilgi için bkz. Azure PowerShell belgeleri.
Ek SQL Veritabanı PowerShell betiği örnekleri Azure SQL Veritabanı PowerShell betikleri içinde bulunabilir.