Använda PowerShell för att konfigurera aktiv geo-replikering för en pooldatabas i Azure SQL Database
Gäller för:Azure SQL Database
Det här Azure PowerShell-skriptexemplet konfigurerar aktiv geo-replikering för en pooldatabas i Azure SQL Database och redundansväxlar den till den sekundära repliken av databasen.
Om du inte har en Azure-prenumeration skapar du ett kostnadsfritt Azure-konto innan du börjar.
Kommentar
Den här artikeln använder Azure Az PowerShell-modulen, som är den rekommenderade PowerShell-modulen för interaktion med Azure. För att komma igång med Az PowerShell kan du läsa artikeln om att installera Azure PowerShell. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Använda Azure Cloud Shell
Azure är värd för Azure Cloud Shell, en interaktiv gränssnittsmiljö som du kan använda via webbläsaren. Du kan använda antingen Bash eller PowerShell med Cloud Shell för att arbeta med Azure-tjänster. Du kan använda förinstallerade Cloud Shell-kommandon för att köra koden i den här artikeln, utan att behöva installera något i din lokala miljö.
Så här startar du Azure Cloud Shell:
Alternativ | Exempel/länk |
---|---|
Välj Prova i det övre högra hörnet av ett kodblock. Om du väljer Prova kopieras koden inte automatiskt till Cloud Shell. | |
Gå till https://shell.azure.com eller Välj knappen Starta Cloud Shell för att öppna Cloud Shell i webbläsaren. | |
Välj knappen Cloud Shell på menyn längst upp till höger i Azure-portalen. |
Så här kör du koden i den här artikeln i Azure Cloud Shell:
Starta Cloud Shell.
Kopiera koden genom att klicka på knappen Kopiera på ett kodblock.
Klistra in koden i Cloud Shell-sessionen genom att välja Ctrl+Skift+V i Windows och Linux, eller genom att välja Cmd+Shift+V på macOS.
Välj Retur för att köra koden.
Om du väljer att installera och använda PowerShell lokalt kräver den här självstudien Az PowerShell 1.4.0 eller senare. Om du behöver uppgradera kan du läsa Install Azure PowerShell module (Installera Azure PowerShell-modul). Om du kör PowerShell lokalt måste du också köra Connect-AzAccount
för att skapa en anslutning till Azure.
Exempelskript
# Connect-AzAccount
$SubscriptionId = ''
# Set the resource group name and location for your serverw
$primaryResourceGroupName = "myPrimaryResourceGroup-$(Get-Random)"
$secondaryResourceGroupName = "mySecondaryResourceGroup-$(Get-Random)"
$primaryLocation = "westus2"
$secondaryLocation = "eastus"
# The logical server names have to be unique in the system
$primaryServerName = "primary-server-$(Get-Random)"
$secondaryServerName = "secondary-server-$(Get-Random)"
# Set an admin login and password for your servers
$adminSqlLgin = "SqlAdmin"
$password = "ChangeYourAdminPassword1"
# The sample database name
$databaseName = "mySampleDatabase"
# The ip address ranges that you want to allow to access your servers
$primaryStartIp = "0.0.0.0"
$primaryEndIp = "0.0.0.0"
$secondaryStartIp = "0.0.0.0"
$secondaryEndIp = "0.0.0.0"
# The elastic pool names
$primaryPoolName = "PrimaryPool"
$secondarypoolname = "SecondaryPool"
# Set subscription
Set-AzContext -SubscriptionId $subscriptionId
# Create two new resource groups
$primaryResourceGroup = New-AzResourceGroup -Name $primaryResourceGroupName -Location $primaryLocation
$secondaryResourceGroup = New-AzResourceGroup -Name $secondaryResourceGroupName -Location $secondaryLocation
# Create two new logical servers with a system wide unique server name
$primaryServer = New-AzSqlServer -ResourceGroupName $primaryResourceGroupName `
-ServerName $primaryServerName `
-Location $primaryLocation `
-SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLgin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
$secondaryServer = New-AzSqlServer -ResourceGroupName $secondaryResourceGroupName `
-ServerName $secondaryServerName `
-Location $secondaryLocation `
-SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLgin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
# Create a server firewall rule for each server that allows access from the specified IP range
$primaryServerFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $primaryResourceGroupName `
-ServerName $primaryServerName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $primaryStartIp -EndIpAddress $primaryEndIp
$secondaryServerFirewallRule = New-AzSqlServerFirewallRule -ResourceGroupName $secondaryResourceGroupName `
-ServerName $secondaryServerName `
-FirewallRuleName "AllowedIPs" -StartIpAddress $secondaryStartIp -EndIpAddress $secondaryEndIp
# Create a pool in each of the servers
$primaryPool = New-AzSqlElasticPool -ResourceGroupName $primaryResourceGroupName `
-ServerName $primaryServerName `
-ElasticPoolName $primaryPoolName `
-Edition "Standard" `
-Dtu 50 `
-DatabaseDtuMin 10 `
-DatabaseDtuMax 50
$secondaryPool = New-AzSqlElasticPool -ResourceGroupName $secondaryResourceGroupName `
-ServerName $secondaryServerName `
-ElasticPoolName $secondaryPoolName `
-Edition "Standard" `
-Dtu 50 `
-DatabaseDtuMin 10 `
-DatabaseDtuMax 50
# Create a blank database in the pool on the primary server
$database = New-AzSqlDatabase -ResourceGroupName $primaryResourceGroupName `
-ServerName $primaryServerName `
-DatabaseName $databaseName `
-ElasticPoolName $primaryPoolName
# Establish Active Geo-Replication
$database = Get-AzSqlDatabase -ResourceGroupName $primaryResourceGroupName `
-ServerName $primaryServerName `
-DatabaseName $databaseName
$database | New-AzSqlDatabaseSecondary -PartnerResourceGroupName $secondaryResourceGroupName `
-PartnerServerName $secondaryServerName `
-SecondaryElasticPoolName $secondaryPoolName `
-AllowConnections "All"
# Initiate a planned failover
$database = Get-AzSqlDatabase -ResourceGroupName $secondaryResourceGroupName `
-ServerName $secondaryServerName `
-DatabaseName $databaseName
$database | Set-AzSqlDatabaseSecondary -PartnerResourceGroupName $primaryResourceGroupName -Failover
# Monitor Geo-Replication config and health after failover
$database = Get-AzSqlDatabase -ResourceGroupName $secondaryResourceGroupName `
-ServerName $secondaryServerName `
-DatabaseName $databaseName
$database | Get-AzSqlDatabaseReplicationLink -PartnerResourceGroupName $primaryResourceGroupName `
-PartnerServerName $primaryServerName
# Clean up deployment
# Remove-AzResourceGroup -ResourceGroupName $primaryResourceGroupName
# Remove-AzResourceGroup -ResourceGroupName $secondaryResourceGroupName
Rensa distribution
Använd följande kommando för att ta bort resursgruppen och alla resurser som är associerade med den.
Remove-AzResourceGroup -ResourceGroupName $primaryresourcegroupname
Remove-AzResourceGroup -ResourceGroupName $secondaryresourcegroupname
Förklaring av skript
Det här skriptet använder följande kommandon. Varje kommando i tabellen länkar till kommandospecifik dokumentation.
Command | Anteckningar |
---|---|
New-AzResourceGroup | Skapar en resursgrupp där alla resurser lagras. |
New-AzSqlServer | Skapar en server som är värd för databaser och elastiska pooler. |
New-AzSqlElasticPool | Skapar en elastisk pool. |
New-AzSqlDatabase | Skapar en databas på en server. |
Set-AzSqlDatabase | Uppdaterar databasegenskaper eller flyttar en databas till, från eller mellan elastiska pooler. |
New-AzSqlDatabaseSecondary | Skapar en sekundär databas för en befintlig databas och startar datareplikeringen. |
Get-AzSqlDatabase | Hämtar en eller flera databaser. |
Set-AzSqlDatabaseSecondary | Växlar en sekundär databas till att vara primär för att initiera redundans. |
Get-AzSqlDatabaseReplicationLink | Hämtar geo-replikeringslänkarna mellan en Azure SQL Database och en resursgrupp eller en logisk SQL-server. |
Remove-AzResourceGroup | Tar bort en resursgrupp, inklusive alla kapslade resurser. |
Nästa steg
Mer information om Azure PowerShell finns i Dokumentation om Azure PowerShell.
Ytterligare PowerShell-skriptexempel för SQL Database finns i PowerShell-skript för Azure SQL Database.