La necesidad de lograr una alta disponibilidad de la base de datos es una tarea bastante común y, a menudo, obligatoria. Si su empresa tiene un presupuesto limitado, entonces mantener un esclavo de replicación (o más de uno) que se ejecuta en el mismo proveedor de la nube (solo esperar si es necesario algún día) puede ser costoso. Dependiendo del tipo de aplicación, hay algunos casos en los que es necesario un esclavo de replicación para mejorar el RTO (objetivo de tiempo de recuperación).
Hay otra opción, sin embargo, si su empresa puede aceptar un breve retraso para que sus sistemas vuelvan a estar en línea.
Cold Standby, es un método de redundancia en el que tiene un nodo en espera (como respaldo) para el principal. Este nodo solo se usa durante una falla maestra. El resto del tiempo, el nodo de espera en frío se apaga y solo se utiliza para cargar una copia de seguridad cuando sea necesario.
Para usar este método, es necesario tener una política de respaldo predefinida (con redundancia) de acuerdo con un RPO (Recovery Point Objective) aceptable para la empresa. Puede ser que perder 12 horas de datos sea aceptable para el negocio o que perder solo una hora sea un gran problema. Cada empresa y aplicación debe determinar su propio estándar.
En este blog, aprenderá cómo crear una política de copia de seguridad y cómo restaurarla en un servidor de reserva en frío mediante ClusterControl y su integración con Amazon AWS.
Para este blog, supondremos que ya tiene una cuenta de AWS y ClusterControl instalado. Si bien vamos a usar AWS como proveedor de la nube en este ejemplo, puede usar uno diferente. Usaremos la siguiente topología de PostgreSQL implementada con ClusterControl:
- 1 nodo principal de PostgreSQL
- 2 nodos Hot-Standby de PostgreSQL
- 2 balanceadores de carga (HAProxy + Keepalived)
Creación de una política de copia de seguridad aceptable
La mejor práctica para crear este tipo de política es almacenar los archivos de respaldo en tres lugares diferentes, uno almacenado localmente en el servidor de la base de datos (para una recuperación más rápida), otro en un servidor de respaldo centralizado y el último en la nube.
Puede mejorar esto utilizando también copias de seguridad completas, incrementales y diferenciales. Con ClusterControl puede realizar todas las mejores prácticas anteriores, todo desde el mismo sistema, con una interfaz de usuario amigable y fácil de usar. Comencemos por crear la integración de AWS en ClusterControl.
Configuración de la integración AWS de ClusterControl
Vaya a ClusterControl -> Integraciones -> Proveedores de nube -> Agregar credenciales de nube.
Elija un proveedor de nube. Admitimos AWS, Google Cloud o Azure. En este caso, elija AWS y continúe.
Aquí debe agregar un nombre, una región predeterminada y un AWS ID de clave y secreto de clave. Para obtener o crear estos últimos, debe ir a la sección IAM (Identity and Access Management) en la consola de administración de AWS. Para obtener más información, puede consultar nuestra documentación o la documentación de AWS.
Ahora que tiene la integración creada, vamos a programar la primera copia de seguridad usando Control de clúster.
Programación de una copia de seguridad con ClusterControl
Vaya a ClusterControl -> Seleccione el clúster de PostgreSQL -> Copia de seguridad -> Crear copia de seguridad.
Puede elegir si desea crear una única copia de seguridad al instante o programar una nueva copia de seguridad. Entonces, elijamos la segunda opción y continuemos.
Cuando programa una copia de seguridad, primero debe especificar la programación /frecuencia. Luego, debe elegir un método de copia de seguridad (pg_dumpall, pg_basebackup, pgBackRest), el servidor desde el que se realizará la copia de seguridad y dónde desea almacenar la copia de seguridad. También puedes subir nuestra copia de seguridad a la nube (AWS, Google o Azure) habilitando el botón correspondiente.
Luego especifique el uso de compresión, el nivel de compresión, el cifrado y el período de retención para su respaldo. Hay otra función llamada "Verificar copia de seguridad" que verá más detalladamente pronto en esta publicación de blog.
Si la opción "Subir copia de seguridad a la nube" estaba habilitada, Verá este paso donde debe seleccionar las credenciales de la nube y crear o seleccionar un depósito S3 donde almacenar la copia de seguridad. También debe especificar el período de retención.
Ahora tendrá la copia de seguridad programada en la sección Copias de seguridad programadas de ClusterControl. Para cubrir las mejores prácticas mencionadas anteriormente, puede programar una copia de seguridad para almacenarla en un servidor externo (servidor ClusterControl) y en la nube, y luego programar otra copia de seguridad para almacenarla localmente en el nodo de la base de datos para una recuperación más rápida.
Restauración de una copia de seguridad en Amazon EC2
Una vez finalizada la copia de seguridad, puede restaurarla utilizando ClusterControl en la sección Copia de seguridad.
Creación de la instancia Amazon EC2
En primer lugar, para restaurarlo, necesitará un lugar donde hacerlo, así que creemos una instancia básica de Amazon EC2. Vaya a "Iniciar instancia" en la consola de administración de AWS en la sección EC2 y configure su instancia.
Cuando se crea su instancia, deberá copiar el SSH público clave del servidor ClusterControl.
Restauración de la copia de seguridad mediante ClusterControl
Ahora que tiene la nueva instancia EC2, usémosla para restaurar la copia de seguridad allí. Para ello, en su ClusterControl vaya a la sección de copia de seguridad (ClusterControl -> Seleccionar Clúster -> Copia de seguridad), y allí podrá seleccionar "Restaurar copia de seguridad", o directamente "Restaurar" sobre la copia de seguridad que desea restaurar.
Tiene tres opciones para restaurar la copia de seguridad. Puede restaurar la copia de seguridad en un nodo de base de datos existente, restaurar y verificar la copia de seguridad en un host independiente o crear un nuevo clúster a partir de la copia de seguridad. Como desea crear un nodo de espera en frío, usemos la segunda opción "Restaurar y verificar en un host independiente".
Necesitará un host dedicado (o VM) que no sea parte del clúster para restaurar la copia de seguridad, así que usemos la instancia EC2 creada para este trabajo. ClusterControl instalará el software y restaurará la copia de seguridad en este host.
Si la opción "Apagar el servidor después de que se haya restaurado la copia de seguridad" está habilitada, ClusterControl detendrá el nodo de la base de datos después de finalizar el trabajo de restauración, y eso es exactamente lo que necesitamos para esta creación de espera en frío.
Puede monitorear el progreso de la copia de seguridad en la sección Actividad de ClusterControl.
Uso de la función de copia de seguridad de verificación de ClusterControl
Una copia de seguridad no es una copia de seguridad si no es restaurable. Por lo tanto, debe asegurarse de que la copia de seguridad funcione y restaurarla en el nodo de espera en frío con frecuencia.
Esta función de copia de seguridad de verificación de ClusterControl es una forma de automatizar el mantenimiento de un nodo de espera en frío restaurando una copia de seguridad reciente para mantenerla lo más actualizada posible evitando el trabajo de copia de seguridad de restauración manual. Veamos cómo funciona.
Como la tarea "Restaurar y verificar en un host independiente", requerirá un host dedicado (o VM) que no sea parte del clúster para restaurar la copia de seguridad, así que usemos la misma instancia EC2 aquí.
La función de copia de seguridad de verificación automática está disponible para las copias de seguridad programadas. Por lo tanto, vaya a ClusterControl -> Seleccione el clúster de PostgreSQL -> Copia de seguridad -> Crear copia de seguridad y repita los pasos que vio anteriormente para programar una nueva copia de seguridad.
En el segundo paso, tendrá disponible la función "Verificar copia de seguridad". para habilitarlo.
Utilizando las opciones anteriores, ClusterControl instalará el software y restaurará la copia de seguridad en el anfitrión. Después de restaurarlo, si todo salió bien, verá el icono de verificación en la sección Copia de seguridad de ClusterControl.
Conclusión
Si tienes un presupuesto limitado, pero requieres de Alta Disponibilidad, puedes utilizar un nodo PostgreSQL en espera fría que podría ser válido o no dependiendo del RTO y RPO de la empresa. En este blog, le mostramos cómo programar una copia de seguridad (de acuerdo con su política comercial) y cómo restaurarla manualmente. También mostramos cómo restaurar la copia de seguridad automáticamente en un servidor de espera en frío mediante ClusterControl, Amazon S3 y Amazon EC2.