sql >> Base de Datos >  >> RDS >> Mysql

Supervisión y gestión de operaciones de MySQL 8.0 con ClusterControl

Los usuarios de bases de datos de código abierto a menudo tienen que usar una combinación de herramientas y scripts propios para administrar sus entornos de bases de datos de producción. Sin embargo, aunque tenga scripts propios en la solución, es difícil mantenerlo y estar al día con las nuevas características de la base de datos, los requisitos de seguridad o las actualizaciones. Con las nuevas versiones principales de una base de datos, incluida MySQL 8.0, esta tarea puede volverse aún más difícil.

En el corazón de ClusterControl se encuentra su funcionalidad de automatización que le permite automatizar las tareas de la base de datos que debe realizar regularmente, como implementar nuevas bases de datos, agregar y escalar nuevos nodos, administrar copias de seguridad, alta disponibilidad y conmutación por error, cambios de topología, actualizaciones y más. Los procedimientos automatizados son precisos, consistentes y repetibles para que pueda minimizar el riesgo de cambios en los entornos de producción.

Además, con ClusterControl, los usuarios de MySQL ya no están sujetos al bloqueo del proveedor; algo que fue cuestionado por muchos recientemente. Puede implementar e importar una variedad de versiones y proveedores de MySQL desde una sola consola de forma gratuita.

En este artículo, le mostraremos cómo implementar MySQL 8.0 con una configuración probada en batalla y administrarla de forma automatizada. Aquí encontrará cómo hacerlo:

  • Instalación de ClusterControl
  • Proceso de implementación de MySQL
    • Implementar un nuevo clúster
    • Importar clúster existente
  • Escalando MySQL
  • Seguridad de MySQL
  • Supervisión y tendencias
  • Copia de seguridad y recuperación
  • Recuperación automática de nodos y clústeres (conmutación por error automática)

Instalación de ClusterControl

Para comenzar con ClusterControl, necesita una máquina virtual o un host dedicado. Los requisitos de la máquina virtual y los sistemas compatibles se describen aquí. La máquina virtual base puede comenzar desde 2 GB, 2 núcleos y 20 GB de espacio en disco, ya sea en las instalaciones o en la nube.

La instalación está bien descrita en la documentación, pero básicamente, descarga un script de instalación que lo guía a través de los pasos. El script del asistente configura la base de datos interna, instala los paquetes, repositorios y otros ajustes necesarios. Para entornos sin acceso a Internet, puede utilizar el proceso de instalación sin conexión.

ClusterControl requiere acceso SSH a los hosts de la base de datos, y el monitoreo puede estar basado en agentes o sin agentes. La administración es sin agentes.

Para configurar SSH sin contraseña para todos los nodos de destino (ClusterControl y todos los hosts de bases de datos), ejecute los siguientes comandos en el servidor de ClusterControl:

$ ssh-keygen -t rsa # press enter on all prompts
$ ssh-copy-id -i ~/.ssh/id_rsa [ClusterControl IP address]
$ ssh-copy-id -i ~/.ssh/id_rsa [Database nodes IP address] # repeat this to all target database nodes

Una de las formas más convenientes de probar el control de clústeres puede ser la opción de ejecutarlo en un contenedor docker.

docker run -d --name clustercontrol \
--network db-cluster \
--ip 192.168.10.10 \
-h clustercontrol \
-p 5000:80 \
-p 5001:443 \
-v /storage/clustercontrol/cmon.d:/etc/cmon.d \
-v /storage/clustercontrol/datadir:/var/lib/mysql \
-v /storage/clustercontrol/sshkey:/root/.ssh \
-v /storage/clustercontrol/cmonlib:/var/lib/cmon \
-v /storage/clustercontrol/backups:/root/backups \
severalnines/clustercontrol

Después de una implementación exitosa, debería poder acceder a la interfaz de usuario web de ClusterControl en {dirección IP del host}:{puerto del host}, por ejemplo:

HTTP: http://192.168.10.100:5000/clustercontrol
HTTPS: https://192.168.10.100:5001/clustercontrol

Implementación y escalabilidad

Implementar MySQL 8.0

Una vez que ingresamos a la interfaz de ClusterControl, lo primero que debemos hacer es implementar una nueva base de datos o importar una existente. La nueva versión 1.7.2 introduce soporte para la versión 8.0 de Oracle Community Edition y Percona Server. Al momento de escribir este blog, las versiones actuales son Oracle MySQL Server 8.0.15 y Percona Server for MySQL 8.0-15. Seleccione la opción "Implementar clúster de base de datos ” y siga las instrucciones que aparecen.

ClusterControl:implementar clúster de base de datos

Al elegir MySQL, debemos especificar Usuario, Clave o Contraseña y puerto para conectarnos por SSH a nuestros servidores. También necesitamos un nombre para nuestro nuevo clúster y si queremos que ClusterControl instale el software y las configuraciones correspondientes por nosotros.

Después de configurar la información de acceso SSH, debemos ingresar los datos para acceder a nuestra base de datos. También podemos especificar qué repositorio usar. La configuración del repositorio es un aspecto importante para los clústeres y servidores de bases de datos. Puede tener tres tipos de repositorios al implementar un servidor/clúster de base de datos mediante ClusterControl:

  • Usar repositorio de proveedores
    Aprovisione el software configurando y utilizando el repositorio de software preferido del proveedor de la base de datos. ClusterControl instalará la última versión de lo que proporciona el repositorio del proveedor de la base de datos.
  • No configurar repositorios de proveedores
    Aprovisione software utilizando el repositorio de software preexistente ya configurado en los nodos. El usuario debe configurar el repositorio de software manualmente en cada nodo de la base de datos y ClusterControl utilizará este repositorio para la implementación. Esto es bueno si los nodos de la base de datos se ejecutan sin conexión a Internet.
  • Usar repositorios reflejados (Crear nuevo repositorio)
    Cree y refleje el repositorio del proveedor de la base de datos actual y luego implemente usando el repositorio local reflejado. Esto le permite "congelar" las versiones actuales de los paquetes de software.

En el siguiente paso, debemos agregar nuestros servidores al clúster que vamos a crear. Al agregar nuestros servidores, podemos ingresar la IP o el nombre de host y luego elegir la interfaz de red. Para esto último, debemos tener un servidor DNS o haber agregado nuestros servidores MySQL al archivo de resolución local (/etc/hosts) de nuestro ClusterControl, para que resuelva el nombre correspondiente que desea agregar.

En la pantalla podemos ver un ejemplo de implementación con un servidor maestro y dos esclavos. La lista de servidores es dinámica y le permite crear topologías sofisticadas que se pueden ampliar después de la instalación inicial.

ClusterControl:definir topología

Cuando todo esté listo, presione el botón de despliegue. Puede monitorear el estado de la creación de nuestra nueva configuración de replicación desde el monitor de actividad de ClusterControl. El proceso de implementación también se ocupará de la instalación de herramientas mysql populares como percona toolkit y percona-xtradb-backup.

ClusterControl:Implementar detalles del clúster

Una vez finalizada la tarea, podemos ver nuestro clúster en la pantalla principal de ClusterControl y en la vista de topología. Tenga en cuenta que también agregamos un balanceador de carga (ProxySQL) frente a las instancias de la base de datos.

ClusterControl:Topología

Como podemos ver en la imagen, una vez que tenemos nuestro clúster creado, podemos realizar varias tareas sobre él, directamente desde la sección de topología.

ClusterControl:Gestión de topología

Importar un nuevo clúster

También tenemos la opción de administrar una configuración existente importándola a ClusterControl. Dicho entorno puede ser creado por ClusterControl u otros métodos (puppet, chef, ansible, docker…). El proceso es simple y no requiere conocimientos especializados.

ClusterControl:importar clúster existente

En primer lugar, debemos introducir las credenciales de acceso SSH a nuestros servidores. Luego ingresamos las credenciales de acceso a nuestra base de datos, el directorio de datos del servidor y la versión. Añadimos los nodos por IP o hostname, de la misma forma que cuando desplegamos, y pulsamos en Importar. Una vez finalizada la tarea, estamos listos para gestionar nuestro clúster desde ClusterControl. En este punto también podemos definir las opciones para la recuperación automática de nodos o clústeres.

Escalando MySQL

Con ClusterControl, agregar más servidores al servidor es un paso fácil. Puede hacerlo desde la GUI o la CLI. Para usuarios más avanzados, puede usar ClusterControl Developer Studio y escribir una condición de base de recursos para expandir su clúster automáticamente.

Al agregar un nuevo nodo a la configuración, tiene la opción de utilizar la copia de seguridad existente, por lo que no es necesario sobrecargar el nodo principal de producción con trabajo adicional.

ClusterControl escalando MySQL

Con el soporte incorporado para balanceadores de carga (ProxySQL, Maxscale, HAProxy), puede agregar y eliminar nodos de MySQL dinámicamente. Si desea obtener más información sobre la mejor manera de administrar la replicación y la agrupación en clústeres de MySQL, lea el documento técnico Replicación de MySQL para replicación HA.

Proteger MySQL

MySQL viene con muy poca seguridad lista para usar. Esto se ha mejorado con la versión reciente; sin embargo, los sistemas de grado de producción aún requieren ajustes en la configuración predeterminada de my.cnf.

ClusterControl elimina los errores humanos y brinda acceso a un conjunto de funciones de seguridad para proteger automáticamente sus bases de datos contra ataques y otras amenazas.

ClusterControl habilita el soporte SSL para conexiones MySQL. Habilitar SSL agrega otro nivel de seguridad para la comunicación entre las aplicaciones (incluido ClusterControl) y la base de datos. Los clientes de MySQL abren conexiones cifradas a los servidores de la base de datos y verifican la identidad de esos servidores antes de transferir cualquier información confidencial.

ClusterControl ejecutará todos los pasos necesarios, incluida la creación de certificados en todos los nodos de la base de datos. Dichos certificados se pueden mantener más adelante en la pestaña Administración de claves.

ClusterControl:Administrador de claves SSL

Las instalaciones del servidor Percona vienen con soporte adicional para un complemento de auditoría. La auditoría continua es una tarea imperativa para monitorear su entorno de base de datos. Al auditar su base de datos, puede lograr la rendición de cuentas por las acciones realizadas o el contenido al que se accedió. Además, la auditoría puede incluir algunos componentes críticos del sistema, como los asociados con los datos financieros para respaldar un conjunto preciso de regulaciones como SOX o la regulación GDPR de la UE. El proceso guiado le permite elegir qué se debe auditar y cómo mantener los archivos de registro de auditoría.

ClusterControl:Habilitar registro de auditoría para Percona Server 8.0

Monitoreo

Cuando trabaje con sistemas de bases de datos, debería poder monitorearlos. Eso le permitirá identificar tendencias, planificar actualizaciones o mejoras o reaccionar de manera efectiva ante cualquier problema o error que pueda surgir.

El nuevo ClusterControl 1.7.2 viene con monitoreo de alta resolución actualizado para MySQL 8.0. Utiliza Prometheus como almacén de datos con el lenguaje de consulta PromQL. La lista de paneles incluye MySQL Server General, MySQL Server Caches, MySQL InnoDB Metrics, MySQL Replication Master, MySQL Replication Slave, System Overview y Cluster Overview Dashboards.

ClusterControl instala los agentes de Prometheus, configura las métricas y mantiene el acceso a la configuración de los exportadores de Prometheus a través de su GUI, para que pueda administrar mejor la configuración de los parámetros, como indicadores de recopiladores para los exportadores (Prometheus). Describimos en detalle lo que se puede monitorear recientemente en el artículo Cómo monitorear MySQL con Prometheus y ClusterControl.

ClusterControl:Tablero

Alerta

Como operador de una base de datos, debemos estar informados cada vez que ocurra algo crítico en nuestra base de datos. Los tres métodos principales en ClusterControl para recibir una alerta incluyen:

  • notificaciones por correo electrónico
  • integraciones
  • asesores

Puede configurar las notificaciones por correo electrónico a nivel de usuario. Vaya a Configuración> Notificaciones por correo electrónico . Donde se puede elegir entre criticidad y tipo de alerta a enviar.

ClusterControl:notificación

El siguiente método es utilizar los servicios de integración. Esto es para pasar la categoría específica de eventos al otro servicio, como boletos de ServiceNow, Slack, PagerDuty, etc., para que pueda crear métodos de notificación avanzados e integraciones dentro de su organización.

ClusterControl:Integración

El último consiste en involucrar análisis de métricas sofisticados en la sección Asesor, donde puede crear comprobaciones y disparadores inteligentes.

ClusterControl:Asesores Automáticos

Copia de seguridad y recuperación

Ahora que tiene su MySQL en funcionamiento y tiene su monitoreo en su lugar, es hora del siguiente paso:asegúrese de tener una copia de seguridad de sus datos.

ClusterControl:Crear copia de seguridad

ClusterControl proporciona una interfaz para la gestión de copias de seguridad de MySQL con soporte para programación e informes creativos. Le ofrece dos opciones para los métodos de copia de seguridad.

  • Lógico:mysqldump
  • Binario:xtrabackup/mariabackup
ClusterControl:creación de opciones de copia de seguridad

Una buena estrategia de copia de seguridad es una parte fundamental de cualquier sistema de gestión de bases de datos. ClusterControl ofrece muchas opciones para copias de seguridad y recuperación/restauración.

ClusterControl:programación de copias de seguridad y repositorio de copias de seguridad

La retención de copias de seguridad de ClusterControl es configurable; puede optar por conservar su copia de seguridad durante cualquier período de tiempo o no eliminar nunca las copias de seguridad. El cifrado AES256 se emplea para proteger sus copias de seguridad contra elementos no autorizados. Para una recuperación rápida, las copias de seguridad se pueden restaurar directamente en un nuevo clúster:ClusterControl maneja el proceso de restauración completo desde el inicio de una nueva configuración de base de datos hasta la recuperación de datos, eliminando los pasos manuales propensos a errores del proceso.

Las copias de seguridad se pueden verificar automáticamente una vez completadas y luego cargarse en los servicios de almacenamiento en la nube (AWS, Azure y Google). Se pueden definir diferentes políticas de retención para las copias de seguridad locales en el centro de datos, así como las copias de seguridad que se cargan en la nube.

Recuperación automática de nodos y clústeres

ClusterControl proporciona soporte avanzado para la detección y el manejo de fallas. También le permite implementar diferentes proxies para integrarlos con su pila de alta disponibilidad, por lo que no es necesario ajustar la cadena de conexión de la aplicación o la entrada dns para redirigir la aplicación al nuevo nodo maestro.

Cuando el servidor maestro está inactivo, ClusterControl creará un trabajo para realizar una conmutación por error automática. ClusterControl hace todo el trabajo de fondo para elegir un nuevo maestro, implementar servidores esclavos de conmutación por error y configurar balanceadores de carga.

ClusterControl:Recuperación automática de nodos

La conmutación por error automática de ClusterControl se diseñó con los siguientes principios:

  • Asegúrese de que el maestro esté realmente inactivo antes de realizar la conmutación por error
  • Conmutación por error solo una vez
  • No realice la conmutación por error a un esclavo inconsistente
  • Solo escribe al maestro
  • No recupere automáticamente el maestro fallido

Con los algoritmos incorporados, la conmutación por error a menudo se puede realizar con bastante rapidez para que pueda garantizar los SLA más altos para su entorno de base de datos.

El proceso es altamente configurable. Viene con múltiples parámetros que puede usar para adaptar la recuperación a las especificaciones de su entorno. Entre las diferentes opciones puedes encontrar replication_stop_on_error, replication_auto_rebuild_slave, replication_failover_blacklist, replication_failover_whitelist, replication_skip_apply_missing_txs, replication_onfail_failover_script y muchas otras.