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

Consejos para almacenar copias de seguridad de PostgreSQL en Amazon AWS

Los datos son probablemente uno de los activos más valiosos de una empresa. Por eso siempre debemos tener un Plan de Recuperación de Desastres (DRP) para evitar la pérdida de datos en caso de accidente o falla del hardware.

Una copia de seguridad es la forma más simple de DR; sin embargo, es posible que no siempre sea suficiente para garantizar un objetivo de punto de recuperación (RPO) aceptable. Se recomienda tener al menos tres copias de seguridad almacenadas en diferentes lugares físicos.

La mejor práctica dicta que los archivos de copia de seguridad deben tener uno almacenado localmente en el servidor de la base de datos (para una recuperación más rápida), otro en un servidor de copia de seguridad centralizado y el último en la nube.

Para este blog, veremos qué opciones ofrece Amazon AWS para el almacenamiento de copias de seguridad de PostgreSQL en la nube y mostraremos algunos ejemplos de cómo hacerlo.

Acerca de Amazon AWS

Amazon AWS es uno de los proveedores de nube más avanzados del mundo en términos de características y servicios, con millones de clientes. Si queremos ejecutar nuestras bases de datos PostgreSQL en Amazon AWS, tenemos algunas opciones...

  • Amazon RDS:Nos permite crear, administrar y escalar una base de datos PostgreSQL (o diferentes tecnologías de base de datos) en la nube de una manera fácil y rápida.

  • Amazon Aurora:es una base de datos compatible con PostgreSQL creada para la nube. Según el sitio web de AWS, es tres veces más rápido que las bases de datos PostgreSQL estándar.

  • Amazon EC2:es un servicio web que proporciona capacidad de cómputo redimensionable en la nube. Le brinda un control completo de sus recursos informáticos y le permite instalar y configurar todo sobre sus instancias, desde su sistema operativo hasta sus aplicaciones.

Pero, de hecho, no necesitamos que nuestras bases de datos se ejecuten en Amazon para almacenar nuestras copias de seguridad aquí.

Almacenamiento de copias de seguridad en Amazon AWS

Existen diferentes opciones para almacenar nuestra copia de seguridad de PostgreSQL en AWS. Si estamos ejecutando nuestra base de datos PostgreSQL en AWS, tenemos más opciones y (como estamos en la misma red) también podría ser más rápido. Veamos cómo AWS puede ayudarnos a almacenar nuestras copias de seguridad.

CLI de AWS

Primero, preparemos nuestro entorno para probar las diferentes opciones de AWS. Para nuestros ejemplos, usaremos un servidor PostgreSQL 11 local, que se ejecuta en CentOS 7. Aquí, debemos instalar la CLI de AWS siguiendo las instrucciones de este sitio.

Cuando tengamos nuestro AWS CLI instalado, podemos probarlo desde la línea de comandos:

[[email protected] ~]# aws --version

aws-cli/1.16.225 Python/2.7.5 Linux/4.15.18-14-pve botocore/1.12.215

Ahora, el siguiente paso es configurar nuestro nuevo cliente ejecutando el comando aws con la opción de configuración.

[[email protected] ~]# aws configure

AWS Access Key ID [None]: AKIA7TMEO21BEBR1A7HR

AWS Secret Access Key [None]: SxrCECrW/RGaKh2FTYTyca7SsQGNUW4uQ1JB8hRp

Default region name [None]: us-east-1

Default output format [None]:

Para obtener esta información, puede ir a la Sección IAM AWS y verificar el usuario actual, o si lo prefiere, puede crear uno nuevo para esta tarea.

Después de esto, estamos listos para usar la CLI de AWS para acceder a nuestros servicios de Amazon AWS.

Amazon S3

Esta es probablemente la opción más utilizada para almacenar copias de seguridad en la nube. Amazon S3 puede almacenar y recuperar cualquier cantidad de datos desde cualquier lugar de Internet. Es un servicio de almacenamiento simple que ofrece una infraestructura de almacenamiento de datos extremadamente duradera, altamente disponible e infinitamente escalable a bajo costo.

Amazon S3 proporciona una interfaz de servicio web simple que puede usar para almacenar y recuperar cualquier cantidad de datos, en cualquier momento, desde cualquier lugar en la web y (con AWS CLI o AWS SDK) puede integrarlo con diferentes sistemas y lenguajes de programación.

Cómo usarlo

Amazon S3 utiliza cubos. Son contenedores únicos para todo lo que almacena en Amazon S3. Entonces, el primer paso es acceder a la consola de administración de Amazon S3 y crear un nuevo depósito.

En el primer paso, solo necesitamos agregar el nombre del depósito y el Región de AWS.

Ahora, podemos configurar algunos detalles sobre nuestro nuevo depósito, como el control de versiones y registro.

Y luego, podemos especificar los permisos para este nuevo depósito.

Ahora que tenemos nuestro Cubo creado, veamos cómo podemos usarlo para almacenar nuestras copias de seguridad de PostgreSQL.

Primero, probemos nuestro cliente conectándolo a S3.

[[email protected] ~]# aws s3 ls

2019-08-23 19:29:02 s9stesting1

¡Funciona! Con el comando anterior, listamos los Cubos actuales creados.

Entonces, ahora podemos cargar la copia de seguridad en el servicio S3. Para esto, podemos usar el comando aws sync o aws cp.

[[email protected] ~]# aws s3 sync /root/backups/BACKUP-5/ s3://s9stesting1/backups/

upload: backups/BACKUP-5/cmon_backup.metadata to s3://s9stesting1/backups/cmon_backup.metadata

upload: backups/BACKUP-5/cmon_backup.log to s3://s9stesting1/backups/cmon_backup.log

upload: backups/BACKUP-5/base.tar.gz to s3://s9stesting1/backups/base.tar.gz

[[email protected] ~]# 

[[email protected] ~]# aws s3 cp /root/backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz s3://s9stesting1/backups/

upload: backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz to s3://s9stesting1/backups/pg_dump_2019-08-23_205919.sql.gz

[[email protected] ~]# 

Podemos comprobar el contenido del depósito desde el sitio web de AWS.

O incluso utilizando la AWS CLI.

[[email protected] ~]# aws s3 ls s3://s9stesting1/backups/

2019-08-23 19:29:31          0

2019-08-23 20:58:36    2974633 base.tar.gz

2019-08-23 20:58:36       1742 cmon_backup.log

2019-08-23 20:58:35       2419 cmon_backup.metadata

2019-08-23 20:59:52       1028 pg_dump_2019-08-23_205919.sql.gz

Para obtener más información sobre AWS S3 CLI, puede consultar la documentación oficial de AWS.

Glaciar Amazon S3

Esta es la versión de menor costo de Amazon S3. La principal diferencia entre ellos es la velocidad y la accesibilidad. Puede usar Amazon S3 Glacier si el costo del almacenamiento debe mantenerse bajo y no necesita acceso de milisegundos a sus datos. El uso es otra diferencia importante entre ellos.

Cómo usarlo

En lugar de cubos, Amazon S3 Glacier usa Vaults. Es un contenedor para almacenar cualquier objeto. Entonces, el primer paso es acceder a la consola de administración de Amazon S3 Glacier y crear una nueva bóveda.

Aquí, necesitamos agregar el nombre de la bóveda y la región y, en el siguiente paso, podemos habilitar las notificaciones de eventos que utiliza Amazon Simple Notification Service (Amazon SNS).

Ahora que tenemos nuestro Vault creado, podemos acceder a él desde AWS CLI .

[[email protected] ~]# aws glacier describe-vault --account-id - --vault-name s9stesting2

{

    "SizeInBytes": 0,

    "VaultARN": "arn:aws:glacier:us-east-1:984227183428:vaults/s9stesting2",

    "NumberOfArchives": 0,

    "CreationDate": "2019-08-23T21:08:07.943Z",

    "VaultName": "s9stesting2"

}

Está funcionando. Así que ahora podemos cargar nuestra copia de seguridad aquí.

[[email protected] ~]# aws glacier upload-archive --body /root/backups/BACKUP-6/pg_dump_2019-08-23_205919.sql.gz --account-id - --archive-description "Backup upload test" --vault-name s9stesting2

{

    "archiveId": "ddgCJi_qCJaIVinEW-xRl4I_0u2a8Ge5d2LHfoFBlO6SLMzG_0Cw6fm-OLJy4ZH_vkSh4NzFG1hRRZYDA-QBCEU4d8UleZNqsspF6MI1XtZFOo_bVcvIorLrXHgd3pQQmPbxI8okyg",

    "checksum": "258faaa90b5139cfdd2fb06cb904fe8b0c0f0f80cba9bb6f39f0d7dd2566a9aa",

    "location": "/984227183428/vaults/s9stesting2/archives/ddgCJi_qCJaIVinEW-xRl4I_0u2a8Ge5d2LHfoFBlO6SLMzG_0Cw6fm-OLJy4ZH_vkSh4NzFG1hRRZYDA-QBCEU4d8UleZNqsspF6MI1XtZFOo_bVcvIorLrXHgd3pQQmPbxI8okyg"

}

Una cosa importante es que el estado de Vault se actualiza aproximadamente una vez al día, por lo que debemos esperar a ver el archivo cargado.

[[email protected] ~]# aws glacier describe-vault --account-id - --vault-name s9stesting2

{

    "SizeInBytes": 33796,

    "VaultARN": "arn:aws:glacier:us-east-1:984227183428:vaults/s9stesting2",

    "LastInventoryDate": "2019-08-24T06:37:02.598Z",

    "NumberOfArchives": 1,

    "CreationDate": "2019-08-23T21:08:07.943Z",

    "VaultName": "s9stesting2"

}

Aquí tenemos nuestro archivo cargado en nuestro S3 Glacier Vault.

Para obtener más información sobre AWS Glacier CLI, puede consultar la documentación oficial de AWS.

EC2

Esta opción de almacenamiento de copias de seguridad es la más costosa y requiere más tiempo, pero es útil si desea tener un control total sobre el entorno de almacenamiento de copias de seguridad y desea realizar tareas personalizadas en las copias de seguridad (p. ej., Verificación de copias de seguridad). .)

Amazon EC2 (Elastic Compute Cloud) es un servicio web que proporciona capacidad de cómputo redimensionable en la nube. Le brinda un control completo de sus recursos informáticos y le permite instalar y configurar todo sobre sus instancias, desde su sistema operativo hasta sus aplicaciones. También le permite escalar rápidamente la capacidad, tanto hacia arriba como hacia abajo, a medida que cambian sus requisitos informáticos.

Amazon EC2 admite diferentes sistemas operativos como Amazon Linux, Ubuntu, Windows Server, Red Hat Enterprise Linux, SUSE Linux Enterprise Server, Fedora, Debian, CentOS, Gentoo Linux, Oracle Linux y FreeBSD.

Cómo usarlo

Vaya a la sección Amazon EC2 y presione Iniciar instancia. En el primer paso, debe elegir el sistema operativo de la instancia EC2.

En el siguiente paso, debe elegir los recursos para la nueva instancia.

Luego, puede especificar una configuración más detallada como red, subred y más .

Ahora, podemos agregar más capacidad de almacenamiento en esta nueva instancia, y como un servidor de respaldo, deberíamos hacerlo.

Cuando terminemos la tarea de creación, podemos ir a la sección de Instancias para vea nuestra nueva instancia EC2.

Cuando la instancia está lista (estado de instancia en ejecución), puede almacenar la copias de seguridad aquí, por ejemplo, enviándolo a través de SSH o FTP utilizando el DNS público creado por AWS. Veamos un ejemplo con Rsync y otro con el comando SCP Linux.

[[email protected] ~]# rsync -avzP -e "ssh -i /home/user/key1.pem" /root/backups/BACKUP-11/base.tar.gz [email protected]:/backups/20190823/

sending incremental file list

base.tar.gz

      4,091,563 100%    2.18MB/s 0:00:01 (xfr#1, to-chk=0/1)



sent 3,735,675 bytes  received 35 bytes 574,724.62 bytes/sec

total size is 4,091,563  speedup is 1.10

[[email protected] ~]# 

[[email protected] ~]# scp -i /tmp/key1.pem /root/backups/BACKUP-12/pg_dump_2019-08-25_211903.sql.gz [email protected]:/backups/20190823/

pg_dump_2019-08-25_211903.sql.gz                                                                                                                                        100% 24KB 76.4KB/s 00:00

Copia de seguridad de AWS

AWS Backup es un servicio de respaldo centralizado que le brinda capacidades de administración de respaldo, como programación de respaldo, administración de retención y monitoreo de respaldo, así como características adicionales, como respaldo de ciclo de vida a un bajo costo. nivel de almacenamiento, almacenamiento de copias de seguridad y cifrado independiente de sus datos de origen y políticas de acceso a copias de seguridad.

Puede utilizar AWS Backup para administrar copias de seguridad de volúmenes de EBS, bases de datos de RDS, tablas de DynamoDB, sistemas de archivos de EFS y volúmenes de Storage Gateway.

Cómo usarlo

Vaya a la sección AWS Backup en la consola de administración de AWS.

Aquí tiene diferentes opciones, como programar, crear o restaurar una copia de seguridad . Veamos cómo crear una nueva copia de seguridad.

En este paso, debemos elegir el Tipo de recurso que puede ser DynamoDB, RDS, EBS, EFS o Storage Gateway, y más detalles, como la fecha de vencimiento, la bóveda de respaldo y el rol de IAM.

Luego, podemos ver el nuevo trabajo creado en la sección AWS Backup Jobs .

Instantánea

Ahora, podemos mencionar esta opción conocida en todos los entornos de virtualización. La instantánea es una copia de seguridad realizada en un momento específico y AWS nos permite usarla para los productos de AWS. Veamos un ejemplo de una instantánea RDS.

Solo necesitamos elegir la instancia y agregar el nombre de la instantánea, y eso es eso. Podemos ver esta instantánea y la anterior en la sección Instantánea RDS.

Gestionar sus copias de seguridad con ClusterControl

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, incluido EC2. Entonces, podemos, por ejemplo, crear nuestra instancia EC2 en AWS 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.

Podemos crear una nueva copia de seguridad o configurar una programada. Para nuestro ejemplo, crearemos una única copia de seguridad al instante.

Debemos elegir un método, el servidor desde el cual se tomará la copia de seguridad , y dónde queremos almacenar la copia de seguridad. También podemos subir nuestra copia de seguridad a la nube (AWS, Google o Azure) habilitando el botón correspondiente.

Luego especificamos el uso de compresión, el nivel de compresión, el cifrado y la retención período para nuestra copia de seguridad.

Si habilitamos la opción de subir respaldo a la nube, veremos una sección para especificar el proveedor de la nube (en este caso AWS) y las credenciales (ClusterControl -> Integraciones -> Proveedores de la nube). Para AWS, utiliza el servicio S3, por lo que debemos seleccionar un Bucket o incluso crear uno nuevo para almacenar nuestras copias de seguridad.

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

Conclusión

Amazon AWS nos permite almacenar nuestras copias de seguridad de PostgreSQL, ya sea que lo estemos usando como un proveedor de nube de base de datos o no. Para tener un plan de respaldo efectivo, debe considerar almacenar al menos una copia de respaldo de la base de datos en la nube para evitar la pérdida de datos en caso de falla del hardware en otro almacén de respaldo. La nube le permite almacenar tantas copias de seguridad como desee almacenar o pagar.