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

Pruebas automatizadas del proceso de actualización para MySQL/MariaDB/Percona Server

Las actualizaciones siempre son una tarea difícil y que requiere mucho tiempo. Primero, debe probar su aplicación en un entorno de prueba, por lo que, idealmente, deberá clonar su entorno de producción actual para esto. Luego, debe hacer un plan para realizar la actualización que, según el negocio, podría ser sin tiempo de inactividad (o casi cero), o incluso programar una ventana de mantenimiento para asegurarse de que si algo sale mal, afectará lo menos posible. como sea posible.

Si desea hacer todas estas cosas manualmente, existe una gran posibilidad de error humano y el proceso será lento. En este blog, veremos cómo automatizar las pruebas para actualizar sus bases de datos MySQL, MariaDB o Percona Server usando ClusterControl.

Tipo de actualizaciones

Hay dos tipos de actualizaciones:actualizaciones menores y actualizaciones principales.

Actualizaciones menores

La primera, Actualización menor, es la actualización más común y segura y, en la mayoría de los casos, se realiza en el lugar. Como nada es 100% seguro, siempre debe tener copias de seguridad y nodos esclavos de replicación, por lo que en caso de que algo salga mal con la actualización y por alguna razón no pueda retroceder/degradar, puede promocionar un nodo esclavo y sus sistemas aún pueden trabajar sin interrupción.

Puede realizar este tipo de actualización mediante ClusterControl. Para ello, vaya a ClusterControl -> Seleccione el clúster -> Administrar -> Actualizaciones.

En cada nodo seleccionado, el procedimiento de actualización:

  • Detener nodo

  • Actualizar nodo

  • Nodo de inicio

El nodo maestro en una topología de replicación no se actualizará. Para actualizar el maestro, primero se debe promover otro nodo para que se convierta en el nuevo maestro.

Actualizaciones importantes

Para actualizaciones importantes, no se recomienda la actualización en el lugar, ya que el riesgo de que algo salga mal es demasiado alto para un entorno de producción. En lugar de esto, puede clonar su clúster de base de datos actual y probar su aplicación allí, y cuando termine, puede volver a crearlo o incluso crear un nuevo clúster en la nueva versión y cambiar el tráfico cuando esté listo. Hay diferentes enfoques para estas actualizaciones. Puede actualizar los nodos uno por uno o crear un clúster diferente replicando el tráfico del actual, también puede usar balanceadores de carga para mejorar la alta disponibilidad y más opciones. El mejor enfoque depende de la tolerancia al tiempo de inactividad y del objetivo de tiempo de recuperación (RTO).

No puede realizar actualizaciones principales con ClusterControl directamente porque, como mencionamos, primero debe probar todo para asegurarse de que la actualización sea segura, pero puede usar diferentes funciones de ClusterControl para hacer esta tarea más fácil. Así que veamos algunas de estas características.

Copias de seguridad

Las copias de seguridad son imprescindibles antes de cualquier actualización. Una buena política de respaldo puede evitar grandes problemas para el negocio. Entonces, veamos cómo ClusterControl puede automatizar esto.

Creación de una copia de seguridad

Vaya a ClusterControl -> Seleccione el clúster -> Copia de seguridad -> Crear copia de seguridad.

Puede crear una nueva copia de seguridad o configurar una programada.

Puede elegir diferentes métodos de copia de seguridad, según la tecnología de la base de datos y, en la misma sección, puede elegir el servidor desde el que realizar la copia de seguridad, dónde desea almacenar la copia de seguridad y, si desea cargar la copia de seguridad en la nube (AWS, Azure o Google Cloud) en el mismo trabajo.

También puede comprimir y cifrar su copia de seguridad y especificar el período de retención, entre otras opciones.

En la sección de copia de seguridad, puede ver el progreso de la copia de seguridad e información como el método, el tamaño, la ubicación y más.

Implementación de un entorno de prueba

Para esto, no necesita crear todo desde cero. En lugar de esto, puede usar ClusterControl para hacerlo de forma manual o automatizada.

Restaurar copia de seguridad en host independiente

En la sección Copia de seguridad, puede elegir la opción "Restaurar y verificar en un host independiente" para restaurar una copia de seguridad en un nodo separado.

Aquí puede especificar si desea que ClusterControl instale el software en el nuevo nodo y deshabilite el firewall o AppArmor/SELinux (según el sistema operativo). Para esto, necesita un host dedicado (o VM) que no sea parte del clúster.

Puede mantener el nodo en funcionamiento o ClusterControl puede apagar el servicio de la base de datos hasta el próximo trabajo de restauración. Cuando finalice, verá la copia de seguridad restaurada/verificada en la lista de copias de seguridad marcada con una marca.

Si no desea realizar esta tarea manualmente, puede programar este proceso utilizando la función de verificación de copia de seguridad, para repetir este trabajo periódicamente en una tarea de copia de seguridad. Veremos cómo hacerlo en la siguiente sección.

Verificación automática de copia de seguridad de ClusterControl

Para automatizar esta tarea, vaya a ClusterControl -> Seleccione su clúster -> Copia de seguridad -> Crear copia de seguridad y elija la opción Copia de seguridad programada.

La función Verificar copia de seguridad automática solo está disponible para copias de seguridad programadas y el proceso es el mismo que describimos en una sección anterior. En el segundo paso, asegúrese de haber habilitado la opción Verificar copia de seguridad y complete la información requerida.

Cuando finalice el trabajo, podrá ver el icono de verificación en la sección Backup de ClusterControl, el mismo que tendrá al hacer la verificación de forma manual, con la diferencia de que no necesita preocuparse por la tarea de restauración. ClusterControl restaurará la copia de seguridad cada vez automáticamente y podrá probar su aplicación con los datos más recientes.

Recuperación automática y conmutación por error

Teniendo habilitada la característica de recuperación automática, en caso de falla, ClusterControl promoverá el nodo esclavo más avanzado a maestro y le notificará el problema. También falla el resto de los nodos esclavos para replicar desde el nuevo servidor maestro.

Si hay Load Balancers en la topología, ClusterControl los reconfigurará para aplicar los cambios de topología.

También puede ejecutar una conmutación por error manualmente si es necesario. Vaya a ClusterControl -> Seleccione el clúster -> Nodos -> Seleccione el nodo a promover -> Acciones de nodo -> Promover esclavo.

De esta manera, si algo sale mal durante la actualización, puede usar ClusterControl para solucionarlo lo antes posible.

Automatización de cosas con ClusterControl CLI

ClusterControl CLI, también conocido como s9s, es una herramienta de línea de comandos introducida en ClusterControl versión 1.4.1 para interactuar, controlar y administrar clústeres de bases de datos mediante el sistema ClusterControl. ClusterControl CLI abre una puerta para la automatización de clústeres donde puede integrarla fácilmente con las herramientas de automatización de implementación existentes como Ansible, Puppet, Chef, etc. Veamos ahora algunos ejemplos de esta herramienta.

Actualizar

$ s9s cluster --cluster-id=19 \
--check-pkg-upgrades \
--log
$ s9s cluster --cluster-id=19 \
--available-upgrades \
--nodes='10.10.10.146' \
--log \
--print-json
$ s9s cluster --cluster-id=19 \
--upgrade-cluster \
--nodes='10.10.10.146' \
--log

Crear copia de seguridad

$ s9s backup --create \
--backup-method=mysqldump \
--cluster-id=2 \
--nodes=10.10.10.146:3306 \
--on-controller \
--backup-directory=/storage/backups
--log

Restaurar copia de seguridad

$ s9s backup --restore \
--cluster-id=19 \
--backup-id=3 \
--wait

Verificar copias de seguridad

$ s9s backup --verify \
--backup-id=3 \
--test-server=10.10.10.151 \
--cluster-id=19 \
--log

Promover nodo esclavo

$ s9s cluster --promote-slave \
--cluster-id=19 \
--nodes='10.10.10.146' \
--log

Conclusión

Las actualizaciones son tareas necesarias pero que requieren mucho tiempo. Implementar un entorno de prueba cada vez que necesite una actualización podría ser una pesadilla, y es difícil mantenerlo actualizado sin ninguna herramienta de automatización.

ClusterControl le permite realizar actualizaciones menores o incluso implementar el entorno de prueba para que la tarea de actualización sea más fácil y segura. También puede integrarlo con diferentes herramientas de automatización como Ansible, Puppet y más.