Supervisión y configuración de un servidor de bases de datos

Completado

Una vez que una empresa migra sus bases de datos locales a Azure Database for MySQL o PostgreSQL, de todos modos necesita supervisar el rendimiento.

Como desarrollador de bases de datos, está acostumbrado a usar herramientas específicas para las bases de datos y la supervisión de máquinas virtuales locales. Ahora que las bases de datos se ejecutan en Azure, puede aprovechar el portal para usar una herramienta única para supervisar todas las bases de datos distintas.

En esta unidad, veremos cómo Azure Monitor puede ayudarlo a supervisar el estado de las bases de datos de las que es responsable. Una vez que detecte problemas, verá cómo cambiar la configuración de las bases de datos para resolverlos.

Uso de Azure Monitor para ver el estado de las bases de datos

Use Azure Monitor para hacer el seguimiento del uso de recursos en Azure Database for MySQL/PostgreSQL. La página Métricas del servidor en Azure Portal le permite crear gráficos que ayudan a detectar tendencias en el rendimiento y anomalías.

Métricas de Azure Database for MySQL/PostgreSQL

Las métricas disponibles para supervisar un servidor se dividen en cuatro categorías amplias:

  • Métricas de almacenamiento
  • Métricas de conexión
  • Métricas de uso de recursos para el procesamiento de datos
  • Métricas de replicación

Métricas de almacenamiento

Las métricas de almacenamiento hacen el seguimiento del tamaño total de las bases de datos en el servidor (almacenamiento usado) y la cantidad actual de espacio de almacenamiento en el servidor (límite de almacenamiento). En un sistema activo, es probable que la métrica Almacenamiento usado aumente con el tiempo. Si tiene seleccionada la opción de crecimiento automático para el servidor, la métrica Límite de almacenamiento aumenta ocasionalmente a medida que disminuye la cantidad de espacio libre. Se agrega almacenamiento adicional cada vez que la cantidad de espacio libre cae por debajo del 5 por ciento del uso actual. Use la métrica Porcentaje de almacenamiento para ver la proporción de espacio usado con respecto al espacio libre en el servidor.

Si el servidor suele dedicar mucho tiempo a aumentar el almacenamiento, considere la posibilidad de asignar más espacio de manera manual. Para ello, en Azure Portal, seleccione la página Plan de tarifa correspondiente al servidor y use el control deslizante Almacenamiento. Recuerde que se le cobra según el almacenamiento, así es que se recomienda que no establezca al principio el almacenamiento disponible en alto.

La métrica Almacenamiento de copia de seguridad usado muestra cuánto espacio ocupan las copias de seguridad. Esta métrica es importante desde una perspectiva de costos. No se le cobra por el almacenamiento de copia de seguridad, siempre que se mantenga por debajo del tamaño del espacio de almacenamiento asignado al servidor (según lo especificado en el plan de tarifa). Cuando supere este límite, incurrirá en cargos por el almacenamiento de copia de seguridad.

Métricas de conexión

La métrica Conexiones activas muestra el número de conexiones simultáneas que el servidor admite actualmente. Podría no ser igual que el número de usuarios simultáneos, en función de si configuró algún tipo de agrupación de conexiones. Actualmente, Azure Database for MySQL/PostgreSQL no proporciona ninguna funcionalidad de agrupación de conexiones, pero se puede usar un servicio de proxy como PgBouncer* (para PostgreSQL) para implementar esta característica. Para más información, consulte el artículo sobre los procedimientos recomendados de rendimiento para usar Azure Database for PostgreSQL: agrupación de conexiones.

La métrica Conexiones con error muestra la frecuencia con que los usuarios presentan credenciales no válidas. Una gran cantidad de este tipo de eventos durante un breve período de tiempo puede indicar un ataque por fuerza bruta.

Métricas de uso de recursos para el procesamiento de datos

Estas métricas lo ayudan a supervisar el modo en que el servidor controla la carga de trabajo.

La métrica Porcentaje de CPU muestra qué tan ocupada está la CPU. Un uso elevado de la CPU no supone un problema, a menos que haya aumentado con el tiempo. El uso de la CPU que supera el 90 % y sigue aumentando indica que el sistema se acerca al límite de capacidad de procesamiento. Considere la posibilidad de escalar verticalmente a un plan de tarifa con más recursos.

La métrica Porcentaje de memoria indica la ocupación de la memoria. Azure Database for MySQL/PostgreSQL usa la memoria para almacenar datos en caché y para ejecutar los procesos iniciados por cada solicitud de cliente. Un uso elevado de la memoria no supone un problema hasta que se vuelve excesivo, lo que suele ocurrir por sobre el 95 %, en función de la cantidad real de memoria disponible. Una disponibilidad de memoria muy baja puede producir errores de conexión y disminuir el rendimiento debido a la fragmentación de la memoria. Debe supervisar esta métrica para determinar si el uso de la memoria aumenta a lo largo del tiempo y, si es así, escalar el servidor en consecuencia.

La métrica Porcentaje de E/S hace el seguimiento de la cantidad de actividad de disco que lleva a cabo el servidor. Idealmente, este valor debe ser lo más bajo posible. E/S de disco es una operación lenta. Un valor alto para esta métrica, junto con un valor alto para Porcentaje de memoria, puede indicar que el servidor no tiene recursos suficientes para almacenar en caché los datos de forma eficaz y, en su lugar, tiene que leer y escribir datos en el almacenamiento en disco. Un grado de actividad de E/S es inevitable, ya que los datos se deben conservar en el disco en algún momento y deben mantenerse los registros de transacciones. En la mayoría de los servidores de bases de datos, esta escritura se realiza mediante un proceso o subproceso independiente que se ejecuta de forma asincrónica.

Las métricas Entrada de red y Salida de red muestra el volumen de tráfico que entra y sale del servidor a través de conexiones activas. Los límites de estas cifras los determina el ancho de banda de la ruta de acceso entre las aplicaciones cliente y el servidor.

Métricas de replicación

Azure Database for PostgreSQL proporciona las métricas Retraso máximo entre réplicas y Retraso entre réplicas para ayudarlo a determinar qué tan actualizadas están las réplicas. Estas métricas solo son significativas si configuró réplicas de solo lectura.

La métrica Retraso máximo entre réplicas muestra cuántos bytes tras el maestro está la réplica más lenta. Esta métrica solo se puede supervisar desde el maestro.

La métrica Retraso entre réplicas muestra el tiempo, en segundos, que transcurrió desde que se recibió la última transacción del maestro y se aplicó a una réplica. Esta métrica solo tiene sentido cuando se ve en una réplica.

Azure Database for MySQL incluye la métrica Retraso entre réplicas en segundos. Esta métrica, que solo se puede supervisar desde una réplica, muestra cuántos segundos de retraso con el respecto al maestro tiene la réplica.

Creación de gráficos y alertas para supervisar el rendimiento

La página Métricas de un servidor en Azure Portal le permite crear gráficos que hagan el seguimiento de los valores de métrica. Las métricas se recopilan en intervalos de un minuto. Para cada métrica, se especifica una agregación que determina cómo informar esa métrica.

  • Average genera un valor promedio para la métrica en cada minuto.
  • Max muestra el valor máximo obtenido durante cada minuto.
  • Min muestra el valor más pequeño.
  • Sum indica el total de la métrica.
  • Count muestra la cantidad de veces que se produjo el evento que genera la métrica.

No todas las agregaciones son necesariamente significativas para cada métrica.

En el gráfico de ejemplo siguiente se capturaron los valores promedio de minuto a minuto para las métricas Porcentaje de CPU, Porcentaje de memoria, Porcentaje de E/S y Conexiones activas. Verá que hay 101 conexiones activas que se ejecutan de manera simultánea. El uso de CPU y memoria es estable y el porcentaje de E/S está en 0. En este ejemplo, las aplicaciones cliente realizan cargas de trabajo con muchas operaciones de lectura y los datos necesarios se almacenan en caché.

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

Tenga en cuenta que hay un retraso de hasta cinco minutos entre que se capturan las métricas y se muestran los resultados en un gráfico.

Si una métrica indica que un recurso está llegando a un punto crítico, puede establecer una alerta para notificar a un administrador. En el ejemplo siguiente se envía un correo electrónico a un administrador si el uso de la memoria supera el 90 por ciento.

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

Configuración de parámetros del servidor

Los servidores MySQL y PostgreSQL nativos son altamente configurables, ya que ambos usan valores de configuración almacenados en archivos de parámetros. En el caso de PostgreSQL, esta información se guarda en el archivo postgresql.conf. En el caso de MySQL, los datos de configuración se almacenan en varios archivos my.cnf. En Azure Database for MySQL/PostgreSQL, no tiene acceso directo a estos archivos. En su lugar, puede ver y modificar los parámetros del servidor mediante Azure Portal o la CLI de Azure.

Visualización y establecimiento de parámetros mediante Azure Portal

Los parámetros de configuración del servidor están disponibles en la página Parámetros del servidor correspondiente a su servidor en Azure Portal. Puede modificar los valores de los parámetros según corresponda para el servidor. En la imagen que aparece a continuación se muestra la página de parámetros del servidor para Azure Database for PostgreSQL. La página correspondiente para Azure Database for MySQL es similar.

Image of the Server parameters page for Azure Database for PostgreSQL

No todos los parámetros de configuración del servidor están disponibles, porque Azure controla gran parte de la configuración del servidor. Por ejemplo, faltan los parámetros asociados a la asignación de memoria. Además, Azure Database for MySQL no admite el almacenamiento ISAM, por lo que los parámetros myisam no aparecen ahí.

Los cambios en los parámetros que están marcados como Dinámicos surten efecto de inmediato. Los parámetros marcados como Estáticos requieren que se reinicie el servidor. Puede hacerlo en la página Información general del servidor.

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

Visualización y establecimiento de parámetros mediante la CLI de Azure

Puede ver y modificar los parámetros mediante programación con los comandos az mysql/postgres server configuration. Vea los valores de cada parámetro de configuración con az mysql/postgres server configuration list y acceda a un solo parámetro con az mysql/postgres server configuration show [parameter-name]. El fragmento de código siguiente muestra un ejemplo de Azure Database for PostgreSQL:

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

El resultado debería tener un aspecto similar al siguiente:

{
  "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"
}

El elemento importante de la salida es el campo value, que muestra la configuración actual del parámetro.

Use el comando az mysql/postgres server configuration set para cambiar el valor de un parámetro de configuración, como se indica a continuación:

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

Si necesita reiniciar un servidor después de cambiar un parámetro estático, ejecute el comando az mysql/postgres server restart:

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