sql >> Base de Datos >  >> RDS >> MariaDB

Cómo administrar MariaDB 10.3 con ClusterControl

MariaDB Server ya no es una imitación directa de MySQL. Se convirtió en una bifurcación madura, que implementa nuevas funcionalidades similares a las que ofrecen los sistemas de bases de datos propietarios en el upstream. MariaDB 10.3 amplía en gran medida la lista de funciones empresariales y, con el nuevo SQL_MODE=Oracle, se convierte en una excelente opción para las empresas que desean migrar sus bases de datos Oracle a una base de datos de código abierto. Sin embargo, la gestión operativa es un área en la que todavía hay que ponerse al día, y MariaDB requiere que cree sus propios scripts.

¿Quizás una buena oportunidad para investigar un sistema de automatización?

Los procedimientos automatizados son precisos y consistentes. Pueden brindarle la repetibilidad que tanto necesita para que pueda minimizar el riesgo de cambio en los sistemas de producción. Sin embargo, dado que las bases de datos modernas de código abierto se desarrollan tan rápido, es más difícil mantener sus sistemas de administración a la par con todas las funciones nuevas.

El siguiente paso natural es buscar plataformas de automatización. Hay muchas plataformas que puede utilizar para implementar sistemas. Puppet, Chef y Ansible son probablemente los mejores ejemplos de esa nueva tendencia. Estas plataformas son adecuadas para el despliegue rápido de varios servicios de software. Son perfectos para las implementaciones, pero aún requieren que mantenga el código, cubran los cambios de funciones y, por lo general, cubren solo un aspecto de su trabajo. Cosas como las copias de seguridad, el rendimiento y el mantenimiento todavía necesitan herramientas o scripts externos.

Por otro lado, tenemos plataformas en la nube, con interfaces pulidas y una variedad de servicios adicionales para una experiencia completamente administrada. Sin embargo, puede que no sea factible; por ejemplo, entornos híbridos en los que podría estar usando la nube, pero aún con una huella local significativa.

Entonces, ¿qué tal una capa de administración dedicada para sus bases de datos MariaDB?

ClusterControl fue diseñado para automatizar la implementación y administración de MariaDB, así como otras bases de datos de código abierto. En el núcleo de ClusterControl se encuentra la funcionalidad que le permite automatizar las tareas de la base de datos que tiene que realizar regularmente, como implementar nuevas instancias y clústeres de bases de datos, administrar copias de seguridad, alta disponibilidad y conmutación por error, cambios de topología, actualizaciones, escalado de nuevos nodos y más.

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í. Como mínimo, puede comenzar desde una pequeña máquina virtual con 2 GB de RAM, 2 núcleos de CPU y 20 GB de espacio de almacenamiento, ya sea local o en la nube.

El método de instalación principal es descargar un asistente de instalación que lo guía a través de todos los pasos (configuración del sistema operativo, descarga e instalación del paquete, creación de metadatos y otros).

Para entornos sin acceso a Internet, puede utilizar el proceso de instalación sin conexión.

ClusterControl no tiene agentes, por lo que no necesita instalar software adicional. Solo requiere acceso SSH a los hosts de la base de datos. También es compatible con el monitoreo basado en agentes para obtener datos de monitoreo de mayor resolución.

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

Instalación del Clúster MariaDB

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 versión 1.7.2 introdujo soporte para la versión 10.3 (junto con 10.0, 10.1, 10.2). En 1.7.3 que se lanzó esta semana, podemos ver la implementación mejorada de la instalación en la nube.

ClusterControl:implementar/importar

Al momento de escribir este blog, las versiones actuales son 10.3.16. Los últimos paquetes se recogen de forma predeterminada. Seleccione la opción "Implementar clúster de base de datos" y siga las instrucciones que aparecen.

Ahora es el momento de proporcionar los datos necesarios para la conexión entre ClusterControl y los nodos DB. En este paso, tendría máquinas virtuales limpias o imágenes del sistema operativo que usa dentro de su organización. Al elegir MariaDB, debemos especificar Usuario, Clave o Contraseña y puerto para conectarnos por SSH a nuestros servidores.

ClusterControl:implementar clúster de base de datos

Luego de configurar la información de acceso SSH, debemos ingresar los datos para acceder a nuestra base de datos, para MariaDB ese será el superusuario root. También podemos especificar qué repositorio usar. 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 configure repositorios de proveedores. ClusterControl no configurará repositorios. ClusterControl se basará en la configuración del sistema (sus archivos de repositorio predeterminados).
  • 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.

Cuando todo esté listo, presione el botón de despliegue. El proceso de implementación también se ocupará de la instalación de herramientas adicionales proporcionadas por MariaDB como mariabackup y herramientas de proveedores externos, populares en la administración de bases de datos.

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.

Primero, debemos ingresar las credenciales de acceso SSH a nuestros servidores de base de datos existentes. 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 del nodo o del clúster.

ClusterControl:importar clúster de base de datos 10.3 existente

Escalando MariaDB, agregando más nodos al clúster de base de datos

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.

ClusterControl:Adición del nodo MariaDB

ClusterControl admite una opción para utilizar una copia de seguridad existente, por lo que no es necesario sobrecargar el nodo principal de producción con trabajo adicional.

Proteger MariaDB

La instalación predeterminada de MariaDB viene con seguridad relajada. Esto se ha mejorado con las versiones recientes; sin embargo, los sistemas de grado de producción aún requieren ajustes en la configuración predeterminada de my.cnf. Las implementaciones de ClusterControl vienen con configuraciones my.cnf no predeterminadas (diferentes para diferentes tipos de clúster).

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:Panel de seguridad

ClusterControl habilita la compatibilidad con SSL para conexiones MariaDB. Habilitar SSL agrega otro nivel de seguridad para la comunicación entre las aplicaciones (incluido ClusterControl) y la base de datos. Los clientes de MariaDB 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.

Con ClusterControl también puede habilitar la auditoría. Utiliza el complemento de auditoría proporcionado por MariaDB. 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.

Monitoreo y Alertas

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.

ClusterControl:descripción general

El nuevo ClusterControl utiliza Prometheus como almacén de datos con el lenguaje de consulta PromQL. La lista de tableros incluye el servidor general, las cachés del servidor, las métricas de InnoDB, el maestro de replicación, el esclavo de replicación, la descripción general del sistema y los tableros de descripción general del clúster.

ClusterControl:Tablero

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 los indicadores de recopilación para los exportadores (Prometheus).

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
ClusterControl:servicios de integración

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.

El siguiente método es utilizar los servicios de integración. Esto es para pasar la categoría específica de eventos a 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.

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

Supervisión de SQL

El Monitoreo de SQL se divide en tres secciones.

  • Consultas principales - presenta la información sobre las consultas que consumen una parte significativa de los recursos. Monitor de consultas:Consultas principales
  • Ejecución de consultas - es una lista de procesos de información combinada de todos los nodos del clúster de la base de datos en una sola vista. Puede usarlo para eliminar las consultas que afectan las operaciones de su base de datos. Supervisor de consultas:ejecución de consultas
  • Consulta de valores atípicos - presentar la lista de consultas con tiempo de ejecución superior a la media. Supervisor de consultas:valores atípicos de consultas

Copia de seguridad y recuperación

Ahora que tiene su MariaDB 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:repositorio de copia de seguridad

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

  • Copia de seguridad lógica (texto):mysqldump
  • Copias de seguridad binarias:xtrabackup (versiones inferiores), mariabackup

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.

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 lanzamiento 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 HA, 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.

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.

ClusterControl:recuperación automática

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.

La conmutación por error es el proceso de pasar a un componente en espera saludable, durante un evento de falla o mantenimiento, para preservar el tiempo de actividad. Cuanto más rápido se pueda hacer, más rápido podrá volver a estar en línea. Si busca minimizar el tiempo de inactividad y cumplir con sus SLA a través de un enfoque automatizado para TimescaleDB, entonces este blog es para usted.

Balanceador de carga MaxScale

Además de MariaDB 10.3, ClusterControl agrega una opción de balanceador de carga MaxScale 2.3. MaxScale es un proxy compatible con SQL que se puede utilizar para crear entornos de alta disponibilidad. Viene con numerosas características, sin embargo, el objetivo principal es habilitar el equilibrio de carga y la alta disponibilidad.

ClusterControl:MaxScale

MaxScale se puede utilizar para realizar un seguimiento del estado del nodo principal de MariaDB y, en caso de que falle, realizar una conmutación por error rápida y automática. La conmutación por error automatizada es fundamental para crear una solución de alta disponibilidad que pueda recuperarse rápidamente de la falla.

Sesiones de base de datos de equilibrio de carga

La división de lectura y escritura es una característica fundamental para permitir el escalado de lectura. Basta que la aplicación se conecte al MaxScale, y este detecta la topología, determina cual MariaDB actúa como maestro y cuales actúan como esclavos. Enruta el tráfico de acuerdo con esto.

Resumen

Esperamos que este blog le ayude a familiarizarse con los módulos de administración de ClusterControl y MariaDB 10.3. La mejor opción es descargar ClusterControl y probar cada uno de ellos.