Prepara tus archivos de copia de seguridad

En esta página, se describe cómo crear los archivos de copia de seguridad necesarios para migrar tus bases de datos de SQL Server a Cloud SQL para SQL Server, incluidas las siguientes secciones:

Requisitos y limitaciones

Los siguientes requisitos y limitaciones se aplican a los archivos de copia de seguridad que usas para la migración:

  • Todos los archivos de copia de seguridad deben tener nombres que cumplan con sus respectivas convenciones de nombres.

  • Los archivos de copia de seguridad pueden tener un tamaño máximo de 5 TB.

  • Puedes dividir tus archivos de copia de seguridad completa o diferencial en archivos más pequeños si el tamaño de tu base de datos supera los 5 TB. Cada división puede tener un tamaño máximo de 5 TB.

  • Puedes usar archivos de copia de seguridad y registro de transacciones encriptados para la migración. Si deseas usar archivos de copia de seguridad encriptados, debes encriptar todos los archivos de copia de seguridad (completo, diferencial y de registro de transacciones) que uses para una base de datos específica incluida en la migración. Consulta Cómo usar copias de seguridad encriptadas.

  • Database Migration Service no migra la base de datos master de SQL Server.

  • Tu instancia de SQL Server de origen no puede usar el modelo de recuperación simple. Para obtener más información sobre los modelos de recuperación, consulta Modelos de recuperación (SQL Server) en la documentación de Microsoft.

Convenciones de nombres

En esta sección, se describen los requisitos de nombres de archivo para tus archivos de copia de seguridad completos, diferenciales y de registro de transacciones.

Convenciones de nombres de los archivos de copia de seguridad para instancias de SQL Server locales

Nombres del archivo de la copia de seguridad completa

La convención de nombres para los archivos de copia de seguridad completa depende de si usas un solo archivo de copia de seguridad o si lo divides en varias franjas. En ambos casos, Database Migration Service requiere que incluyas una marca de tiempo de época (expresada como una marca de tiempo Unix en segundos) que represente el tiempo aproximado en el que hiciste la copia de seguridad completa.

  • Si tu copia de seguridad completa es un solo archivo, el nombre del archivo debe usar el formato db_name.epoch.bak, en el que:

    • db_name es el nombre de tu base de datos.
    • epoch es una marca de tiempo Unix en segundos.
    • .bak es la extensión del archivo.

    Dentro de los ejemplos válidos se incluyen los siguientes:

    • my-business-database.1712649600.bak
    • my-other-database.1712649600.bak
  • Si divides tu copia de seguridad completa en franjas separadas, cada una puede usar cualquier nombre que elijas, pero deben subirse a una carpeta de Cloud Storage cuyo nombre sea una marca de tiempo de Unix en segundos:

    Cloud Storage bucket root/
    |- my-business-database/
    |  |- full/
    |  |  |- 1712649600/
    |  |  |  |- mystripe-full_backup_file.bak
    |  |  |  |- otherStripefull-bkp.bak
    |  |- diff/
    |  |  |- ...
    |  |- log/
    |  |  |- ...
    |- my-other-database/
    |  |- full/
    |  |  |- 1715250742/
    |  |  |  |- cool-stripe-file.bak
    |  |  |  |- secondStripeFile.bak
    |  |- diff/
    |  |  |- ...
    |  |- log/
    |  |  |- ...
    

Nombres de los archivos de las copias de seguridad diferenciales

La convención de nombres para los archivos de copia de seguridad diferencial depende de si usas un solo archivo de copia de seguridad o si lo divides en varias franjas. En ambos casos, Database Migration Service requiere que incluyas una marca de tiempo de época (expresada como una marca de tiempo Unix en segundos) que represente el tiempo aproximado en el que hiciste la copia de seguridad diferencial.

  • Si tu copia de seguridad diferencial es un solo archivo, el nombre del archivo debe usar el formato db_name.epoch.ext, en el que:

    • db_name es el nombre de tu base de datos.
    • epoch es una marca de tiempo Unix en segundos.
    • .ext es la extensión del archivo. Los archivos de copia de seguridad diferenciales pueden usar las siguientes extensiones: .bak, .dif, .diff.

    Dentro de los ejemplos válidos se incluyen los siguientes:

    • my-business-database.1731159833.bak
    • my-other-database.1731159833.dif
  • Si divides la copia de seguridad diferencial en franjas separadas, cada una puede usar cualquier nombre que elijas, pero se deben subir a una carpeta de Cloud Storage cuyo nombre sea una marca de tiempo de Unix en segundos:

    Cloud Storage bucket root/
    |- my-business-database/
    |  |- full/
    |  |  |- ...
    |  |- diff/
    |  |  |- 1731159833/
    |  |  |  |- mydiffstripe-diff_backup_file.dif
    |  |  |  |- mySeconddiffstripe-diff_backup_file.bak
    |  |- log/
    |  |  |- ...
    |- my-other-database/
    |  |- full/
    |  |  |- ...
    |  |- diff/
    |  |  |- 1731159833/
    |  |  |  |- firstDiffStripe.bak
    |  |  |  |- other_diff_stripe.diff
    |  |- log/
    |  |  |- ...
    

Nombres del archivo del registro de transacciones

Los nombres de tus archivos de registro de transacciones deben usar el formato db_name.epoch.trn, en donde:

  • db_name es el nombre de tu base de datos.
  • epoch es una marca de tiempo Unix en segundos.
  • .bak es la extensión del archivo.

Dentro de los ejemplos válidos se incluyen los siguientes:

  • my-business-database.1712649600.trn
  • my-other-database.1712649600.trn

Convenciones de nombres de los archivos de copia de seguridad para Amazon RDS

Nombres del archivo de la copia de seguridad completa

La convención de nombres para los archivos de copia de seguridad completa depende de si usas un solo archivo de copia de seguridad o si lo divides en varias franjas. En ambos casos, Database Migration Service requiere que incluyas una marca de tiempo de época (expresada como una marca de tiempo Unix en segundos) que represente el tiempo aproximado en el que hiciste la copia de seguridad completa.

  • Si tu copia de seguridad completa es un solo archivo, el nombre del archivo debe usar el formato db_id.family_guid.rds_backup_seq_id.epoch.bak, en el que:

    • db_id es el identificador de base de datos interno de Amazon RDS.
    • family_guid es el identificador único de la base de datos original de Amazon RDS en la creación.
    • rds_backup_seq_id es el identificador que Amazon RDS usa de forma interna para mantener un número de secuencia para cada archivo de copia de seguridad del registro de transacciones.
    • epoch es una marca de tiempo Unix en segundos.
    • .bak es la extensión del archivo.

    Dentro de los ejemplos válidos se incluyen los siguientes:

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1712649600.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1712649600.bak
  • Si divides tu copia de seguridad completa en franjas separadas, cada una puede usar cualquier nombre que elijas, pero deben subirse a una carpeta de Cloud Storage cuyo nombre sea una marca de tiempo de Unix en segundos:

    Cloud Storage bucket root/
    |- my-business-database/
    |  |- full/
    |  |  |- 1712649600/
    |  |  |  |- mystripe-full_backup_file.bak
    |  |  |  |- otherStripefull-bkp.bak
    |  |- diff/
    |  |  |- ...
    |  |- log/
    |  |  |- ...
    |- my-other-database/
    |  |- full/
    |  |  |- 1715250742/
    |  |  |  |- cool-stripe-file.bak
    |  |  |  |- secondStripeFile.bak
    |  |- log/
    |  |  |- ...
    

Nombres de los archivos de las copias de seguridad diferenciales

La convención de nombres para los archivos de copia de seguridad diferencial depende de si usas un solo archivo de copia de seguridad o si lo divides en varias franjas. En ambos casos, Database Migration Service requiere que incluyas una marca de tiempo de época (expresada como una marca de tiempo Unix en segundos) que represente el tiempo aproximado en el que hiciste la copia de seguridad diferencial.

  • Si tu copia de seguridad diferencial es un solo archivo, el nombre del archivo debe usar el formato db_id.family_guid.rds_backup_seq_id.epoch.ext, en el que:

    • db_id es el identificador de base de datos interno de Amazon RDS.
    • family_guid es el identificador único de la base de datos original de Amazon RDS en la creación.
    • rds_backup_seq_id es el identificador que Amazon RDS usa de forma interna para mantener un número de secuencia para cada archivo de copia de seguridad del registro de transacciones.
    • epoch es una marca de tiempo Unix en segundos.
    • .bak es la extensión del archivo. Los archivos de copia de seguridad diferenciales pueden usar las siguientes extensiónes: .bak, .dif y .diff.

    Dentro de los ejemplos válidos se incluyen los siguientes:

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1731159833.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1731159833.dif
  • Si divides tu copia de seguridad completa en franjas separadas, cada una puede usar cualquier nombre que elijas, pero deben subirse a una carpeta de Cloud Storage cuyo nombre sea una marca de tiempo de Unix en segundos:

    Cloud Storage bucket root/
    |- my-business-database/
    |  |- full/
    |  |  |- ...
    |  |- diff/
    |  |  |- 1731159833/
    |  |  |  |- mydiffstripe-diff_backup_file.dif
    |  |  |  |- mySeconddiffstripe-diff_backup_file.bak
    |  |- log/
    |  |  |- ...
    |- my-other-database/
    |  |- full/
    |  |  |- ...
    |  |- diff/
    |  |  |- 1731159833/
    |  |  |  |- firstDiffStripe.bak
    |  |  |  |- other_diff_stripe.diff
    |  |- log/
    |  |  |- ...
    

Nombres del archivo del registro de transacciones

En Amazon RDS, los archivos de copia de seguridad del registro de transacciones se generan automáticamente y cuentan con todos los identificadores de base de datos necesarios. Estos nombres predeterminados incluyen la marca de tiempo de época y se admiten en su totalidad en Database Migration Service. Puedes subir estos archivos directamente a la carpeta /log/.

Crea una copia de seguridad completa de tu instancia de origen

El archivo de copia de seguridad completa de la base de datos es obligatorio para la fase de carga inicial de tu trabajo de migración. Si quieres encriptar tus copias de seguridad, asegúrate de almacenar la clau clave de encriptación para que puedas subirla más tarde a Cloud Storage cuando crees el trabajo de migración. Consulta Cómo usar copias de seguridad encriptadas.

Cómo crear una copia de seguridad completa de instancias de SQL Server locales

Puedes crear una copia de seguridad completa de tu instancia de SQL Server local con T-SQL o SQL Server Management Studio (SSMS). Lleva a cabo los pasos siguientes:

  1. Asegúrate de cumplir con los siguientes requisitos:
  2. Crea una copia de seguridad completa de tu instancia de origen. Consulta la guía de inicio rápido para crear una copia de seguridad de una base de datos de SQL Server y restaurarla con SSMS en la documentación de Microsoft. También puedes consultar los siguientes comandos de muestra:

    Ejemplo de comando T-SQL para un solo archivo de copia de seguridad completa

    Este comando de muestra crea una copia de seguridad completa de la base de datos AdventureWorks2022. El archivo de copia de seguridad resultante usa la convención de nomenclatura requerida.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP DATABASE @DATABASE
    TO DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '.bak';
    GO

    Ejemplo de comando T-SQL para archivos de copia de seguridad completa con rayas

    Este comando de muestra crea una copia de seguridad completa de la base de datos AdventureWorks2022. El archivo de copia de seguridad resultante usa la convención de nomenclatura requerida.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP DATABASE @DATABASE
    TO DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe1.bak',
    DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe2.bak',
    DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe3.bak'
    WITH FORMAT,
      MEDIANAME = 'AdventureWorksStripedSet0',
      MEDIADESCRIPTION = 'Striped media set for ' + @DATABASE + ' database';
    GO
  3. Sube tu archivo de copia de seguridad a un bucket de Cloud Storage. Consulta Crea y configura un bucket de Cloud Storage.

Cómo crear una copia de seguridad completa de Amazon RDS

Para crear una copia de seguridad completa de tu fuente de Amazon RDS, sigue estos pasos:

  1. Asegúrate de cumplir con los siguientes requisitos:
  2. Configura la función de copia de seguridad nativa. Consulta Cómo configurar copias de seguridad y restablecimientos nativos en la documentación de Amazon RDS.
  3. Crea una copia de seguridad completa de tu instancia de origen. Si el tamaño de la base de datos supera los 5 TB, asegúrate de dividir la copia de seguridad completa en franjas separadas con el parámetro @number_of_files. Cada división puede tener un tamaño máximo de 5 TB. Consulta Cómo crear una copia de seguridad de una base de datos en la documentación de Amazon RDS.

    También puedes consultar el siguiente comando de muestra:

    Ejemplo de consulta para crear una copia de seguridad completa en Amazon RDS

    Este comando de muestra crea una copia de seguridad completa de la base de datos AdventureWorks2022. El archivo de copia de seguridad resultante usa la convención de nomenclatura requerida.

    declare @DATABASE varchar(1000);
    declare @S3Bucket varchar(1000);
    declare @unixTimestamp varchar(30);
    declare @fileName varchar(1000);
    
    SELECT @S3Bucket = 'dms-sqlserver-exports';
    SELECT @DATABASE = 'AdventureWorks2022';
    
    SELECT @unixTimestamp=CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    SELECT @fileName = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/full/' + @DATABASE '.' + @unixTimestamp + '/' + CAST(database_id AS VARCHAR(10)) + '.' + CAST(family_guid AS VARCHAR(50)) + '.*.' + @unixTimestamp) FROM master.sys.database_recovery_status WHERE DB_NAME(database_id)=@DATABASE;
    
    exec msdb.dbo.rds_backup_database
      @source_db_name=@DATABASE,
      @s3_arn_to_backup_to=@fileName,
      @overwrite_s3_backup_file=1,
      @type='FULL',
      @number_of_files=1;
  4. Sube tu archivo de copia de seguridad a un bucket de Cloud Storage. Consulta Crea y configura un bucket de Cloud Storage.

Crea una copia de seguridad diferencial de tu instancia de origen

Puedes usar un archivo de copia de seguridad diferencial de la base de datos durante la fase de carga incremental de tu trabajo de migración. Puedes usar archivos de copia de seguridad diferencial encriptados si también encriptas el archivo de copia de seguridad completa y los archivos de registro de transacciones de la misma base de datos. Todos los archivos de registro de copias de seguridad y transacciones deben usar la misma clave de encriptación por base de datos. Consulta Cómo usar copias de seguridad encriptadas.

Crea una copia de seguridad diferencial para instancias de SQL Server locales

Puedes crear una copia de seguridad diferencial de tu instancia de SQL Server local con T-SQL o SQL Server Management Studio (SSMS). Lleva a cabo los pasos siguientes:

  1. Asegúrate de cumplir con los siguientes requisitos:
  2. Crea una copia de seguridad diferencial de tu instancia de origen. Consulta Cómo crear una copia de seguridad diferencial de la base de datos en la documentación de Microsoft. También puedes consultar los siguientes comandos de muestra:

    Ejemplo de comando T-SQL para un solo archivo de copia de seguridad diferencial

    Este comando de muestra crea una copia de seguridad diferencial de la base de datos AdventureWorks2022. El archivo de copia de seguridad resultante usa la convención de nomenclatura requerida.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP DATABASE @DATABASE
    TO DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '.bak' WITH DIFFERENTIAL;
    GO

    Ejemplo de comando T-SQL para archivos de copia de seguridad diferencial con rayas

    Este comando de muestra crea una copia de seguridad diferencial de la base de datos AdventureWorks2022. El archivo de copia de seguridad resultante usa la convención de nomenclatura requerida.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP DATABASE @DATABASE
    TO DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe1.bak',
    DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe2.bak',
    DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe3.bak'
    WITH DIFFERENTIAL;
    WITH FORMAT,
      MEDIANAME = 'AdventureWorksStripedSet0',
      MEDIADESCRIPTION = 'Striped differential media set for ' + @DATABASE + ' database';
    GO
  3. Sube tu archivo de copia de seguridad a un bucket de Cloud Storage. Consulta Crea y configura un bucket de Cloud Storage.

Cómo crear una copia de seguridad diferencial para Amazon RDS

Para crear una copia de seguridad diferencial de tu fuente de Amazon RDS, sigue estos pasos:

  1. Asegúrate de cumplir con los siguientes requisitos:
  2. Configura la función de copia de seguridad nativa. Consulta Cómo configurar copias de seguridad y restablecimientos nativos en la documentación de Amazon RDS.
  3. Crea una copia de seguridad diferencial de tu instancia de origen. Usa el procedimiento almacenado rds_backup_database con el parámetro type configurado como DIFFERENTIAL.

    Si el tamaño de la base de datos supera los 5 TB, asegúrate de dividir la copia de seguridad completa en franjas separadas con el parámetro @number_of_files. Cada división puede tener un tamaño máximo de 5 TB.

    Consulta Cómo crear una copia de seguridad de una base de datos en la documentación de Amazon RDS. También puedes consultar el siguiente comando de muestra:

    Ejemplo de consulta para crear una copia de seguridad diferencial en Amazon RDS

    Este comando de muestra crea una copia de seguridad diferencial de la base de datos AdventureWorks2022. El archivo de copia de seguridad resultante usa la convención de nomenclatura requerida.

    declare @DATABASE varchar(1000);
    declare @S3Bucket varchar(1000);
    declare @unixTimestamp varchar(30);
    declare @fileName varchar(1000);
    
    SELECT @S3Bucket = 'dms-sqlserver-exports';
    SELECT @DATABASE = 'AdventureWorks2022';
    
    SELECT @unixTimestamp=CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    SELECT @fileName = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/full/' + @DATABASE '.' + @unixTimestamp + '/' + CAST(database_id AS VARCHAR(10)) + '.' + CAST(family_guid AS VARCHAR(50)) + '.*.' + @unixTimestamp) FROM master.sys.database_recovery_status WHERE DB_NAME(database_id)=@DATABASE;
    
    exec msdb.dbo.rds_backup_database
      @source_db_name=@DATABASE,
      @s3_arn_to_backup_to=@fileName,
      @overwrite_s3_backup_file=1,
      @type='DIFFERENTIAL',
      @number_of_files=1;
  4. Sube tu archivo de copia de seguridad a un bucket de Cloud Storage. Consulta Crea y configura un bucket de Cloud Storage.

Cómo crear copias de seguridad del registro de transacciones

Los archivos de copia de seguridad del registro de transacciones contienen los cambios que se producen en la base de datos de origen después de que se crea la copia de seguridad completa. Las copias de seguridad del registro de transacciones son obligatorias para la fase de carga continua de tu trabajo de migración. Puedes programar exportaciones y cargas de registros de transacciones regulares para asegurarte de que las actualizaciones de datos se repliquen de forma continua en tu instancia de destino de Cloud SQL para SQL Server. Consulta Programa copias de seguridad del registro de transacciones.

Si usas archivos de copia de seguridad encriptados, también debes encriptar los archivos de registro de transacciones de la misma base de datos. Consulta Cómo usar copias de seguridad encriptadas.

Cómo crear una copia de seguridad del registro de transacciones para instancias de SQL Server locales

Para crear una copia de seguridad del registro de transacciones de tus bases de datos de SQL Server on-premise, sigue estos pasos:

  1. Asegúrate de cumplir con los siguientes requisitos:
  2. Exporta los archivos de registro de transacciones de tus bases de datos fuente de SQL Server. Consulta Cómo crear una copia de seguridad de un registro de transacciones en la documentación de Microsoft. También puedes consultar el siguiente comando de muestra:

    Ejemplo de comando T-SQL para exportar archivos de registro de transacciones al disco local

    Este comando de muestra crea una copia de seguridad del registro de transacciones de la base de datos AdventureWorks2022 y guarda el archivo en el disco local. El archivo de copia de seguridad resultante usa la convención de nomenclatura requerida.

    declare @DATABASE varchar(1000);
    SELECT @DATABASE = 'AdventureWorks2022';
    declare @unixTimestamp varchar(1000);
    SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50));
    
    BACKUP LOG @DATABASE
    TO DISK = 'X:\SQLServerBackups\log\' + @DATABASE + '.' + @unixTimestamp + '.trn';
  3. Sube los archivos de copia de seguridad del registro de transacciones a el bucket de Cloud Storage que creaste para la migración.

Cómo crear una copia de seguridad del registro de transacciones para Amazon RDS

Las copias de seguridad de registros de transacciones se crean automáticamente si las copias de seguridad automáticas están habilitadas en tu instancia de Amazon RDS. Consulta Habilita las copias de seguridad automáticas en la documentación de Amazon RDS.

Para usar archivos de copia de seguridad del registro de transacciones en tu migración, sigue estos pasos:

  1. Habilita el acceso a los archivos de registro de transacciones en tu instancia de Amazon RDS. Consulta Acceso a las copias de seguridad del registro de transacciones con RDS para SQL Server. También puedes consultar el siguiente comando de muestra:

    Ejemplo de llamada a procedimiento almacenado para habilitar el acceso al registro de transacciones en Amazon RDS

    declare @DATABASE varchar(1000);
    declare @S3Bucket varchar(1000);
    declare @targetS3Arn varchar(1000);

    SELECT @S3Bucket = 'dms-sqlserver-exports'; SELECT @DATABASE = 'AdventureWorks2022'; SELECT @targetS3Arn = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/log/');

    USE @DATABASE; exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn=@targetS3Arn;

  2. Copia los archivos de copia de seguridad del registro de transacciones de tu bucket de S3 en el bucket de Cloud Storage que creaste para la migración.