Todas las empresas hoy en día tienen (o deberían tener) un Plan de Recuperación de Desastres (DRP) para evitar la pérdida de datos en caso de falla; creado de acuerdo con un objetivo de punto de recuperación (RPO) aceptable para el negocio.
Una copia de seguridad es un comienzo básico en cualquier DRP, pero para garantizar la usabilidad de la copia de seguridad, una sola copia de seguridad no es suficiente. La mejor práctica 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. Para este último paso, debe elegir un proveedor de nube sólido y estable para asegurarse de que sus datos se almacenen correctamente y se pueda acceder a ellos en cualquier momento.
En este blog, veremos uno de los proveedores de nube más famosos, Google Cloud Platform (GCP) y cómo usarlo para almacenar sus copias de seguridad de PostgreSQL en la nube.
Acerca de Google Cloud
Google Cloud ofrece una amplia gama de productos para su carga de trabajo. Veamos algunos de ellos y cómo se relacionan con el almacenamiento de copias de seguridad de PostgreSQL en la nube.
- Almacenamiento en la nube:permite el almacenamiento y la recuperación en todo el mundo de cualquier cantidad de datos en cualquier momento. Puede usar Cloud Storage para una variedad de escenarios, incluido el servicio de contenido de sitios web, el almacenamiento de datos para archivado y recuperación ante desastres, o la distribución de objetos de datos de gran tamaño a los usuarios mediante descarga directa.
- Cloud SQL:es un servicio de base de datos totalmente gestionado que facilita la configuración, el mantenimiento, la gestión y la administración de sus bases de datos relacionales de PostgreSQL, MySQL y SQL Server en la nube.
- Compute Engine:ofrece máquinas virtuales que se ejecutan en Google Cloud con soporte para escalar desde instancias únicas a computación en la nube global con equilibrio de carga. Las máquinas virtuales de Compute Engine se inician rápidamente, vienen con opciones de disco local y persistente de alto rendimiento y ofrecen un rendimiento uniforme.
Almacenamiento de copias de seguridad en Google Cloud
Si está ejecutando su base de datos de PostgreSQL en Google Cloud con Cloud SQL, puede realizar una copia de seguridad directamente desde Google Cloud Platform; sin embargo, no es necesario ejecutarla aquí para almacenar sus copias de seguridad de PostgreSQL.
Almacenamiento en la nube de Google
Al igual que el conocido producto Amazon S3, si no está ejecutando su base de datos PostgreSQL con Cloud SQL, esta es la opción más utilizada para almacenar copias de seguridad o archivos en Google Cloud. Se puede acceder desde Google Cloud Platform, en la sección Primeros pasos o en el menú izquierdo de Almacenamiento. Con Cloud Storage, incluso puede transferir fácilmente su contenido S3 aquí usando la función Transferir.
Cómo usar Google Cloud Storage
Primero, debe crear un nuevo depósito para almacenar sus datos, así que vaya a Google Cloud Platform -> Almacenamiento -> Crear depósito
En el primer paso, solo debe agregar un nuevo nombre de depósito.
En el siguiente paso, puede especificar el tipo de ubicación (multi-región por defecto) y el lugar de ubicación.
Luego, puede cambiar la clase de almacenamiento de estándar (opción predeterminada) a nearline o línea fría.
Y luego, puede cambiar el control de acceso.
Finalmente, tiene algunas configuraciones opcionales como el cifrado o la política de retención.
Ahora que ha creado su nuevo depósito, veremos cómo usarlo.
Uso de la herramienta GSutil
GSutil es una aplicación de Python que le permite acceder a Cloud Storage desde la línea de comandos. Le permite realizar diferentes tareas de administración de cubos y objetos. Veamos cómo instalarlo en CentOS 7 y cómo cargar una copia de seguridad usándolo.
Descargar el SDK de la nube:
$ curl https://sdk.cloud.google.com | bash
Reinicie su shell:
$ exec -l $SHELL
Ejecute gcloud init y configure la herramienta:
$ gcloud init
Este comando le pedirá que inicie sesión en su cuenta de Google Cloud accediendo a una URL y agregando un código de autenticación.
Ahora que tiene la herramienta instalada y configurada, subamos una copia de seguridad al depósito.
Primero, revisemos nuestros cubos creados:
[[email protected] ~]# gsutil ls
gs://pgbackups1/
Y para copiar su copia de seguridad de PostgreSQL (u otro archivo), ejecute:
[[email protected] ~]# gsutil cp /root/backups/BACKUP-3/base.tar.gz gs://pgbackups1/new_backup/
Copying file:///root/backups/BACKUP-3/base.tar.gz [Content-Type=application/x-tar]...
| [1 files][ 4.9 MiB/ 4.9 MiB]
Operation completed over 1 objects/4.9 MiB.
El depósito de destino debe existir.
Y luego, puede enumerar el contenido del directorio new_backup, para verificar el archivo cargado:
[[email protected] ~]# gsutil ls -r gs://pgbackups1/new_backup/*
gs://pgbackups1/new_backup/
gs://pgbackups1/new_backup/base.tar.gz
Para obtener más información sobre el uso de GSutil, puede consultar la documentación oficial.
Google Cloud SQL
Si quieres centralizar todo el entorno (base de datos + copias de seguridad) en Google Cloud, tienes disponible este producto Cloud SQL. De esta forma, tendrás tu base de datos PostgreSQL ejecutándose en Google Cloud y también podrás gestionar las copias de seguridad desde la misma plataforma. Se puede acceder desde Google Cloud Platform, en la sección Primeros pasos o en el menú de la izquierda de Almacenamiento.
Cómo usar Google Cloud SQL
Para crear una nueva instancia de PostgreSQL, vaya a Google Cloud Platform -> SQL -> Crear instancia
Aquí puede elegir entre MySQL y PostgreSQL como motor de base de datos. Para este blog, creemos una instancia de PostgreSQL.
Ahora, debe agregar una ID de instancia, contraseña, ubicación y PostgreSQL versión (9.6 o 11).
También tiene algunas opciones de configuración, como habilitar dirección IP pública, tipo de máquina y almacenamiento, copias de seguridad, etc.
Cuando se crea la instancia de Cloud SQL, puede seleccionarla y verá una descripción general de esta nueva instancia.
Y puede ir a la sección Copias de seguridad para administrar sus copias de seguridad de PostgreSQL.
Para reducir los costos de almacenamiento, las copias de seguridad funcionan de manera incremental. Cada copia de seguridad almacena solo los cambios en sus datos desde la copia de seguridad anterior.
Google Cloud Compute Engine
Al igual que Amazon EC2, esta forma de almacenar información en la nube es más costosa y requiere más tiempo que el almacenamiento en la nube, pero tendrá control total sobre el entorno de almacenamiento de respaldo. También se puede acceder desde Google Cloud Platform, en la sección Primeros pasos o en el menú de la izquierda Cómputo.
Cómo utilizar Google Cloud Compute Engine
Para crear una nueva máquina virtual, vaya a Google Cloud Platform -> Compute Engine -> Crear instancia
Aquí debe agregar un nombre de instancia, región y zona donde créalo Además, debe especificar la configuración de la máquina de acuerdo con sus requisitos de hardware y uso, y el tamaño del disco y el sistema operativo que se utilizará para la nueva máquina virtual.
Cuando la instancia esté lista, puede almacenar las copias de seguridad aquí, por ejemplo , enviándolo a través de SSH o FTP utilizando la dirección IP externa. Veamos un ejemplo con Rsync y otro con el comando SCP Linux.
Para conectarse a través de SSH a la nueva máquina virtual, asegúrese de haber agregado su clave SSH en la configuración de la máquina virtual.
[[email protected] ~]# rsync -avzP -e "ssh -i /home/sinsausti/.ssh/id_rsa" /root/backups/BACKUP-3/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
sending incremental file list
base.tar.gz
5,155,420 100% 1.86MB/s 0:00:02 (xfr#1, to-chk=0/1)
sent 4,719,597 bytes received 35 bytes 629,284.27 bytes/sec
total size is 5,155,420 speedup is 1.09
[[email protected] ~]#
[[email protected] ~]# scp -i /home/sinsausti/.ssh/id_rsa /root/backups/BACKUP-5/base.tar.gz [email protected]:/home/sinsausti/pgbackups/
base.tar.gz 100% 2905KB 968.2KB/s 00:03
[[email protected] ~]#
Puede integrar esto fácilmente en una secuencia de comandos para realizar un proceso de respaldo automático o usar este producto con un sistema externo como ClusterControl para administrar sus respaldos.
Gestionar sus copias de seguridad con ClusterControl
De la misma manera que puede centralizar la administración de la base de datos y la copia de seguridad desde la misma plataforma usando Cloud SQL, puede usar ClusterControl para varias tareas de administración relacionadas con su base de datos PostgreSQL.
ClusterControl es un sistema de gestión integral para bases de datos de código abierto que automatiza las funciones de implementación y gestión, así como la supervisión del estado y el rendimiento. ClusterControl admite la implementación, administración, monitoreo y escalado para diferentes tecnologías y entornos de bases de datos. Por lo tanto, puede, por ejemplo, crear nuestra instancia de máquina virtual en Google Cloud e implementar/importar nuestro servicio de base de datos con ClusterControl.
Creación de una copia de seguridad
Para esta tarea, vaya a ClusterControl -> Seleccionar clúster -> Copia de seguridad -> Crear copia de seguridad.
Puede crear una nueva copia de seguridad o configurar una programada. Para nuestro ejemplo, crearemos una única copia de seguridad al instante.
Debe elegir un método, 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 copia de seguridad.
Si habilitó la opción de cargar la copia de seguridad en la nube, verá un sección para especificar el proveedor de la nube (en este caso, Google Cloud) y las credenciales (ClusterControl -> Integraciones -> Proveedores de la nube). Para Google Cloud, utiliza Cloud Storage, por lo que debe seleccionar un depósito o incluso crear uno nuevo para almacenar sus copias de seguridad.
En la sección de respaldo, puede ver el progreso del respaldo y información como método, tamaño, ubicación y más.
Conclusión
Google Cloud puede ser una buena opción para almacenar sus copias de seguridad de PostgreSQL y ofrece diferentes productos para hacerlo. Sin embargo, no es necesario que sus bases de datos PostgreSQL se ejecuten allí, ya que solo puede usarlas como ubicación de almacenamiento.
La herramienta GSutil es un buen producto para administrar sus datos de Cloud Storage desde la línea de comandos, fácil de usar y rápido.
También puede combinar Google Cloud y ClusterControl para mejorar su sistema de monitoreo y entorno de alta disponibilidad de PostgreSQL. Si desea obtener más información sobre PostgreSQL en Google Cloud, puede consultar nuestra publicación de blog de análisis profundo.