miércoles, 24 de enero de 2018

Cómo volcar una BD SQL Server desde el RDS de AWS a un entorno on-premise (I)

Hola! Hoy os traigo un tutorial algo más elaborado, y el primero (creo) en el que trabajo con AWS. Espero que no sea el único!

Para exportar una BD SQL Server desde AWS a un entorno on-premise, vamos a hacer un export a S3 y desde allí lo descargamos e importamos desde el entorno on premise.

En esta primera parte del tutorial vamos a hacer el export, y en una segunda parte, la importación en destino

Lo que primero vamos a necesitas será un usuario con permisos suficientes para poder exportar el backup y volcarlo en un bucket de S3; después necesitas tener ese bucket. Y por último, tener la opción SQLSERVER_BACKUP_RESTORE añadida a un grupo de opciones en tu instancia RDS.


Si ya tienes un usuario IAM puedes crear y asignarle la política específica para hacer exports/restores RDS o puedes crear un rol y asignarlo. En cualquier caso, la política que tienes que crear debería ser una de las tres definidas aquí.

Para hacer el export del SQLServer nos conectamos a la consola y ejecutamos este comando

exec msdb.dbo.rds_backup_database 
        @source_db_name='database_name',
        @s3_arn_to_backup_to='arn:aws:s3:::bucket_name/file_name_and_extension',
        @kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id',
        @overwrite_S3_backup_file=1,
        @type='differential/FULL';

donde
  • @source_db_name hace referencia a la BD que vas a exportar
  • @s3_arn_to_backup_to hace referncia al bucket donde vas a exportar y al nombre del fichero con que se va a guardar
  • @kms_master_key_arn hace referencia a la encriptación del fichero, y es OPCIONAL
  • @overwrite_S3_backup_file hace referencia a si quieres sobreescribir el fichero en caso de que exista; 1 equivale a Sí y 0 a No. Es OPCIONAL, y por defecto es "1"
  • @type hace referencia al tipo de backup, si es diferencial o completo. Esta opción también es OPCIONAL y por defecto equivale a FULL. Para el backup diferencial se toma como punto de referencia el último backup FULL que se ha hecho. Se puede consultar cuándo se ha hecho con esta query:
select top 1 
database_name
,  backup_start_date
,  backup_finish_date 
from    msdb.dbo.backupset 
where   database_name='database_name'
and     type = 'D' 
order by backup_start_date desc;

Este export no es instantáneo y va a depender sobre todo del tamaño de la BD; para ver su evolución, lo hacemos con esta query:

exec msdb.dbo.rds_task_status @db_name='database_name';
 
Si quisiéramos restaurar la base de datos, la query sería


exec msdb.dbo.rds_restore_database
@restore_db_name=’database_name';
@s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name_and_extension';


Bien, y hasta aquí la parte de AWS; en el siguiente post os explico cómo lo hago yo para importar el export en un SQL Server.



Gracias!

No hay comentarios: