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

Opciones de copia de seguridad en la nube para PostgreSQL

Este blog se actualizó el 27/11/18 y el 29/11/18 para realizar los cambios recomendados por nuestros fantásticos comentaristas.

Al igual que con cualquier otro componente de una empresa, las bases de datos son extremadamente importantes para su funcionamiento interno.

Ya sea que se trate del núcleo del negocio o simplemente de otro componente, las bases de datos deben respaldarse con regularidad y almacenarse en ubicaciones seguras para una posible recuperación futura.

¿Debería hacer una copia de seguridad en la nube?

Una regla general es tener al menos 3 copias de cualquier cosa de valor y almacenar esas copias de seguridad en diferentes ubicaciones. Las copias de seguridad en la misma unidad son inútiles si la unidad muere, las copias de seguridad del mismo host también están en riesgo si el host se cae, y las copias de seguridad del mismo edificio también están en peligro si el edificio se incendia (drástico e improbable, pero posible).

Las copias de seguridad en la nube ofrecen una solución fácil para la necesidad de copias de seguridad fuera del sitio sin tener que activar un nuevo hardware en una ubicación secundaria. Hay muchos servicios en la nube diferentes que ofrecen almacenamiento de copias de seguridad, y elegir el adecuado dependerá de las necesidades de copia de seguridad, los requisitos de tamaño, el costo y la seguridad.

Los beneficios de tener copias de seguridad en la nube son muchos, pero principalmente giran en torno a tener estas copias de seguridad almacenadas en una ubicación diferente a la base de datos principal, lo que nos permite tener una red de seguridad en caso de una recuperación ante desastres. Si bien no entraremos en detalles sobre cómo configurar cada una de estas opciones de copia de seguridad, exploraremos algunas ideas y configuraciones diferentes para las copias de seguridad.

Hay algunas desventajas de almacenar copias de seguridad en la nube, comenzando con la transferencia. Si las copias de seguridad de la base de datos son extremadamente grandes, la carga real podría llevar mucho tiempo e incluso podría haber aumentado los costos si el servicio en la nube cobra por la transferencia de ancho de banda. Se recomienda enfáticamente la compresión para mantener bajos el tiempo y los costos.

La seguridad podría ser otra preocupación con el alojamiento de copias de seguridad en la nube, mientras que algunas empresas tienen pautas estrictas sobre dónde se almacenan y existen sus datos. Si la seguridad es una preocupación, las copias de seguridad se pueden cifrar antes de exportarlas a un servicio de alojamiento en la nube.

Opciones de copia de seguridad en la nube

Hay varias formas diferentes de crear copias de seguridad de bases de datos para PostgreSQL y, según el tipo de copia de seguridad, el tiempo de recuperación, el tamaño y las opciones de infraestructura variarán. Dado que muchas de las soluciones de almacenamiento en la nube son simplemente almacenamiento con diferentes interfaces API, se puede crear cualquier solución de copia de seguridad inteligente con un poco de secuencias de comandos.

Copias de seguridad instantáneas

Las instantáneas son copias de seguridad que tienen una copia de la base de datos PostgreSQL en un momento específico. Estas copias de seguridad se crean utilizando pg_dump, que simplemente vuelca la base de datos en un solo archivo, o copiando el directorio de datos base para PostgreSQL. Cualquiera de estos se puede comprimir, copiar a otras unidades y servidores, y copiar a la opción de almacenamiento en la nube deseada.

Uso de pg_dump con compresión

pg_dump -Fc severalnines > severalnines.dmp

Copia de seguridad del directorio de datos usando pg_basebackup

El programa pg_basebackup se puede utilizar para crear una copia de seguridad base muy fácilmente. Para obtener más información sobre todas las funciones y cómo configurarlas, visite la documentación oficial de la versión de PostgreSQL que se utiliza.

pg_basebackup --format=tar -z -D severalnines_basebackup

Amazon S3

Con la plataforma AWS de Amazon, S3 es un servicio de almacenamiento de datos que se puede utilizar para almacenar copias de seguridad de bases de datos. Si bien las copias de seguridad se pueden cargar a través de la interfaz web, Amazon CLI (interfaz de línea de comandos) se puede usar para hacerlo desde la línea de comandos y mediante scripts de automatización de copias de seguridad. Puede encontrar información sobre la CLI de AWS aquí. Si las copias de seguridad se van a conservar durante mucho tiempo y el tiempo de recuperación no es una preocupación, las copias de seguridad se pueden transferir al servicio Glacier de Amazon, lo que proporciona un almacenamiento a largo plazo mucho más económico.

aws s3 cp severalnines.dmp s3://severalninesbucket/backups

Amazon también tiene diferentes regiones para sus servicios en todo el mundo. A pesar de que tienen un buen historial de tiempo de actividad, la distribución de copias de respaldo en varias regiones aumenta las opciones de recuperación ante desastres y reduce las posibilidades de perder datos valiosos.

Almacenamiento de Microsoft Azure

La plataforma en la nube de Microsoft, Azure, tiene opciones de almacenamiento con su propia interfaz de línea de comandos, la información se puede encontrar aquí.

az storage blob upload --container-name severalnines --file severalnines.dmp --name severalnines_backup

Cualquier otro servicio moderno de almacenamiento en la nube debería ofrecer herramientas similares para copiar copias de seguridad en sus servidores en la nube; consulte su documentación para obtener más detalles.

Copias de seguridad en espera

A veces, las copias de seguridad en sí mismas pueden ser extremadamente grandes, incluso si están comprimidas, y cargar una copia de seguridad diaria o semanal en un servicio en la nube podría estar fuera de discusión debido a las velocidades y/o los costos del ancho de banda. Por lo tanto, obtener una copia de seguridad en la nube para su custodia es mucho más difícil.

Una forma de hacer esto es tener un modo de espera tibio o caliente ejecutándose en una máquina virtual basada en la nube, como una instancia EC2 de Amazon, donde es una copia exacta de la base de datos maestra principal y los únicos datos que se envían a la instancia de la nube. es cualquier cambio, en lugar de otra copia de toda la base de datos. Esto requeriría transferir toda la base de datos a la vez, pero después de eso, solo se deben transferir los cambios.

Pero, ¿un servidor en espera es realmente una copia de seguridad? Si la base de datos principal deja de funcionar, la base de datos en espera se puede convertir en la principal y las aplicaciones se pueden redirigir a ella; sin embargo, si el objetivo es tener copias de seguridad para un determinado momento durante la semana o los últimos meses, esto no funcionará.

Para solucionar esto, se pueden hacer varias cosas. El modo de espera en sí mismo puede verse obligado a tener un retraso, por ejemplo, al ingerir datos solo una vez que tiene un día de antigüedad. Otra es crear copias de seguridad de una de las formas tradicionales (pg_dump, copia del directorio de datos) en la nube en espera, lo que significa que estas copias de seguridad no necesitarán transferirse a través de la red, ya que se crean en la propia máquina de la nube. Las transferencias dentro de la red suelen ser más rápidas y económicas.

Copias de seguridad de ClusterControl y la nube

Varios nueves crearon ClusterControl, un sistema de administración de bases de datos que ayuda a administrar muchas bases de datos diferentes, incluida PostgreSQL. Es una caja de herramientas definitiva para que cualquier administrador de base de datos o sistema tenga control y visibilidad completos de sus bases de datos, e incluye funciones de copia de seguridad muy útiles.

Con ClusterControl, las copias de seguridad de las bases de datos de PostgreSQL se pueden administrar, programar y configurar fácilmente para copiar automáticamente las copias de seguridad realizadas en los servicios de "almacenamiento en la nube", incluidos Amazon S3, Microsoft Azure y Google Cloud. Esto hace que no sea necesario crear scripts de herramientas personalizadas para cargar copias de seguridad en la nube, además de brindar una interfaz de usuario agradable para las copias de seguridad en general.

Siempre debe realizarse una copia de seguridad de nuestras bases de datos, y almacenarlas en una segunda, tercera y cuarta ubicación es una práctica muy buena y común. Lanzar una opción de nube aumenta las opciones de recuperación ante desastres y agrega otra capa de estabilidad de back-end para una empresa, donde en muchos casos, si la base de datos desaparece, la empresa desaparece. Explorar las opciones de respaldo en la nube hoy puede eliminar el desastre mañana.