sql >> Base de Datos >  >> RDS >> PostgreSQL

Uso de la automatización para acelerar las pruebas de lanzamiento en PostgreSQL

Tener un entorno de prueba es imprescindible en todas las empresas. Podría ser necesario para probar cambios o nuevas versiones de la aplicación, o incluso para probar su aplicación existente con una nueva versión de PostgreSQL. La parte difícil de esto es, primero, cómo implementar un entorno de prueba lo más similar posible al de producción y cómo mantener ese entorno sin recrear todo desde cero.

En este blog, veremos cómo implementar un entorno de prueba de diferentes maneras usando ClusterControl, lo que lo ayudará a automatizar el proceso y evitar tareas manuales que consumen mucho tiempo.

Replicación de clúster a clúster

Desde ClusterControl 1.7.4 existe una característica llamada replicación de clúster a clúster. Le permite ejecutar una replicación entre dos clústeres autónomos.

Echaremos un vistazo a cómo usar esta función para un clúster de PostgreSQL existente. Para esta tarea, supondremos que tiene instalado ClusterControl y que el clúster principal se implementó usándolo.

Creación de una replicación de clúster a clúster

Para crear una nueva replicación de clúster a clúster desde la interfaz de usuario de ClusterControl, vaya a ClusterControl -> Seleccione Clúster de PostgreSQL -> Acciones de clúster -> Crear clúster esclavo.

El clúster esclavo se creará mediante la transmisión de datos del clúster principal actual.

Debe especificar las credenciales SSH y el puerto, un nombre para su clúster esclavo y si desea que ClusterControl instale el software y las configuraciones correspondientes por usted.

Después de configurar la información de acceso SSH, debe definir la versión de la base de datos, el directorio de datos, el puerto y las credenciales de administrador. Como usará la replicación de transmisión, asegúrese de usar la misma versión de la base de datos y las credenciales deben ser las mismas que usa el clúster principal.

En este paso, debe agregar el servidor al nuevo clúster esclavo. Para esta tarea, puede ingresar tanto la dirección IP como el nombre de host del nodo de la base de datos.

Puede monitorear el estado del trabajo en el monitor de actividad de ClusterControl. Una vez finalizada la tarea, puede ver el clúster en la pantalla principal de ClusterControl.

CL de control de clúster

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 nueva puerta para la automatización de clústeres donde puede integrarla fácilmente con herramientas de automatización de implementación existentes como Ansible, Puppet, Chef, etc. También puede usar esta herramienta de ClusterControl para crear un clúster esclavo. Veamos un ejemplo:

$ s9s cluster --create --cluster-name=PostgreSQL1rep --cluster-type=postgresql --provider-version=13 --nodes="192.168.100.133"  --os-user=root --os-key-file=/root/.ssh/id_rsa --db-admin=admin --db-admin-passwd=********* --vendor=postgres --remote-cluster-id=14 --log

Ahora, veamos el parámetro usado más en detalle:

  • Cluster:para enumerar y manipular clústeres.

  • Crear:crea e instala un nuevo clúster.

  • Nombre del clúster:el nombre del nuevo clúster esclavo.

  • Cluster-type:El tipo de clúster a instalar.

  • Versión del proveedor:La versión del software.

  • Nodos:Lista de los nuevos nodos en el Clúster Esclavo.

  • Os-user:El nombre de usuario para los comandos SSH.

  • Os-key-file:el archivo de clave que se utilizará para la conexión SSH.

  • Db-admin:El nombre de usuario del administrador de la base de datos.

  • Db-admin-passwd:La contraseña para el administrador de la base de datos.

  • Remote-cluster-id:ID de clúster principal para la replicación de clúster a clúster.

  • Registro:esperar y monitorear mensajes de trabajo.

Gestión de la replicación de clúster a clúster

Ahora que tiene su replicación de clúster a clúster en funcionamiento, hay diferentes acciones para realizar en esta topología utilizando ClusterControl desde la interfaz de usuario y la CLI.

Reconstrucción de un clúster esclavo

Para reconstruir un clúster esclavo, vaya a ClusterControl -> Seleccionar clúster esclavo -> Nodos -> Elija el nodo -> Acciones de nodo -> Reconstruir esclavo de replicación.

ClusterControl realizará los siguientes pasos:

  • Detener servidor PostgreSQL

  • Eliminar contenido de su directorio de datos

  • Transmita una copia de seguridad del Maestro al Esclavo usando pg_basebackup

  • Iniciar el Esclavo

También puede reconstruir un clúster esclavo utilizando el siguiente comando del servidor ClusterControl:

$ s9s replication --stage --master="192.168.100.125" --slave="192.168.100.133" --cluster-id=15 --remote-cluster-id=14 --log

Los parámetros son:

  • Replicación:Para monitorear y controlar la replicación de datos.

  • Etapa:Preparar/Reconstruir un esclavo de replicación.

  • Maestro:el maestro de replicación en el clúster maestro.

  • Esclavo:El esclavo de replicación en el clúster esclavo.

  • Cluster-id:ID del clúster esclavo.

  • Remote-cluster-id:ID del clúster principal.

  • Registro:esperar y monitorear mensajes de trabajo.

Crear clúster desde copia de seguridad

Otra forma de crear un entorno de prueba es crear un nuevo clúster a partir de una copia de seguridad de su clúster principal. Para esto, vaya a ClusterControl -> Seleccione su clúster de PostgreSQL -> Copia de seguridad. Allí, elija la copia de seguridad que desea restaurar de la lista.

Ahora, puede restaurar esta copia de seguridad en su base de datos actual, en un nodo separado o crear un nuevo clúster a partir de esta copia de seguridad.

La opción "Crear clúster a partir de la copia de seguridad" creará un nuevo clúster de PostgreSQL a partir de la copia de seguridad seleccionada.

Debe agregar las credenciales del sistema operativo y de la base de datos y la información para implementar el nuevo clúster. Cuando finalice este trabajo, verá el nuevo clúster en la interfaz de usuario de ClusterControl.

Restaurar copia de seguridad en host independiente

En la misma 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). Puede mantener el nodo en funcionamiento o ClusterControl puede cerrar 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 un trabajo de copia de seguridad.

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

En ClusterControl -> Seleccione su clúster de PostgreSQL -> Copia de seguridad -> Crear copia de seguridad.

La función de copia de seguridad de verificación automática está disponible para las copias de seguridad programadas. Al programar una copia de seguridad, además de seleccionar las opciones comunes como el método o el almacenamiento, también debe especificar la programación/frecuencia.

Usando ClusterControl, 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 desea realizar la copia de seguridad, donde desea almacenar la copia de seguridad y si desea cargar la copia de seguridad en la nube (AWS, Azure o Google Cloud). También puede comprimir y cifrar su copia de seguridad y especificar el período de retención.

Para utilizar la función Verificar copia de seguridad, necesita un host dedicado (o VM) que no forme parte del clúster. ClusterControl instalará el software y restaurará la copia de seguridad en este host cada vez que se ejecute el trabajo.

Después de restaurar, podrás ver el ícono de verificación en la sección Backup de ClusterControl, el mismo que tendrás al hacer la verificación de forma manual ClusterControl, con la diferencia que no debes preocuparte sobre la tarea de restauración. ClusterControl restaurará la copia de seguridad cada vez automáticamente.

Conclusión

Implementar un entorno de prueba cada vez que lo necesite puede ser una tarea que requiere mucho tiempo y es difícil mantenerlo actualizado. El resultado de esto es que a veces las empresas no prueban nuevos lanzamientos o la prueba no es correcta, por ejemplo, utilizando un entorno diferente al de producción.

Como puede ver, ClusterControl le permite implementar el mismo entorno que está utilizando en producción con solo unos pocos clics, o incluso automatizar el proceso para evitar cualquier tarea manual.