Importación y exportación de bases de datos de SQL Server - Amazon Relational Database Service

Importación y exportación de bases de datos de SQL Server

Amazon RDS admite la copia de seguridad y la restauración nativas de bases de datos de Microsoft SQL Server mediante los archivos de copia de seguridad completos (archivos .bak). Al utilizar RDS, accede a archivos almacenados en Amazon S3 en lugar de usar el sistema de archivos local en el servidor de base de datos.

Por ejemplo, puede crear una copia de seguridad completa desde su servidor local, almacenarlo en S3 y restaurarlo en una instancia de base de datos de Amazon RDS. También puede realizar copias de seguridad desde RDS, almacenarlas en S3 y restaurarlas siempre que quiera.

La copia de seguridad y la restauración nativas están disponibles en todas las regiones de AWS para instancias de base de datos Single-AZ y Multi-AZ, incluidas las instancias de base de datos Multi-AZ con réplicas de lectura. La copia de seguridad y la restauración nativas están disponibles para todas las ediciones de Microsoft SQL Server compatibles con Amazon RDS.

En el siguiente diagrama se muestran los escenarios admitidos.


			Arquitectura de la copia de seguridad y la restauración nativas

El uso de archivos .bak nativos para realizar copias de seguridad y restaurar bases de datos suele ser la forma más rápida de realizar copias de seguridad y de restaurar bases de datos. El uso de la copia de seguridad y la restauración nativas ofrece muchos beneficios adicionales. Por ejemplo, puede hacer lo siguiente:

  • Migrar bases de datos a o desde Amazon RDS.

  • Mover bases de datos entre instancias de bases de datos de RDS for SQL Server.

  • Migrar datos, esquemas, procedimientos almacenados, disparadores y otro tipo de código de base de datos dentro de los archivos .bak.

  • Realizar una copia de seguridad y restaurar bases de datos únicas, en lugar de instancias de base de datos completas.

  • Crear copias de bases de datos para desarrollo, pruebas, sesiones de formación y demostraciones.

  • Almacenar y transferir archivos de copia de seguridad con Amazon S3 para capa de protección adicional para la recuperación de desastres.

Limitaciones y recomendaciones

El uso de la copia de seguridad y la restauración nativas tiene limitaciones como las siguientes:

  • No se puede realizar una copia de seguridad en un bucket ni restaurar desde un bucket de Amazon S3 situado en una región de AWS que no coincida con la de la instancia de base de datos de Amazon RDS.

  • Recomendamos encarecidamente que no restaure copias de seguridad de una zona horaria en una zona horaria diferente. Si restaura copias de seguridad de una zona horaria a otra zona horaria distinta, debe auditar las consultas y las aplicaciones para comprobar los efectos del cambio de zona horaria.

  • Amazon S3 tiene un límite de 5 TB por archivo. Para las copias de seguridad nativas de bases de datos más grandes, puede utilizar la copia de seguridad de varios archivos.

  • El tamaño máximo de la base de datos del que se puede realizar una copia de seguridad en S3 depende de la memoria, la CPU, la E/S y los recursos de red disponibles en la instancia de base de datos. Cuanto mayor sea la base de datos, más memoria consume el agente de copia de seguridad. Nuestras pruebas muestran que puede realizar una copia de seguridad comprimida de una base de datos de 16 TB en nuestros tipos de instancia de última generación a partir de tamaños de instancia 2xlarge o más grandes, siempre que haya recursos suficientes del sistema.

  • No puede realizar copias de seguridad ni restaurar de más de 10 archivos de copia de seguridad al mismo tiempo.

  • Una copia de seguridad diferencial se basa en la copia de seguridad completa. Para que funcionen los backups diferenciales, no puede crear una instantánea entre el último backup completo y la copia de seguridad diferencial. Si desea una copia de seguridad diferencial, pero existe una instantánea manual o automatizada, haga otra copia de seguridad completa antes de continuar con la copia de seguridad diferencial.

  • Las restauraciones de registros y diferenciales no son compatibles con bases de datos con archivos que tienen su file_guid (identificador único) establecido en NULL.

  • Puede ejecutar hasta dos tareas de copia de seguridad o restauración al mismo tiempo.

  • No puede realizar copias de seguridad del registro nativas desde SQL Server en Amazon RDS.

  • RDS admite restauraciones nativas de bases de datos de hasta 16 TB. Las restauraciones nativas de bases de datos en SQL Server Express Edition están limitadas a 10 GB.

  • No se puede realizar una copia de seguridad nativa durante el periodo de mantenimiento ni mientras Amazon RDS esté creando una instantánea de la base de datos. Si una tarea de copia de seguridad nativa se superpone a la ventana de copia de seguridad diaria de RDS, la tarea de copia de seguridad nativa se cancela.

  • En las instancias de base de datos Multi-AZ, solo puede restaurar de forma nativa las bases de datos a las que se haya realizado una copia de seguridad en el modelo de recuperación completa.

  • No se admite la restauración desde copias de seguridad diferenciales en instancias Multi-AZ.

  • La llamada a los procedimientos RDS para la copia de seguridad y la restauración nativas no es compatible.

  • Debe utilizar una clave maestra de cliente (CMK) simétrica de AWS KMS para cifrar las copias de seguridad. Amazon RDS no admite CMK asimétricas. Para obtener más información, consulte Uso de claves simétricas y asimétricas en la AWS Key Management Service Developer Guide.

  • Los archivos de copia de seguridad nativos se cifran con la CMK de AWS KMS especificada utilizando el modo criptográfico "Solo cifrado". Al restaurar archivos de copia de seguridad cifrados, tenga en cuenta que estaban cifrados con el modo criptográfico "Solo cifrado".

  • No se puede restaurar una base de datos que contenga un grupo de archivos FILESTREAM.

Si la base de datos puede estar sin conexión mientras se crea, se copia y se restaura el archivo de copia de seguridad, recomendamos utilizar la copia de seguridad y la restauración nativas para migrarla a RDS. Si la base de datos local no puede estar sin conexión, recomendamos utilizar AWS Database Migration Service para migrar la base de datos a Amazon RDS. Para obtener más información, consulte ¿Qué es AWS Database Migration Service?

La copia de seguridad y la restauración nativas no se han diseñado para reemplazar las capacidades de recuperación de datos de la característica de copia de instantáneas entre regiones. Recomendamos utilizar la función de copia de instantáneas para copiar la instantánea de base de datos en otra región de AWS para la recuperación de desastres entre regiones en Amazon RDS. Para obtener más información, consulte Copia de una instantánea de .

Configuración de la copia de seguridad y la restauración nativas

Para configurar la copia de seguridad y la restauración nativas, son necesarios tres componentes:

  1. Un bucket de Amazon S3 para almacenar los archivos de copia de seguridad.

    Debe tener un bucket S3 para utilizar con sus archivos de copia de seguridad y después cargar las copias de seguridad que quiera migrar a RDS. Si ya tiene un bucket de Amazon S3, puede utilizarlo. Si no dispone de un bucket, puede crear un bucket. También puede hacer que se cree automáticamente un bucket cuando añada la opción SQLSERVER_BACKUP_RESTORE mediante la Consola de administración de AWS.

    Para obtener información acerca de cómo usar S3, consulte la Guía de introducción a Amazon Simple Storage Service para una introducción sencilla. Para mayor profundidad, consulte la Guía del usuario de la consola de Amazon Simple Storage Service.

  2. Un rol de AWS Identity and Access Management (IAM) para obtener acceso al bucket.

    Si ya tiene un rol de IAM, puede utilizarlo. También puede elegir en la Consola de administración de AWS que el rol de IAM se cree automáticamente cuando se agregue la opción SQLSERVER_BACKUP_RESTORE. Si lo desea, puede crear uno nuevo manualmente.

    Si desea crear un nuevo rol de IAM manualmente, siga las indicaciones de la siguiente sección. Haga lo mismo si desea asociar relaciones de confianza y directivas de permisos a un rol de IAM existente.

  3. La opción SQLSERVER_BACKUP_RESTORE añadida a un grupo de opciones en la instancia de base de datos.

    Para activar la copia de seguridad y la restauración nativas en la instancia de base de datos, añada la opción SQLSERVER_BACKUP_RESTORE a un grupo de opciones en la instancia de base de datos. Para obtener más información e instrucciones, consulte Compatibilidad con copia de seguridad y restauración nativas en SQL Server.

Creación manual de un rol de IAM para la copia de seguridad y la restauración nativas

Si desea crear manualmente un nuevo rol de IAM para utilizarlo con la copia de seguridad y la restauración nativas, puede hacerlo. En este caso, se crea un rol para delegar los permisos desde el servicio de Amazon RDS a su bucket de Amazon S3. Cuando cree un rol de IAM, asocie una relación de confianza y una política de permisos. La relación de confianza permite que RDS adopte este rol. La política de permisos define las acciones que este rol puede realizar. Para obtener más información acerca de cómo crear un rol, consulte Crear un rol para delegar permisos a un servicio de AWS.

En el caso de la copia de seguridad y la restauración nativas, utilice relacione de confianza y políticas de permisos similares a las de los ejemplos de esta sección. En el ejemplo siguiente, vamos a usar el nombre de la entidad principal de servicio, rds.amazonaws.com, como alias de todas las cuentas del servicio. En los otros ejemplos, especificamos un Nombre de recurso de Amazon (ARN) para identificar otra cuenta, usuario o función con acceso a la política de confianza.

ejemplo Relación de confianza en las tareas nativas de copia de seguridad y restauración

{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Principal": {"Service": "rds.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

En el siguiente ejemplo se utiliza un ARN para especificar un recurso. Para obtener más información sobre cómo usar ARN, consulte Nombres de recursos de Amazon (ARN).

ejemplo Política de permisos para la copia de seguridad y la restauración nativas sin cifrado

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

ejemplo Política de permisos para la copia de seguridad y la restauración nativas con cifrado

Si desea cifrar los archivos de copia de seguridad, incluya una clave de cifrado en la política de permisos. Para obtener más información acerca de las claves de cifrado, consulte Introducción en la AWS Key Management Service Developer Guide.

nota

Debe utilizar una clave maestra del cliente (CMK) de AWS KMS simétrica para cifrar las copias de seguridad. Amazon RDS no admite CMK asimétricas. Para obtener más información, consulte Uso de claves simétricas y asimétricas en la AWS Key Management Service Developer Guide.

El rol de IAM también debe ser un usuario de claves y un administrador de claves de la CMK de AWS KMS; es decir, debe estar especificado en la política de claves. Para obtener más información, consulte Creación de CMK simétricas en la AWS Key Management Service Developer Guide.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:DescribeKey", "kms:GenerateDataKey", "kms:Encrypt", "kms:Decrypt" ], "Resource": "arn:aws:kms:region:account-id:key/key-id" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::bucket_name" }, { "Effect": "Allow", "Action": [ "s3:GetObject", "s3:PutObject", "s3:ListMultipartUploadParts", "s3:AbortMultipartUpload" ], "Resource": "arn:aws:s3:::bucket_name/*" } ] }

Uso de la copia de seguridad y la restauración nativas

Una vez que haya activado y configurado la copia de seguridad y la restauración nativas, puede empezar a utilizarlos. En primer lugar, conéctese a la base de datos de Microsoft SQL Server y, a continuación, llame a un procedimiento almacenado de Amazon RDS para que haga el trabajo. Para obtener instrucciones acerca de cómo conectarse a la base de datos, consulte Conexión de una instancia de base de datos que ejecuta el motor de base de datos de Microsoft SQL Server.

Algunos procedimientos almacenados necesitan que asigne un nombre de recurso de Amazon (ARN) al bucket de Amazon S3 y al archivo. El formato del ARN es arn:aws:s3:::bucket_name/file_name.extension. Amazon S3 no requiere un número de cuenta ni una región de AWS en los ARN.

Si también proporciona una clave maestra de cliente (CMK) de AWS KMS opcional, el formato del ARN de la clave será arn:aws:kms:region:account-id:key/key-id. Para obtener más información, consulte Nombres de recursos de Amazon (ARN) y espacios de nombres de servicios de AWS. Debe utilizar una CMK de AWS KMS simétrica para cifrar las copias de seguridad. Amazon RDS no admite CMK asimétricas. Para obtener más información, consulte Uso de claves simétricas y asimétricas en la AWS Key Management Service Developer Guide.

nota

Independientemente de que utilice o no una CMK de KMS, de forma predeterminada, las tareas nativas de copia de seguridad y restauración habilitan el cifrado de 256 bits del estándar de cifrado avanzado (AES) del servidor en los archivos cargados en S3.

Para obtener instrucciones acerca de cómo llamar a cada procedimiento almacenado, consulte los siguientes temas:

Realización de copia de seguridad de una base de datos

Para realizar una copia de seguridad de una base de datos, use el procedimiento almacenado rds_backup_database.

nota

No se puede realizar una copia de seguridad de una base de datos durante el periodo de mantenimiento ni mientras Amazon RDS esté tomando una instantánea.

Uso

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], [@type='DIFFERENTIAL|FULL'], [@number_of_files=n];

Se requieren los siguientes parámetros:

  • @source_db_name: nombre de la base de datos de la que se va a realizar la copia de seguridad.

  • @s3_arn_to_backup_to: el ARN que indica el bucket de Amazon S3 que se usará para la copia de seguridad, además del nombre del archivo de copia de seguridad.

    El archivo puede tener cualquier extensión, pero se suele utilizar .bak.

Los siguientes parámetros son opcionales:

  • @kms_master_key_arn: ARN de la CMK simétrica de AWS KMS que se va a usar para cifrar el elemento.

    • No puede usar la clave de cifrado predeterminada. Si utiliza la clave predeterminada, no se realizará una copia de seguridad de la base de datos.

    • Si no especifica ningún identificador de clave de AWS KMS, el archivo de copia de seguridad no se cifrará. Para obtener más información, consulte Cifrado de recursos de Amazon RDS.

    • Cuando se especifica una CMK de AWS KMS, se utiliza el cifrado del lado del cliente.

    • Amazon RDS no admite CMK asimétricas. Para obtener más información, consulte Uso de claves simétricas y asimétricas en la AWS Key Management Service Developer Guide.

  • @overwrite_s3_backup_file: un valor que indica si se va a sobrescribir un archivo de copia de seguridad existente.

    • 0: no se sobrescribe el archivo existente. Este valor es el valor predeterminado.

      Al establecer @overwrite_s3_backup_file en 0, se devuelve un error si ya existe el archivo.

    • 1: se sobrescribe un archivo existente que tenga el nombre especificado, aunque no sea un archivo de copia de seguridad.

  • @type: el tipo de copia de seguridad.

    • DIFFERENTIAL: se crea una copia de seguridad diferencial.

    • FULL: se crea una copia de seguridad completa. Este valor es el valor predeterminado.

    Una copia de seguridad diferencial se basa en la copia de seguridad completa. Para que funcionen los backups diferenciales, no puede crear una instantánea entre el último backup completo y la copia de seguridad diferencial. Si desea una copia de seguridad diferencial, pero existe una instantánea, haga otra copia de seguridad completa antes de continuar con la copia de seguridad diferencial.

    Puede buscar la última copia de seguridad completa o instantánea con la siguiente consulta de SQL de ejemplo:

    select top 1 database_name , backup_start_date , backup_finish_date from msdb.dbo.backupset where database_name='mydatabase' and type = 'D' order by backup_start_date desc;
  • @number_of_files: el número de archivos en los que se dividirá la copia de seguridad (fragmentada). El número máximo es 10.

    • La copia de seguridad de varios archivos es compatible tanto para copias de seguridad completas como diferenciales.

    • Si introduce un valor de 1 u omite el parámetro, se creará un único archivo de copia de seguridad.

    Proporcione el prefijo que comparten los archivos y, a continuación, agregue un asterisco (*) como sufijo. El asterisco puede estar en cualquier parte de nombre_archivo del ARN de S3. El asterisco se sustituye por una serie de cadenas alfanuméricas en los archivos generados, empezando por 1-of-number_of_files.

    Por ejemplo, si los nombres de archivo en el ARN de S3 son backup*.bak y establece @number_of_files=4, los archivos de copia de seguridad generados son backup1-of-4.bak, backup2-of-4.bak, backup3-of-4.bak y backup4-of-4.bak.

    • Si ya existe alguno de los nombres de archivo y @overwrite_s3_backup_file es 0, se devuelve un error.

    • Las copias de seguridad de varios archivos solo pueden tener un asterisco en la parte nombre_archivo del ARN de S3.

    • Las copias de seguridad de un solo archivo pueden tener cualquier número de asteriscos en la parte nombre_archivo del ARN de S3. Los asteriscos no se eliminan del nombre de archivo generado.

Ejemplos

ejemplo de copia de seguridad diferencial

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak', @overwrite_s3_backup_file=1, @type='DIFFERENTIAL';

ejemplo de copia de seguridad completa con cifrado

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE', @overwrite_s3_backup_file=1, @type='FULL';

ejemplo de copia de seguridad de varios archivos

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @number_of_files=4;

ejemplo de copia de seguridad diferencial de varios múltiples

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @type='DIFFERENTIAL', @number_of_files=4;

ejemplo de copia de seguridad de varios archivos con cifrado

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE', @number_of_files=4;

ejemplo de copia de seguridad de varios archivos con sobrescritura de S3

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @overwrite_s3_backup_file=1, @number_of_files=4;

ejemplo de copia de seguridad de un solo archivo con el parámetro @number_of_files

En este ejemplo se genera un archivo de copia de seguridad denominado backup*.bak.

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @number_of_files=1;

Restauración de una base de datos

Para restaurar la base de datos, llame al procedimiento almacenado rds_restore_database. Amazon RDS crea una instantánea inicial de la base de datos una vez que finalice la tarea de restauración y se abra la base de datos.

Uso

exec msdb.dbo.rds_restore_database @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension', @with_norecovery=0|1, [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@type='DIFFERENTIAL|FULL'];

Se requieren los siguientes parámetros:

  • @restore_db_name: nombre de la base de datos que se va a restaurar.

  • @s3_arn_to_restore_from: el ARN que indica el prefijo de Amazon S3 y los nombres de los archivos de copia de seguridad utilizados para restaurar la base de datos.

    • Para una copia de seguridad de un solo archivo, proporcione todo el nombre del archivo.

    • Para una copia de seguridad de varios archivos, proporcione el prefijo que comparten los archivos y, a continuación, agregue un asterisco (*) como sufijo.

    • Si @s3_arn_to_restore_from está vacío, se devolverá el siguiente mensaje de error: S3 ARN prefix cannot be empty.

El siguiente parámetro es obligatorio para las restauraciones diferenciales, pero opcional para las restauraciones completas:

  • @with_norecovery: la cláusula de recuperación que se utilizará para la operación de restauración.

    • Establezca esta opción en 0 para la restauración con RECOVERY. En este caso, la base de datos está online tras la restauración.

    • Establezca esta opción en 1 para la restauración con NORECOVERY. En este caso, la base de datos permanece en estado RESTORING una vez finalizada la tarea de restauración. Con este método, puede realizar restauraciones diferenciales posteriores.

    • En las restauraciones DIFFERENTIAL, especifique 0 o 1.

    • En las restauraciones FULL, este valor se establece de forma predeterminada en 0.

Los siguientes parámetros son opcionales:

  • @kms_master_key_arn: si cifró el archivo de copia de seguridad, es la clave maestra de cliente (CMK) de AWS KMS que se va a usar para descifrar el archivo.

    Cuando se especifica una CMK de AWS KMS, se utiliza el cifrado del lado del cliente.

  • @type: el tipo de restauración. Los tipos válidos son DIFFERENTIAL y FULL. El valor predeterminado es FULL.

nota

En las restauraciones diferenciales, la base de datos debe tener el estado RESTORING o debe existir previamente una tarea que restaure con NORECOVERY.

No puede restaurar copias de seguridad diferenciales posteriores mientras la base de datos esté online.

No puede enviar una tarea de restauración para una base de datos que ya tenga una tarea de restauración pendiente con RECOVERY.

No se admiten las restauraciones completas con NORECOVERY ni las restauraciones diferenciales en instancias Multi-AZ.

La restauración de una base de datos en una instancia Multi-AZ con réplicas de lectura es similar a la restauración de una base de datos en una instancia Multi-AZ. No es necesario realizar ninguna acción adicional para restaurar una base de datos en una réplica.

Ejemplos

ejemplo de restauración de un solo archivo

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';

ejemplo de restauración de múltiples archivos

Para evitar errores al restaurar varios archivos, asegúrese de que todos los archivos de copia de seguridad tienen el mismo prefijo y que ningún otro archivo lo utiliza.

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';

ejemplo de restauración completa de una base de datos con RECOVERY

En los tres ejemplos siguientes, se realiza la misma tarea, una restauración completa con RECOVERY.

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', [@type='DIFFERENTIAL|FULL'];
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=0;

ejemplo de restauración completa de una base de datos con cifrado

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';

ejemplo de restauración completa de una base de datos con NORECOVERY

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=1;

ejemplo de restauración diferencial con NORECOVERY

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;

ejemplo de restauración diferencial con RECOVERY

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=0;

Restauración de un registro

Para restaurar el registro, llame al procedimiento almacenado rds_restore_log.

Uso

exec msdb.dbo.rds_restore_log @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension', [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@with_norecovery=0|1], [@stopat='datetime'];

Se requieren los siguientes parámetros:

  • @restore_db_name: nombre de la base de datos cuyo registro se va a restaurar.

  • @s3_arn_to_restore_from: el ARN que indica el prefijo de Amazon S3 y el nombre del archivo de registro utilizado para restaurarlo. El archivo puede tener cualquier extensión, pero se suele utilizar .trn.

    Si @s3_arn_to_restore_from está vacío, se devolverá el siguiente mensaje de error: S3 ARN prefix cannot be empty.

Los siguientes parámetros son opcionales:

  • @kms_master_key_arn: si cifró el registro, es la clave maestra de cliente (CMK) de AWS KMS que se va a usar para descifrar el registro.

  • @with_norecovery: la cláusula de recuperación que se utilizará para la operación de restauración. Este valor se establece de forma predeterminada en 1.

    • Establezca esta opción en 0 para la restauración con RECOVERY. En este caso, la base de datos está online tras la restauración. No puede restaurar más copias de seguridad de registros mientras la base de datos esté online.

    • Establezca esta opción en 1 para la restauración con NORECOVERY. En este caso, la base de datos permanece en estado RESTORING una vez finalizada la tarea de restauración. Con este método, puede realizar restauraciones de registros posteriores.

  • @stopat: un valor que especifica que la base de datos se restaura al estado que presentaba en la fecha y la hora especificadas (en formato fechahora). Solo se aplican a la base de datos los registros de transacciones escritos antes de la fecha y la hora especificadas.

    Si no se especifica este parámetro (es NULL), se restaura el registro completo.

nota

En las restauraciones de registros, la base de datos debe tener un estado de restauración o debe existir previamente una tarea que restaure con NORECOVERY.

No puede restaurar copias de seguridad de registros mientras la base de datos esté online.

No puede enviar una tarea de restauración de registros en una base de datos que ya tenga una tarea de restauración pendiente con RECOVERY.

No se admiten las restauraciones de registros en instancias Multi-AZ.

Ejemplos

ejemplo de restauración de registros

exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';

ejemplo de restauración de registros con cifrado

exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';

ejemplo de restauración de registros con NORECOVERY

En los dos ejemplos siguientes, se realiza la misma tarea, una restauración de registros con NORECOVERY.

exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=1;
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';

ejemplo de restauración de registros con RECOVERY

exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0;

ejemplo de restauración de registros con la cláusula STOPAT

exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0, @stopat='2019-12-01 03:57:09';

Finalización de la restauración de una base de datos

Si la última tarea de restauración de la base de datos se ha realizado con @with_norecovery=1, la base de datos tiene ahora el estado RESTORING. Abra esta base de datos para el uso normal mediante el procedimiento almacenado rds_finish_restore.

Uso

exec msdb.dbo.rds_finish_restore @db_name='database_name';
nota

Para utilizar este método, la base de datos debe tener el estado RESTORING sin ninguna tarea de restauración pendiente.

No se admite el procedimiento rds_finish_restore en instancias Multi-AZ.

Para finalizar la restauración de la base de datos, utilice el inicio de sesión maestro. O utilice el inicio de sesión del usuario que restauró la base de datos más recientemente o inicie sesióncon NORECOVERY.

Uso de bases de datos parcialmente restauradas

Eliminación de una base de datos parcialmente restaurada

Para eliminar una base de datos parcialmente restaurada (que se ha quedado en el estado RESTORING), utilice el procedimiento almacenado rds_drop_database.

exec msdb.dbo.rds_drop_database @db_name='database_name';
nota

No puede enviar una solicitud DROP para una base de datos que ya tenga una tarea de restauración pendiente o una tarea de restauración finalizada.

Para eliminar la base de datos, utilice el inicio de sesión maestro. O utilice el inicio de sesión del usuario que restauró la base de datos más recientemente o inicie sesióncon NORECOVERY.

Comportamiento de la restauración de instantáneas y la recuperación a un momento dado en bases de datos parcialmente restauradas

Las bases de datos parcialmente restauradas de la instancia de origen (que se ha quedado en el estado RESTORING) se eliminan de la instancia de destino durante la recuperación a un momento dado y la restauración de una instantánea.

Cancelación de una tarea

Para cancelar una tarea de copia de seguridad o de restauración, llame al procedimiento almacenado rds_cancel_task.

nota

No se puede cancelar una tarea FINISH_RESTORE.

Uso

exec msdb.dbo.rds_cancel_task @task_id=ID_number;

El siguiente parámetro es obligatorio:

  • @task_id: ID de la tarea que se va a cancelar. Puede obtener el ID de la tarea llamando a rds_task_status.

Seguimiento del estado de las tareas

Para realizar un seguimiento del estado de las tareas de copia de seguridad o de restauración, llame al procedimiento almacenado rds_task_status. Si no proporciona ningún parámetro, el procedimiento almacenado devuelve el estado de todas las tareas. El estado de las tareas se actualiza cada dos minutos aproximadamente. El historial de tareas se conserva durante 36 días.

Uso

exec msdb.dbo.rds_task_status [@db_name='database_name'], [@task_id=ID_number];

Los siguientes parámetros son opcionales:

  • @db_name: nombre de la base de datos para la que se desea mostrar el estado de una tarea.

  • @task_id: ID de la tarea cuyo estado se desea mostrar.

Ejemplos

ejemplo de descripción del estado de una tarea específica

exec msdb.dbo.rds_task_status @task_id=5;

ejemplo de descripción del estado de una tarea y una base de datos específicas

exec msdb.dbo.rds_task_status @db_name='my_database', @task_id=5;

ejemplo de descripción de todas las tareas y sus estados en una base de datos específica

exec msdb.dbo.rds_task_status @db_name='my_database';

ejemplo de descripción de todas las tareas y sus estados en la instancia actual

exec msdb.dbo.rds_task_status;

Respuesta

El procedimiento almacenado rds_task_status devuelve las siguientes columnas.

Columna Descripción

task_id

El ID de la tarea.

task_type

El tipo de tarea que depende de los parámetros de entrada, como se indica a continuación:

  • Para tareas de copia de seguridad:

    • BACKUP_DB: copia de seguridad completa de una base de datos

    • BACKUP_DB_DIFFERENTIAL: copia de seguridad diferencial de una base de datos

  • Para tareas de restauración:

    • RESTORE_DB: restauración completa de una base de datos con RECOVERY

    • RESTORE_DB_NORECOVERY: restauración completa de una base de datos con NORECOVERY

    • RESTORE_DB_DIFFERENTIAL: restauración diferencial de una base de datos con RECOVERY

    • RESTORE_DB_DIFFERENTIAL_NORECOVERY: restauración diferencial de una base de datos con NORECOVERY

    • RESTORE_DB_LOG: restauración de registros con RECOVERY

    • RESTORE_DB_LOG_NORECOVERY: restauración de registros con NORECOVERY

  • Para tareas que finalizan una restauración:

    • FINISH_RESTORE: se finaliza una restauración y se abre una base de datos

Amazon RDS crea una instantánea inicial de la base de datos después de que esta se abra tras la finalización de las siguientes tareas de restauración:

  • RESTORE_DB

  • RESTORE_DB_DIFFERENTIAL

  • RESTORE_DB_LOG

  • FINISH_RESTORE

database_name

El nombre de la base de datos a la que está asociada la tarea.

% complete

El valor porcentual de progreso de la tarea.

duration (mins)

El tiempo empleado en la tarea, en minutos.

lifecycle

El estado de la tarea. Los posibles estados son los siguientes:

  • CREATED: en el momento en que se llama a rds_backup_database o a rds_restore_database, se crea una tarea y se establece su estado en CREATED.

  • IN_PROGRESS: después de que comienza una tarea de copia de seguridad o de restauración, se establece su estado en IN_PROGRESS. El estado puede tardar hasta cinco minutos en cambiar de CREATED a IN_PROGRESS.

  • SUCCESS: después de que finaliza una tarea de copia de seguridad o de restauración, se establece su estado en SUCCESS.

  • ERROR: si se produce un error en una tarea de copia de seguridad o de restauración, se establece su estado en ERROR. Para obtener más información acerca del error, consulte la columna task_info.

  • CANCEL_REQUESTED: en el momento en que se llama a rds_cancel_task, se establece el estado de la tarea en CANCEL_REQUESTED.

  • CANCELLED: después de que se cancela una tarea correctamente, se establece su estado en CANCELLED.

task_info

Información adicional acerca de la tarea.

Si ocurre un error al realizar una copia de seguridad o al restaurar una base de datos, esta columna contiene información acerca del error. Para obtener una lista de posibles errores y estrategias de mitigación, consulte Solución de problemas.

last_updated

La fecha y hora en que se actualizó por última vez el estado de la tarea. El estado se actualiza cada vez que la tarea progresa un 5 %.

created_at

La fecha y hora en que se creó la tarea.

S3_object_arn El ARN que indica el prefijo de Amazon S3 y el nombre del archivo que se está restaurando o del que se está realizando una copia de seguridad.

overwrite_s3_backup_file

El valor del parámetro @overwrite_s3_backup_file especificado al llamar a una tarea de backup. Para obtener más información, consulte Realización de copia de seguridad de una base de datos.

KMS_master_key_arn ARN de la CMK de AWS KMS que se utiliza para el cifrado (de la copia de seguridad) y el descifrado (de la restauración).
filepath No se aplica a las tareas de copia de seguridad y restauración nativas.
overwrite_file No se aplica a las tareas de copia de seguridad y restauración nativas.

Compresión de archivos de copia de seguridad

Para ahorrar espacio en el bucket de Amazon S3 puede comprimir los archivos de backup. Para obtener más información acerca de cómo comprimir archivos de backup, consulte Compresión de copia de seguridad en la documentación de Microsoft.

La compresión de archivos de backup se admite para las siguientes ediciones de base de datos:

  • Microsoft SQL Server Enterprise Edition

  • Microsoft SQL Server Standard Edition

Para activar la compresión de los archivos de backup, ejecute el código siguiente:

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';

Para desactivar la compresión de los archivos de backup, ejecute el código siguiente:

exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';

Solución de problemas

A continuación se muestran los problemas que pueden presentarse al utilizar la copia de seguridad y la restauración nativas.

Problema Sugerencias para la solución de problemas

Access Denied

El proceso de copia de seguridad o restauración no puede acceder al archivo de copia de seguridad. Normalmente, esto se suele debe a problemas como el siguiente:

  • Hacer referencia a un bucket incorrecto. Hacer referencia a un bucket utilizando un formato incorrecto. Hacer referencia a un nombre de archivo sin utilizar el ARN.

  • Permisos incorrectos en el archivo de bucket. Por ejemplo, si se crea mediante una cuenta distinta que está intentando acceder ahora, añada los permisos correctos.

  • Una política de IAM que es incorrecta o incompleta. Su rol de IAM debe contar con todos los elementos necesarios, incluida, por ejemplo, la versión correcta. Estas se destacan en Importación y exportación de bases de datos de SQL Server.

BACKUP DATABASE WITH COMPRESSION isn't supported on <edition_name> Edition

La compresión de los archivos de copia de seguridad solo se admite para las ediciones Enterprise y Standard de Microsoft SQL Server.

Para obtener más información, consulte Compresión de archivos de copia de seguridad.

Key <ARN> does not exist

Ha intentado restaurar una copia de seguridad cifrada, pero no ha proporcionado una clave de cifrado válida. Compruebe la clave de cifrado y vuelva a intentarlo.

Para obtener más información, consulte Restauración de una base de datos.

Please reissue task with correct type and overwrite property

Si intenta realizar una copia de seguridad de la base de datos e indica un nombre de archivo que ya existe, pero no ha establecido en 1 la propiedad de sobrescribir, la operación falla al guardar el archivo. Para solucionar este error, indique un nombre de archivo que no exista o establezca en 1 la propiedad de sobrescribir.

Para obtener más información, consulte Realización de copia de seguridad de una base de datos.

También es posible que pretendiese restaurar la base de datos, pero que haya llamado al procedimiento almacenado rds_backup_database por error. En ese caso, llame al procedimiento almacenado rds_restore_database en su lugar.

Para obtener más información, consulte Restauración de una base de datos.

Si pretendía restaurar la base de datos y ha llamado al procedimiento almacenado rds_restore_database, asegúrese de que ha indicado un nombre de archivo de backup válido.

Para obtener más información, consulte Uso de la copia de seguridad y la restauración nativas.

Please specify a bucket that is in the same region as RDS instance

No se puede realizar una copia de seguridad en un bucket ni restaurar desde un bucket de Amazon S3 situado en una región de AWS que no coincida con la de la instancia de base de datos de Amazon RDS. Puede utilizar la replicación de Amazon S3 para copiar el archivo de copia de seguridad en la región de AWS correcta.

Para obtener más información, consulte Replicación entre regiones en la documentación de Amazon S3.

The specified bucket does not exist

Compruebe que ha proporcionado el ARN correcto para el bucket y el archivo, y que el formato es correcto.

Para obtener más información, consulte Uso de la copia de seguridad y la restauración nativas.

User <ARN> is not authorized to perform <kms action> on resource <ARN>

Ha solicitado una operación cifrada, pero no ha proporcionado los permisos de AWS KMS correctos. Compruebe que tiene los permisos correctos o añádalos.

Para obtener más información, consulte Configuración de la copia de seguridad y la restauración nativas.

The Restore task is unable to restore from more than 10 backup file(s). Please reduce the number of files matched and try again.

Reduzca el número de archivos a partir de los cuales está intentando llevar a cabo la restauración. Puede agrandar cada archivo individual si es necesario.