sql >> Base de Datos >  >> NoSQL >> MongoDB

Automatizar la comprobación del estado de la base de datos

Asegurarse de que la base de datos esté en buen estado es una de las cosas críticas e importantes que debe hacer un administrador de base de datos. Si descuidamos el mantenimiento de la base de datos, existe una mayor probabilidad de que nos encontremos con un problema; por ejemplo, un problema de rendimiento de la base de datos causado por una carga de trabajo que ha cambiado con el tiempo o una configuración incorrecta que conduce a una violación de datos.

La verificación periódica de la configuración, la utilización de recursos, los procedimientos de copia de seguridad y restauración, la seguridad de los datos y el rendimiento de las consultas pueden ayudar a evitar problemas con la base de datos. Necesitamos tener una verificación de base de datos estándar para nuestro entorno de base de datos, para que podamos monitorear si la base de datos todavía está bajo control.

¿Qué es una comprobación del estado de la base de datos?

La comprobación del estado de una base de datos consiste en una serie de tareas para comprobar el estado de nuestra base de datos. ¿Por qué necesitamos hacer un chequeo de salud? Necesitamos identificar y solucionar cualquier problema o anomalía en nuestro entorno de base de datos, ya sea un problema de rendimiento, un problema de configuración o algo que pueda causar una interrupción.

Podemos dividir el control de salud en algunas categorías:

  • Verificación de seguridad, para bloquear el acceso a la base de datos y asegurarse de que el tráfico provenga de una red confiable con el derecho privilegios

  • Verificación de configuración, para garantizar que la configuración cumpla con los criterios estándar definidos por la organización.

  • Comprobación de rendimiento, para garantizar que la base de datos utilice los recursos de hardware y responda a las aplicaciones.

  • Procedimientos de copia de seguridad y restauración, para garantizar que la copia de seguridad que hicimos de la base de datos se pueda restaurar.

De esas categorías, podemos hacer un desglose de lo que necesitamos verificar en la base de datos. Esto es muy importante, para que podamos tener un control detallado de cada aspecto. Por ejemplo:

  • Seguridad de la base de datos

  • Compare el usuario y los privilegios en la base de datos con el acceso a la matriz de usuarios que tenemos

  • Compruebe la dirección IP de la lista blanca en la base de datos, si el tráfico proviene de una red confiable

  • Asegúrese de que el registro de auditoría de la base de datos esté habilitado

  • Comprobación de configuración

  • Verifique el SSL que ya está implementado

  • Asegúrese de que la configuración de la base de datos sea correcta (permisos y propiedad)

  • Comprobación de rendimiento

  • Compruebe la proporción de aciertos de caché de la base de datos

  • Asegúrese de que la conexión a la base de datos sea suficiente para manejar el tráfico

  • Procedimiento de copia de seguridad y restauración

  • Programación de copia de seguridad adecuada, que ofrece el RPO acordado

  • Asegúrese de probar las copias de seguridad para saber si los datos se pueden restaurar

Con base en la lista anterior, podemos crear un script para verificar esos elementos en cada tipo de base de datos (por ejemplo, MySQL, PostgreSQL, MongoDB). Cada tipo de base de datos obviamente tendrá diferentes comandos.

Automatización de las comprobaciones de estado de la base de datos

No queremos ejecutar una tarea repetitiva semanal o mensualmente, la comprobación del estado de la base de datos es una tarea que requiere mucho tiempo. Ejecutamos el script en cada nodo de la base de datos, por lo que la automatización de las comprobaciones de estado nos ahorra bastante tiempo.

Según la lista de secuencias de comandos de verificación de estado, podemos crear una secuencia de comandos bash para ejecutar las tareas y programarlas con cron. A continuación se muestra solo una muestra de un informe de verificación de estado de base de datos simple:

#!/bin/sh
# Simple database check report
username = "audit_user"
password = "pwd001"
hostname = "db01-payment"
mycnf = "/etc/mysql/my.cnf"
dt=$(date '+%d/%m/%Y %H:%M:%S');
audit_name = "MySQL_Healthcheck_audit_report_"$dt

# check the queries
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Queries'" > $audit_name

# check open table cache hit ratio
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Table_open_cache_hits'" >> $audit_name

# check the ssl session mode
/bin/mysql -h $hostname -u $username  -p $password --skip-column-names -B -e "SHOW STATUS LIKE 'Ssl_session_cache_mode'" >> $audit_name

# check the buffer pool size
cat $mycnf | grep "innodb_buffer_pool_size" >> $audit_name

#check ssl key in my.cnf
cat $mycnf | grep "ssl_key" >> $audit_name

# check permission of my.conf
ls -ltr $mycnf >> $audit_name

Las comprobaciones de estado también se pueden automatizar mediante herramientas de gestión de configuración como Ansible, Salt,Chef o Puppet.

Automatización de las comprobaciones de estado de la base de datos con ClusterControl

ClusterControl es una plataforma de operaciones para bases de datos, muestra problemas de salud, rendimiento o disponibilidad del servidor dentro de su entorno de base de datos, todo desde una consola central. Admite la automatización de las comprobaciones de estado de la base de datos a través de informes operativos. Puede generar o programar los informes operativos, así como los informes de incidentes. Hay algunos tipos de informes, como se muestra a continuación:

El informe diario del sistema le brinda información sobre su clúster de base de datos actual que consta de diversa información, como el estado del servicio del nodo, el estado de la copia de seguridad, el tiempo de actividad de los nodos, el resumen de las principales consultas.

El informe de actualización de paquetes le brinda un resumen de los paquetes disponibles para la actualización desde el administrador de repositorios

El informe de cambios de esquema compara los cambios de la base de datos en una estructura de tabla que ocurrieron entre dos informes generados diferentes.

Los informes de copia de seguridad le brindan información sobre el resumen y los detalles de la copia de seguridad, por ejemplo, la última copia de seguridad creada, el estado de la copia de seguridad, el estado de verificación de la copia de seguridad y el período de retención de la copia de seguridad.

Además de los informes operativos, también están los asesores que le brindan información sobre la CPU, el disco, las conexiones de la base de datos, etc., como se muestra a continuación:

Las notificaciones por correo electrónico y alertas a través de canales de terceros configurados brindan información sobre cosas que van mal (por ejemplo, copias de seguridad fallidas, copias de seguridad no restaurables, fallas de nodos).

Schema Analyzer brinda información sobre índices duplicados/redundantes, tablas sin claves principales y tablas que utilizan el motor de almacenamiento MyISAM. Puede ser particularmente bueno conocer los índices redundantes, ya que aumentan el tamaño de la base de datos (y las copias de seguridad) y pueden ralentizar las actualizaciones en la tabla.