Uso de la copia de seguridad y la restauración nativas - Amazon Relational Database Service

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 de KMS opcional, el formato para el ARN de la clave es 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 AWS. Debe utilizar una clave de cifrado de KMS simétrica para cifrar las copias de seguridad. Amazon RDS no admite las claves de KMS asimétricas. Para obtener más información, consulte Creación de claves KMS de cifrado simétricas en la Guía para desarrolladores de AWS Key Management Service.

nota

Independientemente de que utilice o no una clave 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 clave de cifrado de KMS simétrica que se va a utilizar 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 un identificador de clave 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 clave de KMS, se utiliza el cifrado del lado del cliente.

    • Amazon RDS no admite las claves de KMS asimétricas. Para obtener más información, consulte Creación de claves KMS de cifrado simétricas en la Guía para desarrolladores de AWS Key Management Service.

  • @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 suf (*). 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. Los nombres de base de datos son únicos. No puede restaurar una base de datos si ya existe una base de datos SSAS con el mismo nombre.

  • @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 suf (*).

    • 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, se trata de la clave de KMS que se va a utilizar para descifrar el archivo.

    Cuando se especifica una clave de 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, se trata de la clave de KMS que se va a utilizar 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 en 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 en 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 Resolució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 El ARN de la clave de KMS que se utilizó para el cifrado (para la copia de seguridad) y el descifrado (para 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.