Es ist möglich per Powershell neue Datenbanken in eine Failover Group in Azure hinzuzufügen. Failover Groups arbeiten hinter den Kulissen mit Geo-Replication. Ähnlich wie bei Always On Clustern werden neue Datenbanken auf einem Azure SQL Server der Teil einer Failover Group ist, nicht automatisch zu dieser Failover Group hinzugefügt.
Dieses Hinzufügen lässt sich direkt per Powershell durchführen. Es wird dabei davon ausgegangen, dass bereits eine Verbindung von der Powershell zu Azure existiert (über Connect-AzAccount).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
$ResourceGroupName = "ResourceGroup1" $AzureSqlServerName = "AzSqlServer1" $FailoverGroupName = "FgGroup1" # Get Failover Group Object $FailoverGroup = Get-AzSqlDatabaseFailoverGroup -ResourceGroupName $ResourceGroupName ` -ServerName $AzureSqlServerName ` -FailoverGroupName $FailoverGroupName # Get List of all Databases in Failover Group $DatabaseFgList = ($FailoverGroup).DatabaseNames # Get Replication Role of Failover Group - If Secondary Switch it to Primary later $FGRole = $FailoverGroup.ReplicationRole # Get all Databases on Azure SQL Server, exclude System Databases $DatabaseServerList = (Get-AzSqlDatabase ` -ResourceGroupName $ResourceGroupName ` -ServerName $AzureSqlServerName | Where {$_.CurrentServiceObjectiveName -ne "System1"}).DatabaseName # Get List of Databases to add, that do not exist in Failover Group yet $DbsToAddList = $DatabaseServerList | Where {$_ -notin $DatabaseFgList} # Iterate over all Databases to add foreach($db in $DbsToAddList) { # If Role of failover group is secondary, switch it to primary to add new databases if($FGRole -eq "Secondary") { Switch-AzSqlDatabaseFailoverGroup -ResourceGroupName $ResourceGroupName ` -ServerName $AzureSqlServerName ` -FailoverGroupName $FailoverGroupName $FGRole = (Get-AzSqlDatabaseFailoverGroup -ResourceGroupName $ResourceGroupName ` -ServerName $AzureSqlServerName ` -FailoverGroupName $FailoverGroupName).ReplicationRole } # Add current database to Failover Group Add-AzSqlDatabaseToFailoverGroup -ServerName $AzureSqlServerName ` -ResourceGroupName $ResourceGroupName ` -Database (Get-AzSqlDatabase -ResourceGroupName $ResourceGroupName ` -ServerName $AzureSqlServerName -DatabaseName $db) ` -FailoverGroupName $FailoverGroupName } |
Will man hier eine volle Automatisierung nutzen, kann man beispielsweise das Powershell Script für Azure Automation anpassen und dann jede Stunde laufen lassen.
Die generelle Vorgehensweise ist dabei, alle Datenbanken durchzugehen, die auf einem Azure SQL Server existieren und noch nicht Teil der Failovergroup sind. Diese werden dann gezielt der Failovergroup hinzugefügt.