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

Cómo comenzar con la automatización de bases de datos

La automatización de la base de datos ayuda a que las tareas complejas y que requieren mucho tiempo sean simples y rápidas. Las tareas que se identifican con mayor frecuencia y facilidad para la automatización son aquellas que consumen mucho tiempo pero son repetitivas. Estos a menudo consumen productividad y pueden afectar las finanzas de la empresa porque hay que pagar a las personas que trabajan en estas tareas. Sin embargo, los procesos en los que se consume tiempo y esfuerzo innecesariamente se pueden convertir en automatización virtual, evitando así el trabajo a menudo aburrido y agotador.

La automatización de bases de datos ha sido una práctica común de los administradores de bases de datos y administradores de servidores, quienes ahora se conocen más comúnmente como DevOps. DevOps también se refiere a la combinación de DBA y tareas de administración del servidor. A la antigua usanza, las tareas automatizadas tradicionales y comunes se escriben como una serie de declaraciones SQL o archivos .sql, que implementan y aprovisionan servidores a través de scripts, configuran el cifrado/descifrado o aprovechan la seguridad para el entorno en el que se supone su automatización. correr. Aquí, la automatización no es un ejemplo de una empresa que reemplaza a las personas con guiones. Está ahí como un asistente para acelerar las cosas y terminar las tareas más rápido con menos errores. La automatización no puede reemplazar la forma en que los DBA realizan sus tareas o el valor que pueden brindar a toda la empresa u organización.

Las herramientas sofisticadas para infraestructura como código (IaC) como Puppet, Chef, Ansible, SaltStack y Terraform ayudan a los administradores de bases de datos a completar aquellas tareas que se replican fácilmente, como copia de seguridad y restauración, conmutación por error, implementación de nuevos clústeres, ajuste de la configuración de seguridad, ajuste del rendimiento de la base de datos y del kernel del sistema operativo, y mucho más. Con la ayuda de la automatización, muchos administradores de bases de datos también han mejorado o cambiado sus habilidades de centrarse en tareas específicas del dominio de datos para cubrir también cómo codificar para utilizar estas herramientas de IaC que facilitan las cosas en comparación con el enfoque tradicional. En la actualidad, también existen herramientas que facilitan la administración de sus activos en la nube, como la administración de las cuentas de usuario de su empresa, los registros, la implementación de instancias o la administración de sus servidores. Las herramientas para la nube de los tres grandes proveedores de la nube incluyen AWS CloudFormation, Azure Resource Manager y Google Cloud Deployment Manager y permiten que los DBA o DevOps aprovechen el poder de la automatización y agilicen las cosas. Esto no solo impresiona a los ejecutivos de su organización o empresa, sino también a los clientes que confían en su servicio.

¿Qué debe automatizarse?

Como se mencionó anteriormente, la automatización de bases de datos no es nueva para los administradores de bases de datos, administradores de servidores o incluso DevOps. No hay razón para dudar o cuestionar si se debe automatizar. Como se indicó anteriormente, los casos comunes que se identifican fácilmente para la automatización son tareas que son de naturaleza repetitiva.

A continuación, enumeramos cosas que son axiomáticas desde la perspectiva del DBA.

  • Aprovisionamiento de sus servidores (por ejemplo, iniciar instancias de VM como usar vagrant, iniciar docker o iniciar su Kubernetes plataforma) y configurar el acceso SSH o configurar el acceso VPN

  • Implementación de un nuevo clúster de base de datos

    • Identifique qué tipo de proveedor de base de datos, el tipo de configuración (principal/en espera, replicación maestro-maestro, sincronización replicación)

  • Importar clúster de base de datos existente

  • Implemente/importe bases de datos existentes a su clúster de base de datos actual

  • Auto-failover o switchover

  • Recuperación automática de nodos o clústeres

  • Promoción de réplica/esclavo o degradación de un maestro

  • Despliegue de balanceadores de carga (por ejemplo, ProxySQL, HaProxy, pgpool, pgbouncer, MaxScale, Keepalived)

  • Copia de seguridad y restauración

  • Configure su entorno de monitoreo de base de datos (por ejemplo, implemente monitoreo basado en agentes como Prometheus)

  • Habilitar ajustes de seguridad

  • Realice optimizaciones y ajustes automáticos de acuerdo con el tipo de entorno

  • Habilitar sistemas de alerta para otras integraciones de terceros

  • Genera alertas o alarmas y notificaciones

  • Generar informes como gráficos

  • Procesar registros de consultas (registros lentos) para el análisis de consultas

  • Generar análisis de consulta

  • Archivo o limpieza de la base de datos

Por supuesto, hay muchos casos que podría automatizar, pero aquí se enumeran las tareas más comunes y su automatización es incuestionable. Estos son los tipos de tareas que son de naturaleza repetitiva y la mayoría son propensas a errores, especialmente cuando deben realizarse rápidamente debido a limitaciones de tiempo.

¿Cuáles son las cosas que no deberían automatizarse?

Estas áreas son donde sus DBA o SysAdmins hacen la mayor parte del trabajo. La automatización no puede reemplazar el conjunto de habilidades y la inteligencia del DBA cuando se trata de cosas que no se pueden automatizar.

Se entiende que un DBA debe ser hábil, con un conocimiento profundo de:  la base de datos que está utilizando y las bases de datos que se implementarán; los datos que están siendo procesados ​​y almacenados; y si la forma en que se procesan es segura o si cumple con los estándares de seguridad de la empresa. Los DBA también revisan y en su mayoría se consideran DevOps, así como el arquitecto de automatización. Ellos dictan lo que se debe hacer y lo que no se hará. Las cosas comunes que no deben automatizarse son las siguientes:

 

  • Configuración de sus copias de seguridad programadas. Por supuesto, las copias de seguridad programadas están automatizadas y deben ejecutarse en consecuencia, pero las fechas programadas o el período de tiempo requerido deben basarse en las horas pico bajas que realizará el servidor. Por ejemplo, no puede realizar una copia de seguridad si el clúster está ocupado durante el día. También hay casos comunes en los que los servidores todavía están ocupados por la noche, según el tipo de aplicación que está sirviendo y dónde se encuentra geográficamente.

  • La conmutación por error automática no pudo promover un nuevo maestro. Este es uno de los casos más importantes y tiene que ser bien entendido. Si tiene secuencias de comandos automatizadas diseñadas para la conmutación por error, no debe diseñarse para forzar una conmutación por error en caso de que falle. Es posible que nunca sepa cuál es el problema principal, y si hay una falla, puede haber transacciones que tienen para ser recuperado antes de que se deba hacer cualquier otra cosa. Por ejemplo, podría ser una transacción financiera que se almacenó en el maestro fallido, y usted quiso promover a la fuerza un esclavo, pero el esclavo candidato no pudo replicar la última transacción. En ese caso, podría terminar con datos corruptos.

  • Recuperación de datos. Por supuesto, cuando encuentre daños en los datos o un clúster no se recupere de su recuperación automática de nodo/servidor, es posible que deba investigar la causa principal. Debe documentar esto para su RCA (Análisis de causa raíz) para evitarlo en el futuro. Sin embargo, hay instancias en las que la falla es un error del software de base de datos que está utilizando, o puede ser una corrupción de VM.

  • Desviación de datos o inconsistencia de datos. Esta definitivamente no es una situación ideal para la automatización. No desea que su autómata generalice o estereotipe sus datos a una práctica que aplicaría este concepto:"si los datos están dañados, lo arreglaremos automáticamente". Definitivamente no es una buena práctica. Hay muchos casos que primero deben entenderse e investigarse antes de poder decidir. En MySQL, por ejemplo, hay una herramienta de Percona llamada pt-table-checksum, luego pt-table-sync para las cuales ambos son correlativos entre sí para corregir inconsistencias de datos. Definitivamente no querrá automatizar esto a menos que conozca muy bien sus datos, o que sus datos no sean extensos, o que los datos se puedan regenerar.

  • Ajuste del kernel y ajuste de la base de datos. Por supuesto, esto puede verse como contradictorio con lo que hemos dicho anteriormente. Sin embargo, existen variables autoajustables conocidas para tipos específicos de entornos, como memoria, grupo de búfer, páginas enormes o parámetros de memoria virtual. Sin embargo, definitivamente hay muchos parámetros que necesitan comprensión, investigación, pruebas y evaluación comparativa antes de decidir aplicar los cambios o no.

Definitivamente, hay muchas cosas que no debe automatizar que no mencionamos. En el mundo de las bases de datos, hay una gran cantidad de situaciones que dependen del tipo de datos y la aplicación que esté sirviendo. Téngalo en cuenta y sea sensible a las cosas que se pueden automatizar. De lo contrario, la automatización puede conducir a la destrucción.

Herramientas para la automatización

Aquí es donde puede comenzar con sus scripts de automatización. ¡El componente más importante de la automatización es la velocidad! Cuando se trata de velocidad, no se mide por la rapidez con la que una herramienta puede terminar las tareas, sino por la comodidad de los desarrolladores o mantenedores de los scripts o IaC con la herramienta. Definitivamente, existen ventajas y desventajas para estas herramientas de automatización disponibles. Lo que es más importante es determinar las especificaciones de estas herramientas de automatización, ya que hay más para ofrecer además de ser solo automatización. Más comúnmente, proporcionan gestión de configuración y mecanismos de implementación.

La automatización tiene que ver con la velocidad, es decir, qué tan rápido es en contraste con el uso de un enfoque tradicional o el uso de scripts de su propio idioma preferido. Por supuesto, usar sus propios scripts puede ser perfecto, pero si su organización o empresa busca avances tecnológicos, entonces es más ideal usar herramientas de terceros como Ansible, Puppet, Chef, SaltStack o Terraform. ¿Por qué es más ideal? Estas herramientas de terceros están diseñadas para superar tareas largas y largas y se pueden realizar con pocas líneas de código.

Por ejemplo, Terraform es conocido por sus beneficios de portabilidad. Imagínese, con Terraform, tiene una herramienta y un lenguaje para describir la infraestructura para Google Cloud, AWS, OpenStack y CUALQUIER otra nube. Si cambia a otro proveedor, no necesita modificar o rehacer sus scripts. También le permite tener una implementación de pila completa, y eso incluye administrar sus contenedores de Kubernetes. Imagina que, con una sola herramienta, puedes hacer muchas cosas.

Al iniciar la automatización de su base de datos, no empiece desde cero porque el objetivo de la automatización es la velocidad. Nuevamente, la velocidad no se mide aquí en qué tan rápido se termina el trabajo, sino qué tan rápido es en comparación con un enfoque tradicional o tareas manuales. Por supuesto, la velocidad con la que puede terminar el trabajo depende, por ejemplo, parte de sus secuencias de comandos puede causar largas demoras debido a una gran cantidad de datos procesados ​​y largas ejecuciones de trabajos.

Elija siempre en función de sus requisitos

Al elegir herramientas, no confíe en las exageraciones o en cuál es la más popular de la que haya oído hablar. Aunque las herramientas principales que se mencionaron anteriormente son adoptadas en gran medida por la comunidad, también introducen complejidad. Por ejemplo, al usar Ansible, debe estar familiarizado con YAML, mientras que con Puppet o Chef, debe estar familiarizado con Ruby y su lenguaje específico de dominio subyacente.

Aproveche las herramientas empresariales disponibles

Hay muchas herramientas prometedoras de automatización de bases de datos para comenzar. Si cree que es incómodo y requiere mucho tiempo contratar DBA, SysAdmins o DevOps para ampliar su equipo, hay herramientas disponibles que ofrecen ayuda en lo que respecta a la administración de bases de datos, la administración de copias de seguridad y la observabilidad.

Varios nueves ClusterControl para la automatización de bases de datos

ClusterControl ofrece muchas tareas automatizadas que eliminan la necesidad de enfoques manuales. ClusterControl está diseñado para facilitar las operaciones de bases de datos para organizaciones, empresas, administradores de bases de datos, administradores de sistemas, DevOps e incluso desarrolladores. Su objetivo es automatizar tareas repetitivas y de larga ejecución. La gran ventaja de ClusterControl es que es una herramienta madura de administración de bases de datos y tiene amplias funciones que son muy poderosas para administrar sus servidores de bases de datos. También aplica las mejores prácticas estándar de la industria más actualizadas para administrar sus bases de datos. Escuchamos las demandas de nuestros clientes, luego implementamos capacidades para satisfacerlas.

Algunas de las funcionalidades de automatización de ClusterControl más ricas en funciones que puede aprovechar son:

  • Despliegue de sus servidores de base de datos. Elija el proveedor, especifique la versión correcta, determine qué tipo de clúster, especifique el nombre de host/IP del servidor, como nombre de usuario, contraseña, etc.

  • Importación de servidores existentes a ClusterControl

  • Implementación en la nube

  • Supervisión e informes del estado de la base de datos

  • Alertas y notificaciones

  • Copia de seguridad y restauración

  • Verificación de copia de seguridad

  • Auto-failover, switchover

  • Configuración de alta disponibilidad

  • Asciende a esclavo o degrada a maestro

  • Agregue una réplica nueva/existente a su clúster

  • Ampliar otro clúster como esclavo de otro clúster (perfecto para la configuración geográfica para su recuperación ante desastres)

  • Recuperación de nodos y clústeres

  • Integración LDAP

  • Notificaciones de alertas de terceros

  • Implementación de cualquiera de una extensa lista de balanceadores de carga (pgbouncer, ProxySQL, MaxScale, HAProxy, Keepalived, garbd )

  • Implementación de supervisión basada en agentes mediante exportadores de Prometheus

  • Análisis de consultas

  • Ajustes de seguridad

  • Ajuste automático de los parámetros del kernel y de la base de datos del sistema operativo

Además de todo esto, ClusterControl también tiene asesores integrados que permiten a los DBA o DevOps crear sus propios scripts e integrarlos en los asesores de rendimiento de ClusterControl.

Resumen

La automatización de la base de datos ayuda a acelerar las tareas complejas pero repetitivas. Ayuda a los DBA a avanzar rápidamente en diferentes tareas y mejorar sus habilidades según el alcance del trabajo involucrado. La automatización de la base de datos libera a los administradores de bases de datos para que sean más innovadores y al mismo tiempo administren cómodamente la base de datos. La automatización de la base de datos no reemplaza el rol del DBA. Siempre habrá una necesidad de personas capacitadas e inteligentes para administrar sus bases de datos, especialmente cuando ocurre un desastre. Siempre confíe en las herramientas que recomiendan sus DBA, mientras confía en sus habilidades de DBA para administrar la salud y la vida de sus bases de datos.