Preparar os arquivos de backup

Esta página descreve como criar os arquivos de backup necessários para migrar seus bancos de dados do SQL Server para o Cloud SQL para SQL Server, incluindo as seguintes seções:

Requisitos e limitações

Os requisitos e limitações a seguir se aplicam aos arquivos de backup usados para a migração:

  • Todos os arquivos de backup precisam ter nomes que aderem às respectivas convenções de nomenclatura.

  • Os arquivos de backup podem ter no máximo 5 TB.

  • É possível dividir seus arquivos de backup completos ou diferenciais em arquivos menores se o tamanho do banco de dados exceder 5 TB. Cada divisão pode ter no máximo 5 TB.

  • É possível usar arquivos de backup e registro de transações criptografados para a migração. Se você quiser usar arquivos de backup criptografados, criptografe todos os arquivos de backup (completo, diferencial, registro de transações) que você usa para um banco de dados específico incluído na migração. Consulte Usar backups criptografados.

  • O Database Migration Service não migra o banco de dados master do SQL Server.

  • A instância de origem do SQL Server não pode usar o modelo de recuperação simples. Para mais informações sobre os modelos de recuperação, consulte Modelos de recuperação (SQL Server) na documentação da Microsoft.

Convenções de nomenclatura

Esta seção aborda os requisitos de nome de arquivo para seus arquivos de backup completos, diferenciais e de registro de transações.

Convenções de nomenclatura de arquivos de backup para instâncias locais do SQL Server

Nomes de arquivos de backup completo

A convenção de nomenclatura para arquivos de backup completos depende se você usa um único arquivo de backup ou se o divide em várias faixas. Em ambos os cenários, o Database Migration Service exige que você inclua um carimbo de data/hora da época (expresso como um carimbo de data/hora Unix em segundos) que represente o horário aproximado em que o backup completo foi feito.

  • Se o backup completo for um único arquivo, o nome do arquivo precisará usar o formato db_name.epoch.bak, em que:

    • db_name é o nome do banco de dados.
    • epoch é um carimbo de data/hora Unix em segundos
    • .bak é a extensão do arquivo

    Veja alguns exemplos válidos:

    • my-business-database.1712649600.bak
    • my-other-database.1712649600.bak
  • Se você dividir o backup completo em faixas separadas, cada faixa poderá usar qualquer nome, mas elas precisam ser enviadas para uma pasta do Cloud Storage com o nome de um carimbo de data/hora Unix em 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/
    |  |  |- ...
    

Nomes de arquivos de backup diferencial

A convenção de nomenclatura para arquivos de backup diferencial depende se você usa um único arquivo de backup ou se o divide em várias faixas. Em ambos os cenários, o Database Migration Service exige que você inclua um carimbo de data/hora da época (expresso como um carimbo de data/hora Unix em segundos) que represente o horário aproximado em que o backup diferencial foi feito.

  • Se o backup diferencial for um único arquivo, o nome do arquivo precisará usar o formato db_name.epoch.ext, em que:

    • db_name é o nome do banco de dados.
    • epoch é um carimbo de data/hora Unix em segundos
    • .ext é a extensão do arquivo. Os arquivos de backup diferencial podem usar as seguintes extensões: .bak, .dif, .diff.

    Veja alguns exemplos válidos:

    • my-business-database.1731159833.bak
    • my-other-database.1731159833.dif
  • Se você dividir o backup diferencial em faixas separadas, cada faixa poderá usar qualquer nome, mas elas precisarão ser enviadas para uma pasta do Cloud Storage com o nome de um carimbo de data/hora Unix em 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/
    |  |  |- ...
    

Nomes de arquivos de registro de transação

Os nomes dos arquivos de registro de transação precisam usar o formato db_name.epoch.trn, em que:

  • db_name é o nome do banco de dados.
  • epoch é um carimbo de data/hora Unix em segundos
  • .bak é a extensão do arquivo

Veja alguns exemplos válidos:

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

Convenções de nomenclatura de arquivos de backup para o Amazon RDS

Nomes de arquivos de backup completo

A convenção de nomenclatura para arquivos de backup completos depende se você usa um único arquivo de backup ou se o divide em várias faixas. Em ambos os cenários, o Database Migration Service exige que você inclua um carimbo de data/hora da época (expresso como um carimbo de data/hora Unix em segundos) que represente o horário aproximado em que o backup completo foi feito.

  • Se o backup completo for um único arquivo, o nome do arquivo precisará usar o formato db_id.family_guid.rds_backup_seq_id.epoch.bak, em que:

    • db_id é o identificador do banco de dados interno do Amazon RDS
    • family_guid é o identificador exclusivo do Amazon RDS do banco de dados original na criação.
    • rds_backup_seq_id é o identificador que o Amazon RDS usa internamente para manter um número de sequência para cada arquivo de backup do registro da transação.
    • epoch é um carimbo de data/hora Unix em segundos
    • .bak é a extensão do arquivo

    Veja alguns exemplos válidos:

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1712649600.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1712649600.bak
  • Se você dividir o backup completo em faixas separadas, cada faixa poderá usar qualquer nome, mas elas precisam ser enviadas para uma pasta do Cloud Storage com o nome de um carimbo de data/hora Unix em 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/
    |  |  |- ...
    

Nomes de arquivos de backup diferencial

A convenção de nomenclatura para arquivos de backup diferencial depende se você usa um único arquivo de backup ou se o divide em várias faixas. Em ambos os cenários, o Database Migration Service exige que você inclua um carimbo de data/hora da época (expresso como um carimbo de data/hora Unix em segundos) que represente o horário aproximado em que o backup diferencial foi feito.

  • Se o backup diferencial for um único arquivo, o nome do arquivo precisará usar o formato db_id.family_guid.rds_backup_seq_id.epoch.ext, em que:

    • db_id é o identificador do banco de dados interno do Amazon RDS
    • family_guid é o identificador exclusivo do Amazon RDS do banco de dados original na criação.
    • rds_backup_seq_id é o identificador que o Amazon RDS usa internamente para manter um número de sequência para cada arquivo de backup do registro da transação.
    • epoch é um carimbo de data/hora Unix em segundos
    • .bak é a extensão do arquivo. Os arquivos de backup diferencial podem usar as seguintes extensões: .bak, .dif, .diff.

    Veja alguns exemplos válidos:

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1731159833.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1731159833.dif
  • Se você dividir o backup completo em faixas separadas, cada faixa poderá usar qualquer nome, mas elas precisam ser enviadas para uma pasta do Cloud Storage com o nome de um carimbo de data/hora Unix em 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/
    |  |  |- ...
    

Nomes de arquivos de registro de transação

No Amazon RDS, os arquivos de backup do registro de transação são gerados automaticamente e incluem todos os identificadores de banco de dados necessários. Esses nomes padrão incluem o carimbo de data/hora da época e são totalmente compatíveis com o Database Migration Service. É possível fazer o upload desses arquivos diretamente na pasta /log/.

Fazer o backup completo da instância de origem

O arquivo de backup completo do banco de dados é necessário para a fase de carga inicial do job de migração. Se você quiser criptografar seus backups, armazene a chave de criptografia para fazer o upload dela ao Cloud Storage quando criar a tarefa de migração. Consulte Usar backups criptografados.

Fazer backup completo de instâncias do SQL Server no local

É possível fazer o backup completo da sua instância local do SQL Server usando o T-SQL ou o SQL Server Management Studio (SSMS). Siga estas etapas:

  1. Verifique se você atende aos seguintes requisitos:
  2. Faça o backup completo da sua instância de origem. Consulte Guia de início rápido: faça backup e restaure um banco de dados do SQL Server com o SSMS na documentação da Microsoft. Confira também estes comandos de exemplo:

    Exemplo de comando T-SQL para um único arquivo de backup completo

    Este comando de exemplo faz um backup completo do banco de dados AdventureWorks2022. O arquivo de backup resultante usa a convenção de nomenclatura necessária.

    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

    Exemplo de comando T-SQL para arquivos de backup completo em faixa

    Este comando de exemplo faz um backup completo do banco de dados AdventureWorks2022. O arquivo de backup resultante usa a convenção de nomenclatura exigida.

    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. Faça upload do arquivo de backup para um bucket do Cloud Storage. Consulte Criar e configurar um bucket do Cloud Storage.

Fazer backup completo do Amazon RDS

Para fazer o backup completo da sua origem do Amazon RDS, siga estas etapas:

  1. Verifique se você atende aos seguintes requisitos:
  2. Configure o recurso de backup nativo. Consulte Como configurar o backup e a restauração nativos na documentação do Amazon RDS.
  3. Faça o backup completo da sua instância de origem. Se o tamanho do banco de dados exceder 5 TB, divida o backup completo em faixas separadas usando o parâmetro @number_of_files. Cada divisão pode ter um tamanho máximo de 5 TB. Consulte Como fazer backup de um banco de dados na documentação do Amazon RDS.

    Confira também este comando de exemplo:

    Exemplo de consulta para fazer um backup completo no Amazon RDS

    Este comando de exemplo faz um backup completo do banco de dados AdventureWorks2022. O arquivo de backup resultante usa a convenção de nomenclatura necessária.

    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. Faça upload do arquivo de backup para um bucket do Cloud Storage. Consulte Criar e configurar um bucket do Cloud Storage.

Fazer o backup diferencial da instância de origem

É possível usar um arquivo de backup diferencial do banco de dados durante a fase de carga incremental do job de migração. É possível usar arquivos de backup diferenciados criptografados se você também criptografar o arquivo de backup completo e os arquivos de registro de transações do mesmo banco de dados. Todos os arquivos de backup e de registro de transações precisam usar a mesma chave de criptografia por banco de dados. Consulte Usar backups criptografados.

Fazer backup diferencial de instâncias locais do SQL Server

É possível fazer o backup diferencial da sua instância local do SQL Server usando o T-SQL ou o SQL Server Management Studio (SSMS). Siga estas etapas:

  1. Verifique se você atende aos seguintes requisitos:
  2. Faça o backup diferencial da sua instância de origem. Consulte Criar um backup diferencial do banco de dados na documentação da Microsoft. Confira também estes comandos de exemplo:

    Exemplo de comando T-SQL para um único arquivo de backup diferencial

    Este comando de exemplo faz um backup diferencial do banco de dados AdventureWorks2022. O arquivo de backup resultante usa a convenção de nomenclatura necessária.

    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

    Exemplo de comando T-SQL para arquivos de backup diferencial em faixa

    Este comando de exemplo faz um backup diferencial do banco de dados AdventureWorks2022. O arquivo de backup resultante usa a convenção de nomenclatura necessária.

    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. Faça upload do arquivo de backup para um bucket do Cloud Storage. Consulte Criar e configurar um bucket do Cloud Storage.

Fazer backup diferencial do Amazon RDS

Para fazer o backup diferencial da sua origem do Amazon RDS, siga estas etapas:

  1. Verifique se você atende aos seguintes requisitos:
  2. Configure o recurso de backup nativo. Consulte Como configurar o backup e a restauração nativos na documentação do Amazon RDS.
  3. Faça o backup diferencial da sua instância de origem. Use o procedimento armazenado rds_backup_database com o parâmetro type definido como DIFFERENTIAL.

    Se o tamanho do banco de dados exceder 5 TB, divida o backup completo em faixas separadas usando o parâmetro @number_of_files. Cada divisão pode ter no máximo 5 TB.

    Consulte Como fazer backup de um banco de dados na documentação do Amazon RDS. Você também pode conferir o seguinte comando de exemplo:

    Exemplo de consulta para fazer um backup diferencial no Amazon RDS

    Este comando de exemplo faz um backup diferencial do banco de dados AdventureWorks2022. O arquivo de backup resultante usa a convenção de nomenclatura necessária.

    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. Faça upload do arquivo de backup para um bucket do Cloud Storage. Consulte Criar e configurar um bucket do Cloud Storage.

Fazer backups do registro de transações

Os arquivos de backup do registro de transações contêm as mudanças que ocorrem no banco de dados de origem depois do backup completo. Os backups de registro de transação são necessários para a fase de carga contínua do job de migração. É possível programar exportações e uploads regulares de registros de transação para garantir que as atualizações de dados sejam replicadas continuamente para a instância de destino do Cloud SQL para SQL Server. Consulte Programar backups de registros de transações.

Se você usar arquivos de backup criptografados, também precisará criptografar os arquivos de registro de transações para o mesmo banco de dados. Consulte Usar backups criptografados.

Fazer um backup do registro de transações para instâncias locais do SQL Server

Para fazer um backup do registro de transações dos seus bancos de dados do SQL Server local, siga estas etapas:

  1. Verifique se você atende aos seguintes requisitos:
  2. Exporte os arquivos de registro de transações dos bancos de dados de origem do SQL Server. Consulte Como fazer backup de um registro de transações na documentação da Microsoft. Confira também este comando de exemplo:

    Exemplo de comando T-SQL para exportar arquivos de registro de transações para o disco local

    Este comando de exemplo cria um backup do registro de transações do banco de dados AdventureWorks2022 e salva o arquivo no disco local. O arquivo de backup resultante usa a convenção de nomenclatura necessária.

    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. Faça upload dos arquivos de backup do registro de transações para o bucket do Cloud Storage que você criou para a migração.

Fazer um backup do registro de transações do Amazon RDS

Os backups de registros de transação são criados automaticamente se os backups automáticos forem ativados na sua instância do Amazon RDS. Consulte Ativar backups automáticos na documentação do Amazon RDS.

Para usar arquivos de backup do registro de transações na migração, siga estas etapas:

  1. Ative o acesso aos arquivos de registro de transações na sua instância do Amazon RDS. Consulte Acesso a backups de registros de transações com o RDS para SQL Server. Confira também este comando de exemplo:

    Exemplo de chamada de procedimento armazenado para ativar o acesso ao registro de transações no 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. Copie os arquivos de backup do registro de transações do bucket do S3 para o bucket do Cloud Storage criado para a migração.