Aktív georeplikálás konfigurálása az Azure SQL Database-ben lévő adatbázisokhoz a PowerShell használatával

A következőre vonatkozik: Azure SQL Database

Ez az Azure PowerShell-példaszkript az Azure SQL Database-ben lévő adatbázisok aktív georeplikálását konfigurálja, és az adatbázis másodlagos replikájára irányítja át.

Ha nem rendelkezik Azure-előfizetéssel, első lépésként hozzon létre egy ingyenes Azure-fiókot.

Megjegyzés:

Ez a cikk az Azure Az PowerShell-modult használja, amely az Azure-ral való interakcióhoz ajánlott PowerShell-modul. Az Az PowerShell-modul használatának megkezdéséhez lásd az Azure PowerShell telepítését ismertető szakaszt. Az Az PowerShell-modulra történő migrálás részleteiről lásd: Az Azure PowerShell migrálása az AzureRM modulból az Az modulba.

Az Azure Cloud Shell használata

Az Azure által üzemeltetett Azure Cloud Shell egy interaktív felület, amelyet a böngészőből használhat. A Bash vagy a PowerShell segítségével is használhatja a Cloud Shellt az Azure-szolgáltatásokhoz. A Cloud Shell előre telepített parancsaival futtathatja a jelen cikkben szereplő kódot anélkül, hogy bármit telepítenie kellene a helyi környezetben.

Az Azure Cloud Shell indítása:

Beállítás Példa/hivatkozás
Kattintson a Kipróbálás elemre egy kódblokk jobb felső sarkában. A Kipróbálás lehetőségre kattintással nem másolja a kódot automatikusan a Cloud Shellbe. Screenshot that shows an example of Try It for Azure Cloud Shell.
Látogasson el a https://shell.azure.com webhelyre, vagy kattintson a Cloud Shell indítása gombra a böngészőben. Screenshot that shows how to launch Cloud Shell in a new window.
Az Azure Portal jobb felső sarkában található menüben kattintson a Cloud Shell gombra. Screenshot that shows the Cloud Shell button in the Azure portal

Az ebben a cikkben szereplő kód Azure Cloud Shellben való futtatásához:

  1. Indítsa el a Cloud Shellt.

  2. A kód másolásához válassza az adott kódblokkhoz tartozó Másolás gombot.

  3. Illessze be a kódot a Cloud Shell-munkamenetbe a Windowson és Linuxon a Ctrl Shift+V billentyűkombinációval+, vagy macOS rendszeren a Cmd+Shift+V billentyűkombinációval.

  4. A kód futtatásához nyomja le az Enter billentyűt.

Ha a PowerShell helyi telepítése és használata mellett dönt, ehhez az oktatóanyaghoz az Az PowerShell 1.4.0-s vagy újabb verziójára van szükség. Ha frissíteni szeretne, olvassa el az Azure PowerShell-modul telepítését ismertető cikket. Ha helyileg futtatja a PowerShellt, akkor emellett a Connect-AzAccount futtatásával kapcsolatot kell teremtenie az Azure-ral.

Mintaszkriptek

# Connect-AzAccount
$SubscriptionId = ''
# Set the resource group name and location for your primary server
$primaryResourceGroupName = "myPrimaryResourceGroup-$(Get-Random)"
$primaryLocation = "westus2"
# Set the resource group name and location for your secondary server
$secondaryResourceGroupName = "mySecondaryResourceGroup-$(Get-Random)"
$secondaryLocation = "eastus"
# Set an admin login and password for your servers
$adminSqlLogin = "SqlAdmin"
$password = "ChangeYourAdminPassword1"
# Set server names - the logical server names have to be unique in the system
$primaryServerName = "primary-server-$(Get-Random)"
$secondaryServerName = "secondary-server-$(Get-Random)"
# The sample database name
$databasename = "mySampleDatabase"
# The ip address range 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"

# 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 $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force))
$secondaryServer = New-AzSqlServer -ResourceGroupName $secondaryResourceGroupName `
    -ServerName $secondaryServerName `
    -Location $secondaryLocation `
    -SqlAdministratorCredentials $(New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(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 blank database with S0 performance level on the primary server
$database = New-AzSqlDatabase  -ResourceGroupName $primaryResourceGroupName `
    -ServerName $primaryServerName `
    -DatabaseName $databasename -RequestedServiceObjectiveName "S0"

# Establish Active Geo-Replication
$database = Get-AzSqlDatabase -DatabaseName $databasename -ResourceGroupName $primaryResourceGroupName -ServerName $primaryServerName
$database | New-AzSqlDatabaseSecondary -PartnerResourceGroupName $secondaryResourceGroupName -PartnerServerName $secondaryServerName -AllowConnections "All"

# Initiate a planned failover
$database = Get-AzSqlDatabase -DatabaseName $databasename -ResourceGroupName $secondaryResourceGroupName -ServerName $secondaryServerName
$database | Set-AzSqlDatabaseSecondary -PartnerResourceGroupName $primaryResourceGroupName -Failover

# Monitor Geo-Replication config and health after failover
$database = Get-AzSqlDatabase -DatabaseName $databasename -ResourceGroupName $secondaryResourceGroupName -ServerName $secondaryServerName
$database | Get-AzSqlDatabaseReplicationLink -PartnerResourceGroupName $primaryResourceGroupName -PartnerServerName $primaryServerName

# Remove the replication link after the failover
$database = Get-AzSqlDatabase -DatabaseName $databasename -ResourceGroupName $secondaryResourceGroupName -ServerName $secondaryServerName
$secondaryLink = $database | Get-AzSqlDatabaseReplicationLink -PartnerResourceGroupName $primaryResourceGroupName -PartnerServerName $primaryServerName
$secondaryLink | Remove-AzSqlDatabaseSecondary

# Clean up deployment 
#Remove-AzResourceGroup -ResourceGroupName $primaryResourceGroupName
#Remove-AzResourceGroup -ResourceGroupName $secondaryResourceGroupName

Az üzemelő példány eltávolítása

Az alábbi paranccsal távolítsa el az erőforráscsoportot és a hozzá társított összes erőforrást.

Remove-AzResourceGroup -ResourceGroupName $primaryresourcegroupname
Remove-AzResourceGroup -ResourceGroupName $secondaryresourcegroupname

Szkript ismertetése

A szkript a következő parancsokat használja. A táblázatban lévő összes parancs a hozzá tartozó dokumentációra hivatkozik.

Parancs Megjegyzések
New-AzResourceGroup Létrehoz egy erőforráscsoportot, amely az összes erőforrást tárolja.
New-AzSqlServer Adatbázisokat és rugalmas készleteket üzemeltető kiszolgálót hoz létre.
New-AzSqlElasticPool Rugalmas készletet hoz létre.
Set-AzSqlDatabase Frissíti az adatbázis tulajdonságait vagy az adatbázist egy rugalmas készletbe, egy rugalmas készletből vagy rugalmas készletek között helyezi át.
New-AzSqlDatabaseSecondary Létrehoz egy másodlagos adatbázist egy meglévő adatbázishoz, és elkezdi az adatok replikálását.
Get-AzSqlDatabase Egy vagy több adatbázist kér le.
Set-AzSqlDatabaseSecondary Egy másodlagos adatbázist elsődlegessé tesz, hogy feladatátvételt kezdeményezzen.
Get-AzSqlDatabaseReplicationLink Lekéri az Azure SQL Database és egy erőforráscsoport vagy logikai SQL-kiszolgáló közötti georeplikációs kapcsolatokat.
Remove-AzSqlDatabaseSecondary Leállítja az adatreplikálást egy adatbázis és a megadott másodlagos adatbázis között.
Remove-AzResourceGroup Töröl egy erőforráscsoportot az összes beágyazott erőforrással együtt.

További lépések

Az Azure PowerShellről további információt az Azure PowerShell dokumentációjában talál.

További SQL Database PowerShell szkriptminták találhatók az Azure SQL Database PowerShell szkriptekben.