Gestionar copias de seguridad para instancias de SQL Server RDS es crucial para garantizar la disponibilidad de datos y la recuperación ante desastres. AWS proporciona herramientas para facilitar este proceso, incluidos comandos para realizar copias de seguridad de bases de datos de SQL Server RDS directamente en Amazon S3. Este artículo te guiará a través de los comandos y configuraciones necesarios para realizar copias de seguridad y restauraciones.
Respaldo de SQL Server RDS a S3
El procedimiento almacenado principal utilizado para crear copias de seguridad es msdb.dbo.rds_backup_database
. Este comando te permite especificar la base de datos a respaldar y la ubicación en S3 donde se almacenará la copia de seguridad.
Parámetros del Paquete
El procedimiento almacenado admite varios parámetros, que se clasifican como requeridos y opcionales.
Parámetros Requeridos
@source_db_name
: El nombre de la base de datos a respaldar.@s3_arn_to_backup_to
: El ARN que indica el bucket de Amazon S3 a utilizar para la copia de seguridad, incluyendo el nombre del archivo de copia de seguridad.- El archivo puede tener cualquier extensión, pero
.bak
es comúnmente utilizado.
- El archivo puede tener cualquier extensión, pero
Parámetros Opcionales
-
@kms_master_key_arn
- El ARN para la clave KMS de cifrado simétrico que se utilizará para cifrar la copia de seguridad.
- No se puede utilizar la clave de cifrado predeterminada. Usar la clave predeterminada resultará en un fallo de la copia de seguridad.
- Si no se especifica una clave KMS, el archivo de copia de seguridad no se cifrará.
- Solo se admiten claves KMS simétricas.
-
@overwrite_s3_backup_file
- Determina si se debe sobrescribir un archivo existente.
0
(predeterminado): No sobrescribe un archivo existente. Devuelve un error si el archivo ya existe.1
: Sobrescribe el archivo existente, incluso si no es un archivo de copia de seguridad.
@tipo
- Especifica el tipo de respaldo.
COMPLETO
(por defecto): Realiza un respaldo completo.DIFERENCIAL
: Crea un respaldo diferencial basado en el último respaldo completo.- Importante: Para que los respaldos diferenciales funcionen, no debe existir un snapshot entre el último respaldo completo y el respaldo diferencial. Si existe un snapshot, realiza otro respaldo completo antes del respaldo diferencial. A continuación se muestra una consulta de ejemplo para verificar el último respaldo completo:
MS SQL
select top 1
nombre_de_base_de_datos,
fecha_de_inicio_de_respaldo,
fecha_de_fin_de_respaldo
from msdb.dbo.backupset
where nombre_de_base_de_datos = 'mi_base_de_datos'
y tipo = 'D'
ordenar por fecha_de_inicio_de_respaldo desc;
-
@number_of_files
- Especifica la cantidad de archivos (trozos) en los que se dividirá la copia de seguridad. Máximo: 10.
- Si se establece en
1
o se omite, se creará un único archivo de copia de seguridad. - Las copias de seguridad multifichero deben usar un único
*
en el nombre del archivo, el cual será reemplazado por cadenas alfanuméricas durante la generación. Por ejemplo:- Entrada:
backup*.bak
,@number_of_files = 4
- Salida:
backup1-de-4.bak
,backup2-de-4.bak
,backup3-de-4.bak
,backup4-de-4.bak
- Entrada:
-
@block_size
- Especifica el tamaño de bloque físico (en bytes) para operaciones de respaldo.
- Valores válidos:
512
,1024
,2048
,4096
,8192
,16384
,32768
,65536
.
-
@max_transfer_size
- Denota la cantidad máxima de datos (en bytes) transferidos por operación de E/S.
- Valores válidos: Múltiplos de
65536
bytes hasta4194304
bytes (4 MB).
-
@buffer_count
- Número total de búferes de E/S utilizados durante el proceso de respaldo.
Sintaxis del comando
exec msdb.dbo.rds_backup_database
@source_db_name = 'database_name',
@s3_arn_to_backup_to = 'arn:aws:s3:::bucket_name/file_name.extension',
[@kms_master_key_arn = 'arn:aws:kms:region:account-id:key/key-id'],
[@overwrite_s3_backup_file = 0|1],
[@block_size = 512|1024|2048|4096|8192|16384|32768|65536],
[@max_transfer_size = n],
[@buffer_count = n],
[@type = 'DIFFERENTIAL|FULL'],
[@number_of_files = n];
Ejemplo: Respaldo completo en S3
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Configuración de la Compresión del Respaldo
Para ahorrar espacio y reducir el tiempo de transferencia, puedes habilitar la compresión para los respaldos de SQL Server RDS utilizando los comandos rdsadmin
.
Habilitar la Compresión
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
Deshabilitar Compresión
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
Nota: SQL Express no admite compresión de copias de seguridad; habilitarla en tales casos resultará en un fallo de la copia de seguridad.
Realización de Copias de Seguridad Nativas de SQL Server
Amazon RDS también admite la funcionalidad de copias de seguridad nativas de SQL Server. A continuación se muestran comandos para operaciones de copia de seguridad y restauración.
Comandos de Copia de Seguridad
Comando de Copia de Seguridad Completa
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_diff.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Comando de Copia de Seguridad Diferencial
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/differential_backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
Comando de Restauración
Comando de Restauración Diferencial
exec msdb.dbo.rds_restore_database
@restore_db_name = 'MyDatabase',
@s3_arn_to_restore_from = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@type = 'FULL';
Comando de Restauración Diferencial
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
Monitoreo y Gestión de Tareas de Copia de Seguridad
Consultar el estado de la tarea:
exec msdb.dbo.rds_task_status @db_name = 'MyDatabase';
Cancelar una tarea de copia de seguridad:
exec msdb.dbo.rds_cancel_task @task_id = 1234;
Consideraciones
- Garantizar que el bucket de S3 utilizado en los comandos tenga los permisos necesarios para permitir el acceso desde la instancia de RDS.
- Para datos sensibles, puede utilizar una clave maestra de AWS KMS para cifrar las copias de seguridad antes de almacenarlas en S3 especificando
@kms_master_key_arn
.
Recursos Adicionales
Para ejemplos e información más detallada, consulte la documentación oficial de AWS sobre copias de seguridad de SQL Server.
Esta guía ofrece una base sólida para gestionar copias de seguridad de SQL Server RDS con Amazon S3. Para configuraciones más avanzadas, consulte la documentación de AWS o experimente con los parámetros proporcionados para ajustar el proceso de copia de seguridad según su entorno.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket