Instalar e configurar um servidor de banco de dados

Concluído

Depois que uma empresa tiver migrado seus bancos de dados locais para o Banco de Dados do Azure para MySQL/PostgreSQL, ela ainda precisará de uma maneira de monitorar o desempenho.

Como desenvolvedor de banco de dados, você pode usar ferramentas específicas para banco de dados e monitoramento de VM local. Agora que seus bancos de dados estão em execução no Azure, você pode aproveitar o portal para usar uma única ferramenta para monitorar todos os bancos de dados diferentes.

Nesta unidade, você examinará como Azure Monitor pode dar suporte ao monitoramento da integridade dos bancos de dados dos quais você é responsável. Depois de descobrir problemas, você verá como alterar a configuração de seus bancos de dados para resolver os problemas.

Como usar Azure Monitor para exibir a integridade de seus bancos de dados

Use o Azure Monitor para acompanhar o uso de recursos no Banco de Dados do Azure para MySQL/PostgreSQL. A página Métricas do servidor no portal do Azure permite que você crie gráficos que ajudam a detectar tendências de desempenho e identificar anomalias.

Métricas do Banco de Dados do Azure para MySQL/PostgreSQL

As métricas disponíveis para monitorar um servidor se enquadram em quatro categorias amplas:

  • Métricas de armazenamento
  • Métricas de conexão
  • Métricas de utilização de recursos de processamento de dados
  • Métricas de replicação

Métricas de armazenamento

As métricas de armazenamento acompanham o tamanho total de seus bancos de dados pelo servidor (Armazenamento usado) e a quantidade atual de espaço de armazenamento no servidor (Limite de armazenamento). Em um sistema ativo, você notará que a métrica de Armazenamento usado aumenta ao longo do tempo. Se você tiver a opção de aumento automático selecionada para o servidor, a métrica de Limite de armazenamento será ampliada ocasionalmente à medida que a quantidade de espaço livre diminui. O armazenamento extra é adicionado sempre que a quantidade de espaço livre cai abaixo de 5% do uso atual. Use a métrica de porcentagem de armazenamento para exibir a proporção de espaço usado para liberar espaço no servidor.

Se o servidor estiver gastando tempo regularmente com o aumento de armazenamento, considere atribuir mais espaço manualmente. Faça isso no portal do Azure selecionando a página Tipo de preço para seu servidor e use o controle deslizante Armazenamento. Lembre-se de que você é cobrado pelo armazenamento, portanto, não defina o armazenamento disponível como alto.

A métrica Armazenamento de backup usado mostra o espaço que seus backups estão usando. Essa métrica é importante de uma perspectiva de custo. Você não é cobrado pelo armazenamento de backup, desde que ele permaneça abaixo do tamanho do espaço de armazenamento alocado para seu servidor (conforme especificado pelo tipo de preço). Quando você estiver acima desse limite, incorrerá em encargos pelo armazenamento de backup.

Métricas de conexão

A métrica de Conexões ativas mostra para quantas conexões simultâneas o servidor tem suporte atualmente. Não pode ser igual ao número de usuários simultâneos, dependendo se você configurou um tipo de pool de conexões. No momento, o Banco de Dados do Azure para MySQL/PostgreSQL não fornece nenhum recurso de pool de conexões, mas você pode usar um serviço de proxy como PgBouncer* (para PostgreSQL) para implementar esse recurso. Para obter mais informações, consulte Práticas recomendadas de desempenho para usar o Banco de Dados do Azure para PostgreSQL – Pool de conexões

A métrica de Conexões com falha mostra com que frequência os usuários apresentaram credenciais inválidas. Um grande número desses eventos em um curto período pode indicar um ataque de força bruta.

Métricas de utilização de recursos de processamento de dados

Essas métricas ajudam você a monitorar como o servidor lida com a carga de trabalho.

A métrica de Porcentagem de CPU mostra o quão ocupada a CPU está. O alto uso da CPU não é um problema, a menos que tenha sido aumentado ao longo do tempo. A utilização da CPU acima de 90% e que continua crescendo indica que o seu sistema está se aproximando da capacidade de processamento. Você deve considerar a possibilidade de escalar verticalmente para um tipo de preço com mais recursos.

A métrica de Porcentagem de memória indica ocupação de memória. O Banco de Dados do Azure para MySQL/PostgreSQL usa memória para armazenar em cache e para executar os processos iniciados por cada solicitação do cliente. O uso de memória alta não é um problema até que se torne excessivo; isso geralmente é maior que 95%, dependendo da quantidade real de memória disponível. A disponibilidade de memória muito baixa pode causar falhas de conexão e desempenho lento devido à fragmentação de memória. Você deve monitorar essa métrica para determinar se a ocupação de memória está aumentando ao longo do tempo e dimensionar seu servidor de acordo.

A métrica de Porcentagem de E/S acompanha a quantidade de atividade de disco que está sendo executada pelo servidor. Esse valor deve ser o mais baixo possível. A E/S do disco é uma operação lenta. Um valor alto para essa métrica, em conjunto com um valor alto para a Porcentagem de memória, pode indicar que o servidor tem recursos insuficientes para armazenar dados em cache com eficiência e, em vez disso, precisa ler e gravar dados no armazenamento em disco. Um grau de atividade de E/S é inevitável, pois seus dados devem ser persistidos no disco em algum momento, e os logs de transações devem ser mantidos. Na maioria dos servidores de banco de dados, essa gravação é executada por um processo separado ou thread que é executado de forma assíncrona.

As métricas de Rede de entrada e Rede de saída mostram o volume de tráfego que entra e sai do servidor em conexões ativas. Os limites para esses números são determinados pela largura de banda do caminho entre os aplicativos cliente e o servidor.

Métricas de replicação

O Banco de Dados do Azure para PostgreSQL fornece as métricas Retardo máximo entre réplicas e Atraso de réplica para ajudá-lo a determinar a data em que todas as réplicas são atualizadas. Essas métricas só serão significativas se você tiver configurado réplicas somente leitura.

A métrica de Atraso máximo entre réplicas mostra quantos bytes a réplica mais lenta está atrás do mestre. Você só pode monitorar essa métrica a partir do mestre.

A métrica de Atraso de réplica mostra o tempo, em segundos, desde que a transação mais recente foi recebida do mestre e aplicada a uma réplica. Essa métrica faz sentido apenas quando exibida em uma réplica.

O Banco de Dados do Azure para MySQL fornece a métrica de Atraso da replicação em segundos. Essa métrica, que só pode ser monitorada a partir de uma réplica, mostra o número de segundos em que a réplica está atrasada em relação ao mestre.

Criar gráficos e alertas para monitorar o desempenho

A página Métricas de um servidor no portal do Azure permite que você crie gráficos que controlam os valores de métrica. As métricas são coletadas em intervalos de um minuto. Para cada métrica, você especifica uma agregação que determina como relatar essa métrica.

  • Média gera um valor médio para a métrica em cada minuto
  • Máx mostra o valor máximo obtido durante cada minuto
  • Mín mostra o menor valor
  • Soma totaliza a métrica
  • Contagem mostra quantas vezes o evento que gera a métrica ocorreu

Nem todas as agregações são necessariamente significativas para cada métrica.

O gráfico de exemplo abaixo capturou os valores médios minuto a minuto para métricas de percentual de CPU, porcentagem de memória, porcentagem de E/S e conexões ativas. Você verá que há 101 conexões ativas em execução simultaneamente. A utilização de CPU e memória é estável e a porcentagem de E/S está em 0. Neste exemplo, os aplicativos cliente estão executando cargas de trabalho com uso intensivo de leitura e os dados necessários são armazenados em cache na memória.

Image of the chart showing the values captured for the CPU percent, Memory percent, IO percent, and Active connections metrics

Observe que há um atraso de até cinco minutos entre as métricas que estão sendo capturadas e os resultados exibidos em um gráfico.

Se uma métrica indicar que um recurso está atingindo um ponto crítico, você poderá definir um alerta para notificar um administrador. O exemplo a seguir enviará um email para um administrador se a utilização de memória exceder 90%.

Image of the alerts page, showing a new alert that sends an email if memory utilization exceeds 90%

Configurar parâmetros do servidor

Os servidores nativos MySQL e PostgreSQL são altamente configuráveis, pois ambos usam definições de configuração armazenadas em arquivos de parâmetros. No PostgreSQL, essas informações são mantidas no arquivo postgresql.conf. No MySQL, os dados de configuração são armazenados em vários arquivos my.cnf. No Banco de Dados do Azure para MySQL/PostgreSQL, você não tem acesso direto a esses arquivos. Em vez disso, você exibe e modifica os parâmetros do servidor usando o portal do Azure ou a CLI do Azure.

Exibir e definir parâmetros usando o portal do Azure

Os parâmetros de configuração do servidor estão disponíveis na página Parâmetros do servidor do servidor no portal do Azure. Você pode modificar os valores de parâmetro conforme apropriado para seu servidor. A imagem abaixo mostra a página de parâmetros do servidor no Banco de Dados do Azure para PostgreSQL. A página correspondente no Banco de Dados do Azure para MySQL é semelhante.

Image of the Server parameters page for Azure Database for PostgreSQL

Nem todos os parâmetros de configuração do servidor estão disponíveis porque uma grande parte da configuração do servidor é controlada pelo Azure. Por exemplo, os parâmetros associados à alocação de memória estão ausentes. Além disso, o Banco de Dados do Azure para MySQL não dá suporte ao armazenamento ISAM, portanto, os parâmetros myisam não estão lá.

Alterações nos parâmetros marcados como Dinâmicos entram em vigor imediatamente. Os parâmetros marcados como Estáticos exigem que você reinicie o servidor. Faça isso na página de Visão geral do servidor.

Image of the Overview page for Azure Database for PostgreSQL. The Restart button is highlighted

Exibir e definir parâmetros usando a CLI do Azure

Você pode exibir e modificar parâmetros programaticamente com os comandos az mysql/postgres server configuration. Exiba as configurações de cada parâmetro de configuração com az mysql/postgres server configuration list e a página inicial em um único parâmetro usando az mysql/postgres server configuration show [parameter-name]. O snippet de código abaixo mostra um exemplo do Banco de Dados do Azure para PostgreSQL:

az postgres server configuration show \
    --resource-group northwindrg \
    --server-name northwind101 \
    --name vacuum_defer_cleanup_age

O resultado deverá ter a aparência a seguir:

{
  "allowedValues": "0-1000000",
  "dataType": "Integer",
  "defaultValue": "0",
  "description": "Number of transactions by which VACUUM and HOT cleanup should be deferred, if any.",
  "id": "**********************",
  "name": "vacuum_defer_cleanup_age",
  "resourceGroup": "northwindrg",
  "source": "system-default",
  "type": "Microsoft.DBforPostgreSQL/servers/configurations",
  "value": "0"
}

O item importante na saída é o campo valor, que mostra a configuração atual do parâmetro.

Use o comando az mysql/postgres server configuration set para alterar o valor de um parâmetro de configuração, da seguinte maneira:

az postgres server configuration set \
    --resource-group northwindrg \
    --server-name northwind101 \
    --name vacuum_defer_cleanup_age \
    --value 5

Se você precisar reiniciar um servidor depois de alterar um parâmetro estático, execute o comando az mysql/postgres server restart:

az postgres server restart \
    --resource-group northwindrg \
    --name northwind101