Série – Melhores Práticas e Recomendações – SQL Server em Máquinas Virtuais no Azure – Parte 1

Posted on maio 30, 2017

1


Introdução

Essa série de artigos irá mostrar como tirar o melhor do Microsoft Azure. Iremos verificar as melhores práticas e recomendações para o SQL Server em Máquinas Virtuais no Microsoft Azure por áreas como – Redução de Custo, Performance, Backup de SQL Server/Máquinas Virtuais, Processos de Automação, Monitoramento de Recursos e outras dicas e truques para você realmente entender o comportamento do SQL Server na Cloud da Microsoft.

 

Image result for cost reduction iconRedução de Custos de Infraestrutura [IaaS]

Desligamento das Máquinas Virtuais com Azure Automation

Quando pensamos no controle das máquinas virtuais no Azure ou em qualquer provedor de serviços em IaaS, é importante notar que nesse cenário somente é pago por máquinas ligadas dentro do DataCenter [Google, Amazon e Azure], sendo assim, podemos criar diversas estratégias e períodos de Cool-Down para diminuir gastos no final do mês. Acredite, com simples mudanças nas estratégias de backup e manutenção do banco de dados, é possível reduzir entre 15% a 55% do valor gasto mensalmente com máquinas no Azure. Sem alguma novidade para nós Administradores de Banco de Dados, máquinas com SQL Server instalados são as mais custosas dentro de qualquer DataCenter, sendo assim, podemos dependendo do negócio, criar rotinas de desligamento das máquinas durante o final de semana e até mesmo durante a semana.

Na maioria dos casos, máquinas de desenvolvimento ou homologação não necessitam estar ligadas no final de semana ou mesmo durante a semana é possível desligar entre 00:00 Hs e 06:00 Hs [sugestão], realizando a economia do gasto mensal da máquina. Para esse tipo de configuração, a ferramenta que você precisa estudar é o Azure Automation, dentro do Portal do Azure você também consegue encontrar modelos para ligar ou desligar suas máquina sem necessidade de criar seu próprio código para isso. Com esse recurso é possível agendar e organizar rotinas para desligamento ou otimização de qualquer recurso dentro do Azure, pense nesse recurso como o SQL Server Agent no Microsoft Azure.

azure_automation

Para banco de dados de produção, a estratégia que criei, foi a adição do recurso AlwaysOn Availablility Group e desligamento da máquina secundária todos os dias entre 00:00 Hs as 06:00 Hs, assim ainda conseguimos manter o SLA desejado e redução de custo drástico ao mesmo tempo. Importante entender que nesse caso, é necessário ajustar todas as rotinas de manutenção assim como entender o ambiente do cliente antes de pensar em seguir nessa direção. Outro ponto muito importante é, caso utilize AlwaysOn AG no Azure, tenha certeza de ter configurado o que chamamos de Availablility Set.

 

Availablility Set nada mais é do que a garantia [SLA] de que uma vez que máquinas sejam colocadas no mesma AS, Azure irá distribuir essas máquinas em lugares diferentes do DataCenter internamente, sendo assim, caso uma manutenção planejada do Azure aconteça irá ser garantido que pelo menos uma máquina dentro do AS esteja operacional e ligada.

Remoção de Arquivos de Backup no Azure Blob Storage

A partir do SQL Server 2012 SP1 CU2, a Microsoft disponibilizou uma nova modalidade de backup para URL, sendo assim agora é possível enviar seus arquivos de backup para um Blob Storage, normalmente com máquinas virtuais situadas dentro do DataCenter da Microsoft, utilizamos esse recurso para economizar espaço em disco ou camada de virtualização e garantir alta disponibilidade dos arquivos. Rotinas de manutenção de SQL Server não podem ser criadas sem os scripts do Ola Hallengren, com isso podemos especificar a URL em qual desejamos enviar os arquivos de backup, siga esse passo a passo para criação caso queira utilizar essa estratégia, sendo a mais recomenda caso use SQL Server em IaaS no Azure.

Porém é importante notar que utilizando essa estratégia, não possuímos a habilidade de controlar  a exclusão dos arquivos de backup no Blob Storage, sendo assim já presenciei casos aonde haviam mais de 63 TB de backups de  SQL Server, colocando isso em números/valor temos o valor mensal de R$ 26,369.28, utilize o Azure Calculator para medir gastos no Azure.

azure_calculator

Para evitar gastos desnecessários, podemos utilizar Powershell para criar rotinas no SQL Server Agent para realizar o purge dos backups dependendo do RTO/RPO da empresa é claro, eu recomendo a utilização desse script criado por Pieter Vanhove. Com esse script você poderá especificar a quantidade de dias de retenção dos arquivos e caso queira visualizar o Blob Storage do Azure, use o Microsoft Azure Storage Explorer.

Recomendações do Advisor no Portal do Microsoft Azure

Assim como o famoso AWS Trusted Advisor no Amazon AWS, o Azure Advisor é um guia que irá prover recomendações personalizadas para sua conta no Azure. Ele irá verificar recursos e otimizar sua experiência, verificando as melhores práticas e recomendando mudanças em 4 categorias – Alta Disponibilidade, Segurança, Performance e Custo.

azure_advisor

 

Com o Azure Advisor você conseguirá ter uma visão muito mais abrangente do que você pode melhorar e otimizar dentro do seu ambiente, as recomendações disponibilizam o tipo de impacto, descrição, recurso e quando foi a última atualização. Dica aqui é verificar por impacto = Low, Medium e High, sendo o High que trará mais resultado após mudança, se pegarmos uma das recomendações geradas, conseguimos ter uma informação bem detalhada do que é necessário realizar.

advisor_recommendation

Your virtual machine has one or more Standard Disks. You can improve the reliability of your disks by upgrading to Azure Premium Storage. Premium Storage delivers high-performance, low-latency disk support for virtual machines running I/O-intensive workloads. Learn more

All resource groups

Próximo Post – Melhorando Performance do SQL Server em Máquinas Virtuais no Azure