Exercício – Alta disponibilidade de uso geral
Na unidade anterior, você aprendeu sobre a arquitetura de alta disponibilidade do SQL do Azure. Neste exercício, você aprenderá como a camada de Uso Geral do Banco de Dados SQL do Azure se comporta de maneira semelhante a uma instância de cluster de failover local. A configuração local dessa funcionalidade pode ser demorada ou complicada, mas você a obtém com o SQL do Azure.
Neste exercício, você usará a ferramenta ostress, que talvez tenha usado no módulo anterior para criar uma carga de trabalho. Em seguida, você iniciará um failover usando o módulo Azure PowerShell no Azure Cloud Shell. Por fim, verá o efeito que o failover tem sobre a carga de trabalho ostress.
Alta disponibilidade básica na camada de serviço de Uso Geral do SQL do Azure
Neste exercício, você vai concluir as seguintes etapas:
- Executar a carga de trabalho do ostress.
- Confirme se o ambiente está configurado corretamente.
- Use o PowerShell para iniciar um failover do Banco de Dados SQL do Azure.
- Veja os resultados no ostress.
- Procurar sinais no portal de que um failover ocorreu.
Executar a carga de trabalho do ostress
A primeira etapa é criar uma carga de trabalho de execução longa. Essa carga de trabalho permite que você veja como um failover afeta a capacidade de ler e gravar dados e quanto tempo um failover leva na camada de serviço Uso Geral para o Banco de Dados SQL do Azure. Você usará o ostress.
Abra uma nova janela do Prompt de Comando no computador local. Use
cd
para acessar o diretório no repositório clonado ou baixado anteriormente que contém o módulo de disponibilidade. Por exemplo, você pode usar este comando:cd C:\Users\username\mslearn-azure-sql-fundamentals\05-Availability
O arquivo executável ostress está nessa pasta (ele é pequeno). A carga de trabalho ostress executa e se conecta a uma consulta simples 50 mil vezes.
Use o script ostress a seguir para executar a carga de trabalho. Substitua
serverName
pelo nome do servidor lógico do Banco de Dados SQL do Azure. Substituapassword
pela sua senha..\ostress.exe -S"serverName.database.windows.net" -Q"SELECT COUNT(*) FROM SalesLT.Customer" -U"cloudadmin" -d"AdventureWorks" -P"password" -n1 -r50000
Se a carga de trabalho estiver sendo executada corretamente, você verá o resultado da consulta
847
aparecendo repetidamente na janela Prompt de Comando.Se você quiser interromper a execução da carga de trabalho ostress antes que ela seja concluída, selecione Ctrl+C no terminal.
Se você quiser executar a carga de trabalho novamente, poderá executar o comando outra vez.
Usar o PowerShell no Azure Cloud Shell para iniciar um failover e observar os resultados
No terminal do Azure Cloud Shell no lado direito desta página, execute este script do PowerShell para configurar seu ambiente:
$resourceGroup = "<rgn>[sandbox resource group name]</rgn>" $database = "AdventureWorks" $server = Get-AzureRmSqlServer -ResourceGroupName $resourceGroup $server = $server.ServerName # Specify your default resource group and Azure SQL Database logical server az configure --defaults group=$resourceGroup sql-server=$server # Confirm the defaults are set az configure --list-defaults
Configure suas janelas para que você possa ver esse navegador e a janela Prompt de Comando ao mesmo tempo.
Execute este código no terminal do Azure Cloud Shell:
# Create a failover Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup ` -ServerName $server ` -DatabaseName $database
Observe os resultados no ostress da janela Prompt de Comando. Enquanto esse comando estiver em execução, você deverá observar as alterações que aparecem na janela Prompt de Comando. Você observará que não é possível acessar o banco de dados enquanto o failover ocorre. O failover será concluído após cerca de 30 segundos, e você verá que a carga de trabalho é executada com êxito novamente. A lógica de repetição em seu aplicativo é importante porque, se o failover do Azure falhar (por vários motivos), você não vai querer que o aplicativo falhe ou tenha um tempo de inatividade maior que necessário para que o failover.
Essa capacidade de criar um failover por comando pode ser útil em determinados cenários. Observe que o serviço o impede de fazer isso com muita frequência. Execute o seguinte comando para tentar outro failover:
# Create a failover again Invoke-AzSqlDatabaseFailover -ResourceGroupName $resourceGroup ` -ServerName $server ` -DatabaseName $database
Você verá um erro semelhante a este:
Invoke-AzSqlDatabaseFailover: Long running operation failed with status 'Failed'. Additional Info:'There was a recent failover on the database or pool if database belongs in an elastic pool. At least 15 minutes must pass between database failovers.'
Agora você pode interromper a carga de trabalho na janela Prompt de Comando selecionando a janela e, em seguida, selecionando Ctrl+C. Você pode deixar a janela aberta porque usará a mesma carga de trabalho no próximo exercício.
Talvez você se pergunte se há uma forma de verificar se ocorreu um failover. No momento, não há mensagem de "Failover ocorrido" clara, mas o Resource Health pode ser um bom indicador.
No portal do Azure, acesse o banco de dados SQL do Azure. No painel esquerdo, em Ajuda, selecione Resource Health. De 5 a 15 minutos após um failover, você poderá ver um evento de integridade semelhante ao mostrado na captura de tela a seguir. Esse evento pode indicar várias coisas, mas uma possibilidade é que algo aconteceu e o failover do Azure falhou.