Blog de Amazon Web Services (AWS)

Como hacer respaldos y restauración de Amazon RDS Custom para SQL Server 2022 con una integración a Amazon S3

Por Srikanth Katakam y Minesh Chande

Amazon Relational Database Service (Amazon RDS) Custom for SQL Server es un servicio de base de datos administrado para aplicaciones personalizadas y empaquetadas que requieren acceso al sistema operativo (SO) subyacente y al entorno de base de datos (DB), en este caso para SQL Server. Donde Amazon RDS Custom para SQL Server sirve para automatizar la configuración, operación y escalado de bases de datos en la nube, con la ventaja adicional de que otorga acceso a la base de datos y al sistema operativo subyacente. Con esto, se pueden configurar ajustes, instalar controladores y habilitar funciones nativas para cumplir con los requisitos de la aplicación dependiente.

Antes de la versión SQL Server 2022, Amazon RDS Custom, para usuarios de SQL Server, no contaba con soporte directo para respaldo y restauración con Amazon Simple Storage Service (Amazon S3). Lo que los usuarios hacían en ese entonces, era realizar copias de seguridad nativas en el disco local y, si es necesario, cargar el mismo archivo de copia de seguridad en un bucket S3 desde el disco local.
Pero en la actualidad, ya se tiene Amazon RDS Custom para SQL Server compatible con SQL Server 2022, esto significa que este se puede integrar con Amazon S3 y realizar directamente operaciones nativas de respaldo y restauración hacia y desde el bucket S3.

En este post, se muestra cómo se puede realizar la integración de Amazon S3 con Amazon RDS Custom para SQL Server 2022.

Descripción general de la solución

A partir de la versión de SQL Server 2022 (16.x), Microsoft ha incluido soporte para el almacenamiento de objetos, el cuál es compatible con Amazon S3. En esta publicación, se mostrará cómo se puede configurar la integración de Amazon S3 con Amazon RDS Custom para SQL Server (2022) para luego realizar operaciones nativas de backup y restauración en un bucket S3. Para obtener más detalles, consulte Copia de seguridad de SQL Server en URL para almacenamiento de objetos compatibles con S3.

Estos son los pasos a generales de la solución:

  1. Crea un bucket S3.
  2. Cree una política de AWS Identity and Access Management (IAM) con los permisos necesarios para acceder al bucket S3.
  3. Cree un usuario de IAM y adjunte la política de IAM al mismo.
  4. Cree una instancia RDS Custom para SQL Server (2022).
  5. Cree credenciales de SQL Server para acceder al bucket S3.
  6. Realice copias de seguridad nativas utilizando la URL del bucket S3.
  7. Realice una restauración nativa usando la URL del bucket S3.

Esta solución implica la creación y utilización de nuevos recursos de AWS. Por lo que debe tener en cuenta que incurrirá en costos en su cuenta. Consulte Precios de AWS para obtener más información.

Requisitos previos

Se necesitan los siguientes requisitos previos para implementar esta solución:

Crear un bucket S3

Cree un bucket S3, en este se almacenarán archivos de respaldo para operaciones de copia de seguridad y restauración. Para obtener más detalles, consulte Creación de un bucket.

En este ejemplo, creamos un bucket S3 llamado cfs-s3-bucket-for-backups y luego creamos una carpeta llamada ss-2022 en la región us-west-2.

Crear una política de IAM

Aquí se creará una política IAM para controlar los permisos necesarios sobre acciones del servicio S3. Como parte de está política de IAM, se define el nombre del bucket S3 y se otorgan los siguientes permisos necesarios para acceder al mismo:

  • s3:ListBucket para permitir el listado del contenido del bucket
  • s3:PutObject para permitir que los archivos de copia de seguridad se escriban en el bucket
  • s3:GetObject para permitir que los archivos de copia de seguridad se lean desde el bucket

Puede utilizar el siguiente código para crear una política de IAM denominada cfs-iam-policy-for-backups mediante la interfaz de línea de comandos de AWS (AWS CLI). Esta política otorga los permisos necesarios al bucket S3 llamado cfs-s3-bucket-for-backups. Aquí debe reemplazar el bucket S3 por el ARN de su bucket :

aws iam create-policy \
    --policy-name cfs-iam-policy-for-backups \
    --policy-document '{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::cfs-s3-bucket-for-backups*"
}
]
}'

Crear un usuario de IAM y adjuntar la política de IAM

Después del paso anterior, debe crear un usuario de IAM y adjuntar esta política de IAM. Para obtener instrucciones más detalladas consulte Crear un usuario de IAM en su cuenta de AWS. Es importante crear una llave de acceso y anotar el ID de la llave de acceso, cómo también es importante obtener la llave  de acceso secreta;, estas se usarán para crear las credenciales de SQL Server en un paso posterior, estas son necesarias para tener el acceso al bucket de S3 a nivel de base de datos.

Crear una instancia RDS Custom para SQL Server (2022)

Es importante tener todos los requisitos previos antes de crear su primera instancia de RDS Custom para SQL Server.  Para mayor detalle consulte Configuración de su entorno para Amazon RDS Custom for SQL Server.

Puede usar el siguiente comando para crear una instancia RDS Custom para SQL Server (usando SQL Server 2022) usando la CLI (Interface de Línea de Comandos)de AWS. En esta debe reemplazar <db-instance-name>, <key-id>, <custom-iam-profile>, <security-group-id>, y <db-subnet-group> con los valores apropiados.

aws rds create-db-instance \
 --db-instance-identifier <db-instance-name> \
 --engine custom-sqlserver-ee \
 --kms-key-id <key-id> \
 --engine-version 16.00.4085.2.v1 \
 --master-username admin \
 --master-user-password ********* \
 --db-instance-class db.m5.2xlarge \
 --allocated-storage 200 \
 --storage-type gp3 \
--region us-west-2 \
 --custom-iam-instance-profile <custom-iam-profile> \
--vpc-security-group-ids <security-group-id> \
 -db-subnet-group <db-subnet-group>

Crear credenciales de SQL Server para acceder al bucket S3

Después de que la creación de la instancia sea exitosa, inicie sesión en la base de datos usando SSMS y el usuario principal.

Aquí hay un ejemplo en el que se crean credenciales de SQL Server para la autenticación con el punto de conexión al servicio de almacenamiento de objetos. Utilice el ID de la llave de acceso y el ID de la llave secreta que obtuvo del paso anterior. En el siguiente ejemplo se utiliza una carpeta llamada ss-2022 bajo el bucket de S3 cfs-s3-bucket-for-backups.

CREATE CREDENTIAL   [s3://<endpoint>:<port>/<bucket>]
WITH
        IDENTITY    = 'S3 Access Key',
        SECRET      = '<AccessKeyID>:<SecretKeyID>';

Example:
CREATE CREDENTIAL [s3://cfs-s3-bucket-for-backups.s3.us-west-2.amazonaws.com/ss-2022]
WITH IDENTITY = 'S3 Access Key',
SECRET = 'ABCDEFGHXXXXX:CKLKq6/123456789XXXX';

Realizar copias de seguridad nativas usando la URL del bucket S3

El siguiente comando crea una base de datos de llamada test1 y guarda una copia de seguridad completa llamada test-full-1.bak en el bucket S3 cfs-s3-bucket-for-backups en la carpeta ss-2022. Puede reemplazar el nombre de la base de datos y la URL con los valores apropiados.

-- Create database test1
create database test1;

use test1;

-- create table t1
create table t1 (id int);
insert into t1 values (10)
go 100

-- create table t2
create table t2 (id int);
insert into t2 values (10)
go 100

-- backup database test1
BACKUP DATABASE test1
TO URL = 's3://cfs-s3-bucket-for-backups.s3.us-west-2.amazonaws.com/ss-2022/test-full-1.bak' WITH FORMAT, MAXTRANSFERSIZE = 20971520, COMPRESSION; 

Realizar restauración nativa usando la URL del bucket S3

El siguiente comando utiliza un archivo de copia de seguridad test-full-1.bak del bucket S3 y lo restaura en la instancia de RDS Custom para SQL Server con el nombre de base de datos test2.

RESTORE DATABASE test2
FROM URL ='s3://cfs-s3-bucket-for-backups.s3.us-west-2.amazonaws.com/ss-2022/test-full-1.bak'
WITH move 'test1' to 'D:\RDSDBData\test2.mdf',
move 'test1_log' to 'D:\RDSDBData\test2_log.ldf';

Conclusión

En esta publicación, proporcionamos una guía paso a paso para implementar la integración de Amazon S3 en Amazon RDS Custom para SQL Server, usando como esencia la creación de un Bucket de S3, un usuario y una política de IAM. También se demostró cómo crear credenciales de Amazon S3 en SQL Server y luego realizar con éxito operaciones de backup y restauración nativas. Deja comentarios si tiene alguna duda.

Para obtener más información sobre dónde o cuándo usar RDS Custom, puede consultar Trabajar con RDS Custom para SQL Server.

Este blog es una traducción del blog en ingles.

Acerca de los autores

Srikanth Katakam es ingeniero sénior de bases de datos en Amazon Web Services. Trabaja en el equipo de Amazon RDS, enfocándose en motores de bases de datos comerciales, Amazon RDS Custom y SQL Server. Le gusta trabajar en desafíos técnicos en Amazon RDS y le apasiona aprender y compartir conocimientos con sus compañeros de equipo y clientes de AWS.

 

Minesh Chande es Arquitecto Senior de Soluciones Especialista en Bases de Datos en Amazon Web Services. Ayuda a clientes de diferentes sectores verticales de la industria a diseñar, migrar y optimizar sus cargas de trabajo de SQL Server a una plataforma de base de datos administrada como Amazon RDS y Amazon RDS Custom.

 

Traductores y Revisores

Luiz Rampanelli es arquitecto de soluciones en el equipo de AWS Latam. Cuenta con más de 10 años de experiencia con cargas de trabajo de Microsoft en entornos híbridos y de nube. Trabaja diseñando soluciones siguiendo las mejores prácticas para que los clientes puedan aprovechar al máximo los beneficios de la nube de AWS.
Pilar Pinto es Arquitecta de Soluciones para CSC Latam, trabaja con clientes de diversas verticales en empresas SMB. Su foco es la seguridad y buenas prácticas arquitectónicas de las que se benefician estas pequeñas y medianas empresas