A PowerShell használatával konfigurálhat aktív georeplikálást egy készletezett adatbázishoz az Azure SQL Database-ben

A következőkre vonatkozik:Azure SQL Database

Ez az Azure PowerShell-példaszkript az Azure SQL Database-ben készletezett 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 tekintse meg Az Azure PowerShell-telepítése című témakört. Az Az PowerShell-modulba való migrálásról további információt az Azure PowerShell migrálása az AzureRM-ből az Az-be című témakörben talál.

Az Azure Cloud Shell használata

Az Azure üzemelteti az Azure Cloud Shell-t, egy interaktív héjkörnyezetet, amelyet a böngésződön keresztül használhatsz. A Bash vagy a PowerShell segítségével is használhatja a Cloud Shellt az Azure-szolgáltatásokhoz. Felhasználhatja a Cloud Shell előre telepített parancsait a cikkben szereplő kód futtatására anélkül, hogy bármit telepítenie kellene a helyi környezetében.

Azure Cloud Shell elindítása:

Lehetőség Példa/hivatkozás
Kattintson a Kipróbálás elemre egy kódblokk jobb felső sarkában. A Kipróbálás kiválasztása nem másolja automatikusan a kódot a Cloud Shellbe. Képernyőkép az Azure Cloud Shell kipróbálásának példájáról.
Lépjen a https://shell.azure.com webhelyre, vagy válassza ki a Cloud Shell indítása gombot a Cloud Shell megnyitásához a böngészőjében. Képernyőkép, amely bemutatja, hogyan indítható el a Cloud Shell egy új ablakban.
Az Azure Portal jobb felső sarkában található menüben kattintson a Cloud Shell gombra. Az Azure portálon a Cloud Shell gombot mutató képernyőkép

A jelen cikkben szereplő kód futtatása az Azure Cloud Shellben:

  1. Indítsa el a Cloud Shell alkalmazást.

  2. A kód másolásához kattintson a kódblokk Másolás gombjára.

  3. Illessze be a kódot a Cloud Shell -munkamenetbe a Windows és Linux rendszeren a Ctrl+Shift+V billentyűkombinációval, illetve a Cmd+Shift+V választásával macOS rendszeren.

  4. A kód futtatásához válassza az Enter lehetőséget.

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.

Példaszkriptek

# Connect-AzAccount
$subscriptionId = "<Subscription-ID>"
# Set the resource group name and location for your server
$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
$adminSqlLogin = "<admin>"
$password = "<password>"
# 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

$adminCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $adminSqlLogin, $(ConvertTo-SecureString -String $password -AsPlainText -Force)

$primaryServerParams = @{
    ResourceGroupName           = $primaryResourceGroupName
    ServerName                  = $primaryServerName
    Location                    = $primaryLocation
    SqlAdministratorCredentials = $adminCredential
}
$primaryServer = New-AzSqlServer @primaryServerParams

$secondaryServerParams = @{
    ResourceGroupName           = $secondaryResourceGroupName
    ServerName                  = $secondaryServerName
    Location                    = $secondaryLocation
    SqlAdministratorCredentials = $adminCredential
}
$secondaryServer = New-AzSqlServer @secondaryServerParams

# Create a server firewall rule for each server that allows access from the specified IP range
$primaryFirewallParams = @{
    ResourceGroupName = $primaryResourceGroupName
    ServerName        = $primaryServerName
    FirewallRuleName  = "AllowedIPs"
    StartIpAddress    = $primaryStartIp
    EndIpAddress      = $primaryEndIp
}
$primaryServerFirewallRule = New-AzSqlServerFirewallRule @primaryFirewallParams

$secondaryFirewallParams = @{
    ResourceGroupName = $secondaryResourceGroupName
    ServerName        = $secondaryServerName
    FirewallRuleName  = "AllowedIPs"
    StartIpAddress    = $secondaryStartIp
    EndIpAddress      = $secondaryEndIp
}
$secondaryServerFirewallRule = New-AzSqlServerFirewallRule @secondaryFirewallParams

# Create a pool in each of the servers
$primaryPoolParams = @{
    ResourceGroupName = $primaryResourceGroupName
    ServerName        = $primaryServerName
    ElasticPoolName   = $primaryPoolName
    Edition           = "Standard"
    Dtu               = 50
    DatabaseDtuMin    = 10
    DatabaseDtuMax    = 50
}
$primaryPool = New-AzSqlElasticPool @primaryPoolParams

$secondaryPoolParams = @{
    ResourceGroupName = $secondaryResourceGroupName
    ServerName        = $secondaryServerName
    ElasticPoolName   = $secondaryPoolName
    Edition           = "Standard"
    Dtu               = 50
    DatabaseDtuMin    = 10
    DatabaseDtuMax    = 50
}
$secondaryPool = New-AzSqlElasticPool @secondaryPoolParams

# Create a blank database in the pool on the primary server
$databaseParams = @{
    ResourceGroupName = $primaryResourceGroupName
    ServerName        = $primaryServerName
    DatabaseName      = $databaseName
    ElasticPoolName   = $primaryPoolName
}
$database = New-AzSqlDatabase @databaseParams

# Establish Active Geo-Replication
$primaryDatabaseParams = @{
    ResourceGroupName = $primaryResourceGroupName
    ServerName        = $primaryServerName
    DatabaseName      = $databaseName
}
$database = Get-AzSqlDatabase @primaryDatabaseParams
$secondaryParams = @{
    PartnerResourceGroupName = $secondaryResourceGroupName
    PartnerServerName        = $secondaryServerName
    SecondaryElasticPoolName = $secondaryPoolName
    AllowConnections         = "All"
}
$database | New-AzSqlDatabaseSecondary @secondaryParams

# Initiate a planned failover
$secondaryDatabaseParams = @{
    ResourceGroupName = $secondaryResourceGroupName
    ServerName        = $secondaryServerName
    DatabaseName      = $databaseName
}
$database = Get-AzSqlDatabase @secondaryDatabaseParams
$database | Set-AzSqlDatabaseSecondary -PartnerResourceGroupName $primaryResourceGroupName -Failover

# Monitor Geo-Replication config and health after failover
$database = Get-AzSqlDatabase @secondaryDatabaseParams
$replicationLinkParams = @{
    PartnerResourceGroupName = $primaryResourceGroupName
    PartnerServerName        = $primaryServerName
}
$database | Get-AzSqlDatabaseReplicationLink @replicationLinkParams

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

A telepítés végső simí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

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

Parancs Jegyzetek
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 létrehoz.
New-AzSqlDatabase Egy adatbázist hoz létre a szerveren.
Set-AzSqlDatabase Az adatbázis tulajdonságait frissíti, vagy a rugalmas készletekbe, onnan ki, illetve azok között helyezi át az adatbázist.
New-AzSqlDatabaseSecondary Létrehoz egy másodlagos adatbázist egy meglévő adatbázishoz, és elindítja az adatreplikálást.
Get-AzSqlDatabase Lekér egy vagy több adatbázist.
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-AzResourceGroup Törli az összes beágyazott erőforrást tartalmazó erőforráscsoportot.