/*================================================================================== Curso: SQL SERVER 2019 https://www.udemy.com/course/draft/3957796/?referralCode=FB10D369E786D9FE8A48 Instrutor: Sandro Servino https://www.linkedin.com/in/sandroservino/?originalSubdomain=pt https://filiado.wixsite.com/sandroservino AZURE - Serviço na Nuvem da Microsoft EXTRAS, ELASTIC POOLS e FAILOVER GROUP ==================================================================================*/ -- VAMOS AO LAB -- PASSOS -- 1. Vamos criar um novo resource group chamado sqlelasticpoolsdbs, -- e um banco de dados chamado clientesregionais, em um servidor novo chamado -- srvep1. -- Como exemplo, vamos criar uma conta de admin nova chamada admepadmin e vamos criar -- em East US. -- Este servidor poderia ser criado antecipadamente através do Azure SQL. -- 1.1 Nesta opcao Want to use SQL elastic pool, vamos selecionar a opcao Yes, e -- na opcao Elastic pool, escolha a opcao de criar uma nova Elastic pool chamado ep1 -- 1.2 No proximo campo Compute + storage defina a capacidade do server -- 1.3 Na aba Network, escolha a opcao Public endpoint, para trabalharmos em nosso LAB. -- Para as duas proximas opcoes (Allow Azure services and resources to access this server -- e Add current client IP address) vamos permitir e depois podera alterar na configuracao de firewall deste -- servidor a partir de politicas criadas pela equipe de network ou seguranca da sua empresa -- https://docs.microsoft.com/pt-br/azure/azure-sql/database/network-access-controls-overview#allow-azure-services -- 1.4 Na aba securiry, nao precisa ativar o Azure Defender para SQL (tem custo mensal) -- 1.5 Em additional setting, inicie com uma base de dados em branco com a opcao NONE e se desejar mude o -- collation para SQL_Latin1_General_CP1_CI_AI -- 1.6 Coloque um tag se desejar e na ultima aba mande criar o banco de dados, que já estará no Elastic pools. -- Repare no custo mensal -- 1.7 Acesse em propriedades, e veja o nome do servidor srvep.database.windows.net, ou na propria tela do recurso SQL DATABASE. -- 1.8 Agora, acesse o servidor srvep.database.windows.net usando o SSMS. Repare que estará na instacia sql database o banco que criamos. -- Se tiver algum problema de conexao, acesse a opcao Set server Firewall na tela da Azure SQL DATABASE. e adicione (add) seu -- OBS> Note que agora, abaixo do nome do server aparece o nome do Elastic pool que ele faz parte, no nosso caso ep1. -- 2. Vamos clicar no nome do Elastic pool ep1 ou procure SQL elastic pool no cabecalho da pagina. -- Nesta pagina geral veja a quantidade maxima de gigabytes que este elastic pool podera utilizar, ou seja 100gb -- Poderá ser alterado este limite na opcao Resource configuration ou botão Configure. -- Repare em Elastic databases, a quantidade de bases de dados que estão neste pool. Poderá incluir e remover bases de dados -- clicando na quantidade de bases no pool. -- 2.1 Poderá verificar na opcao Activity log para ver o que ja foi feito e por quem. -- 2.2 Posso ir na opcao Database Resource Utilization para analisar o gasto em termos de disco, cpu por -- database dentro do pool -- 2.3 Na tela de recursos do Elastic pools, vamos escolher a opcao Create database e vamos criar uma nova database -- Em database name coloque db2 e clique no botão Create. -- 2.4 Vá para a pagina inicial da Azure e veja que agora existe Elastic pool. Selecione e acesse a Elastic pool que criamos. -- Repare agora no campo Elastic databases, que agora existem 2 bases de dados fazendo parte deste pool. -- Ao clicar na quantidade de databases, será aberto um novo formulário onde poderá acrescentar aqui ou remover uma database -- deste pool. Role a tela e veja as databases pertencentes ao pool. -- Se quiser remover uma database do pool, marque no final da tela e selecione a opcao para remover do pool. Poderá recolocar. -- 2.5 Poderá ainda na opcao Poll setting aumentar ou diminuir a capacidade maxima de um pool geral ou -- por database, na opcao Per database settings. Altere e clique em Save no cabecalho. -- 2.6 Vá para o SSMS, de um refresh e veja as 2 bases de dados neste servidor (srvep.database.windows.net) -- 2.7 Vá na opcao Database Resources Utilization e veja as duas bases de dados. ------------------------------------------------------------------------------------------------------------------------------------- -- FAILOVER GROUP -- https://docs.microsoft.com/en-us/azure/azure-sql/database/failover-group-add-elastic-pool-tutorial?tabs=azure-portal -- https://docs.microsoft.com/en-us/azure/azure-sql/database/auto-failover-group-overview?tabs=azure-powershell -- O recurso de grupos de failover automático permite gerenciar a replicação e o failover de um grupo de bancos de dados -- em um servidor ou todos os bancos de dados em uma instância gerenciada para OUTRA REGIÃO DE FORMA ASSINCRONA. -- 3. Vamos configurar agora um failover group automatico para replicar todas as bases de dados que estao dentro do pool, no servidor srvep1 -- para outra REGIAO para que se houver uma indisponibilidade sera feito um failover automatico. Para isto vamos criar um servidor novo srvepsecond -- 3.1 Para iniciar a criação de um failover group, selecione uma das sql database criadas que irá participar do failover group -- e em server name, clique por exemplo no servidor criado anteriormente: srvep.database.windows.net. -- No menu lateral esquerdo, em Data management, escolha a opcao Failover groups. -- 3.2 Clique Add Group. Em failOver Group Name crie um nome como por exemplo fgsrvep. -- Em server, vamos criar um novo servidor chamado srvepsecond e vamos colocar em uma regiao diferente (OBRIGATORIO) de East US, como West US 2 -- No campo Read/Write failover policy deixe Automatic e em Read/Write grace period (hour) deixe 1 hours. -- Escolha as bases de dados que estarao no Failover Group. Clique no elastic pool criado anteriormente. -- Irá aparecer uma mensagem para criar um novo elastic pool igual as as bases de dados no novo servidor. -- e clicar em CREATE. -- Clicar em Failover Group name criado e verificar o recurso criado. Se nao achar, procure Azure SQL e selecione o servidor srvep1 -- e depois failover groups. Escolha o que foi criado. -- Poderá nesta tela adicionar nova base de dados no failover group, remover base de dados. No botao configuracoes poderemos mudar modo de failover de automatic para manual. -- Poderá fazer um failover normal garantindo a sincronizacao dos dados e uma failover forcado que poderá ter perda de dados ainda nao replicado no servidor secundario. -- Conectar nos dois servidores no ssms (srvep1.database.windows.net e srvepsecond.database.windows.net), criar tabela no servidor primario e inserir -- dados e verificar no servidor secundario. Se houver algum problema de acesso, acrescentar ip do client no firewall do banco de dados. -- Criar uma tabela em um banco no servidor primario srvep1 e veja a tabela sendo replicada para o mesmo banco de dados no servidor secundario srvepsecond -- que está em outra regiao. -- Vamos rodar no ssms select @@servername -- Vamos fazer um failover normal. -- Fecha a janela do ssms, abra uma nova coenaxao no listener e rodar novamente no ssms select @@servername -- No campo Read/write listener endpoint, copiar o link do listener e acessar no SSMS. É este endereco que deverá estar na APP, onde sempre irá apontar -- para o servidor primario e bases de dados que estarão no failover group. O DNS será virado automaticamente pela AZURE. -- Neste campo Read-only listener endpoint, poderá pegar o endereco e enviar por exemplo para relatorios para nao sobrecarregar o servidor e base primaria. -- VAMOS AGORA EM RESOURCE GROUP E DELETAR O RESOURCE GROUP sqlelasticpoolsdbs /*======== DICAS ver teste grafico https://docs.microsoft.com/en-us/azure/azure-sql/database/auto-failover-group-overview?tabs=azure-powershell - Read/Write failover - Por padrão, um grupo de failover é configurado com uma política de failover automático. O Azure dispara o failover depois que a falha é detectada e o período Read/Write grace period (hour) expirou. - Grace period with data loss Significa que: Quando ocorre uma interrupção na minha região primária onde reside meu banco de dados primário, o ponto de extremidade de leitura / gravação aponta para o primário e somente após 60 minutos ele executa failover para o secundário, que se torna o novo primário." Ele não pode fazer failover automaticamente imediatamento em um incidente, mesmo quando os dados estão sincronizados, porque a solução de alta disponibilidade na região primária está tentando fazer a mesma coisa, e quase todo o tempo seu banco de dados primário voltará rapidamente na região primária. Executar um failover automático entre regiões interfere nisso. A razão pela qual o período de carência está presente é porque pode haver dados não sincronizados no primário, que serão sobrescritos ou jogados fora, se o secundário se tornar o novo primário" E para permitir que o banco de dados faça failover na região primária. Preparando-se para a perda de dados: Se uma interrupção for detectada, o Azure aguardará o período especificado por GracePeriodWithDataLossHours. O valor padrão é 1 hora. Se você não pode perder dados, certifique-se de definir GracePeriodWithDataLossHours para um número suficientemente grande, como 24 horas. Use o failover de grupo manual para fazer o failback do secundário para o primário. ============*/ -- FIM LAB