Prepare os ficheiros de cópia de segurança

Esta página descreve como criar os ficheiros de cópia de segurança necessários para migrar as suas bases de dados do SQL Server para o Cloud SQL para SQL Server, incluindo as seguintes secções:

Requisitos e limitações

Os seguintes requisitos e limitações aplicam-se aos ficheiros de cópia de segurança que usa para a migração:

  • Todos os ficheiros de cópia de segurança têm de ter nomes que cumpram as respetivas convenções de nomenclatura.

  • Os seus ficheiros de cópia de segurança podem ter um tamanho máximo de 5 TB.

  • Pode dividir os ficheiros de cópia de segurança completa ou diferencial em ficheiros mais pequenos se o tamanho da base de dados exceder 5 TB. Cada faixa pode ter um tamanho máximo de 5 TB.

  • Pode usar ficheiros de registo de transações e de cópia de segurança encriptados para a migração. Se quiser usar ficheiros de cópia de segurança encriptados, tem de encriptar todos os ficheiros de cópia de segurança (completa, diferencial, registo de transações) que usar para uma base de dados específica incluída na sua migração. Consulte a secção Use cópias de segurança encriptadas.

  • O Database Migration Service não migra a base de dados SQL Server master.

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

Convenções de nomenclatura

Esta secção aborda os requisitos de nomes de ficheiros para os ficheiros de cópia de segurança completos, diferenciais e do registo de transações.

Convenções de nomenclatura de ficheiros de cópia de segurança para instâncias do SQL Server no local

Nomes dos ficheiros de cópia de segurança completa

A convenção de nomenclatura para ficheiros de cópia de segurança completa depende de usar um único ficheiro de cópia de segurança ou se o dividir em várias faixas. Em ambos os cenários, o serviço de migração de bases de dados requer que inclua uma indicação de tempo de época (expressa como uma indicação de tempo Unix em segundos) que represente a hora aproximada em que fez a cópia de segurança completa.

  • Se a cópia de segurança completa for um único ficheiro, o nome do ficheiro tem de usar o formato db_name.epoch.bak, em que:

    • db_name é o nome da sua base de dados
    • epoch é uma indicação de tempo Unix em segundos
    • .bak é a extensão do ficheiro

    Alguns exemplos válidos:

    • my-business-database.1712649600.bak
    • my-other-database.1712649600.bak
  • Se dividir a cópia de segurança completa em faixas separadas, cada faixa pode usar qualquer nome que escolher, mas tem de ser carregada para uma pasta do Cloud Storage cujo nome seja uma 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 ficheiros de cópias de segurança diferenciais

A convenção de nomenclatura dos ficheiros de cópia de segurança diferencial depende de usar um único ficheiro de cópia de segurança ou se o dividir em várias faixas. Em ambos os cenários, o serviço de migração de bases de dados requer que inclua uma data/hora desde epoch (expressa como uma data/hora desde epoch Unix em segundos) que represente a hora aproximada em que fez a cópia de segurança diferencial.

  • Se a cópia de segurança diferencial for um único ficheiro, o nome do ficheiro tem de usar o formato db_name.epoch.ext, em que:

    • db_name é o nome da sua base de dados
    • epoch é uma indicação de tempo Unix em segundos
    • .ext é a extensão do ficheiro. Os ficheiros de cópia de segurança diferencial podem usar as seguintes extensões: .bak, .dif e .diff.

    Alguns exemplos válidos:

    • my-business-database.1731159833.bak
    • my-other-database.1731159833.dif
  • Se dividir a sua cópia de segurança diferencial em faixas separadas, cada faixa pode usar qualquer nome que escolher, mas tem de ser carregada para uma pasta do Cloud Storage cujo nome seja uma 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 dos ficheiros de registo de transações

Os nomes dos ficheiros de registo de transações têm de usar o formato db_name.epoch.trn, onde:

  • db_name é o nome da sua base de dados
  • epoch é uma indicação de tempo Unix em segundos
  • .bak é a extensão do ficheiro

Alguns exemplos válidos:

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

Convenções de nomenclatura de ficheiros de cópia de segurança para o Amazon RDS

Nomes dos ficheiros de cópia de segurança completa

A convenção de nomenclatura para ficheiros de cópia de segurança completa depende de usar um único ficheiro de cópia de segurança ou se o dividir em várias faixas. Em ambos os cenários, o serviço de migração de bases de dados requer que inclua uma indicação de tempo de época (expressa como uma indicação de tempo Unix em segundos) que represente a hora aproximada em que fez a cópia de segurança completa.

  • Se a cópia de segurança completa for um único ficheiro, o nome do ficheiro tem de usar o formato db_id.family_guid.rds_backup_seq_id.epoch.bak, em que:

    • db_id é o identificador interno da base de dados do Amazon RDS
    • family_guid é o identificador exclusivo do Amazon RDS da base de dados original no momento da criação
    • rds_backup_seq_id é o identificador que o Amazon RDS usa internamente para manter um número de sequência para cada ficheiro de cópia de segurança do registo de transações
    • epoch é uma indicação de tempo Unix em segundos
    • .bak é a extensão do ficheiro

    Alguns exemplos válidos:

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1712649600.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1712649600.bak
  • Se dividir a cópia de segurança completa em faixas separadas, cada faixa pode usar qualquer nome que escolher, mas tem de ser carregada para uma pasta do Cloud Storage cujo nome seja uma 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 ficheiros de cópias de segurança diferenciais

A convenção de nomenclatura dos ficheiros de cópia de segurança diferencial depende de usar um único ficheiro de cópia de segurança ou se o dividir em várias faixas. Em ambos os cenários, o serviço de migração de bases de dados requer que inclua uma data/hora desde epoch (expressa como uma data/hora desde epoch Unix em segundos) que represente a hora aproximada em que fez a cópia de segurança diferencial.

  • Se a cópia de segurança diferencial for um único ficheiro, o nome do ficheiro tem de usar o formato db_id.family_guid.rds_backup_seq_id.epoch.ext, em que:

    • db_id é o identificador interno da base de dados do Amazon RDS
    • family_guid é o identificador exclusivo do Amazon RDS da base de dados original no momento da criação
    • rds_backup_seq_id é o identificador que o Amazon RDS usa internamente para manter um número de sequência para cada ficheiro de cópia de segurança do registo de transações
    • epoch é uma indicação de tempo Unix em segundos
    • .bak é a extensão do ficheiro. Os ficheiros de cópia de segurança diferencial podem usar as seguintes extensões: .bak, .dif e .diff.

    Alguns exemplos válidos:

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1731159833.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1731159833.dif
  • Se dividir a cópia de segurança completa em faixas separadas, cada faixa pode usar qualquer nome que escolher, mas tem de ser carregada para uma pasta do Cloud Storage cujo nome seja uma 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 dos ficheiros de registo de transações

No Amazon RDS, os ficheiros de cópia de segurança do registo de transações são gerados automaticamente e incluem todos os identificadores de base de dados necessários. Estes nomes predefinidos incluem a indicação de tempo da época e são totalmente suportados no Database Migration Service. Pode carregar estes ficheiros diretamente para a pasta /log/.

Faça a cópia de segurança completa da instância de origem

O ficheiro de cópia de segurança da base de dados completo é necessário para a fase de carregamento inicial da tarefa de migração. Se quiser encriptar as suas cópias de segurança, certifique-se de que armazena a chave de encriptação para que a possa carregar posteriormente para o Cloud Storage quando criar a tarefa de migração. Consulte a secção Use cópias de segurança encriptadas.

Faça uma cópia de segurança completa para instâncias do SQL Server no local

Pode fazer uma cópia de segurança completa da sua instância do SQL Server no local através do T-SQL ou do SQL Server Management Studio (SSMS). Siga estes passos:

  1. Certifique-se de que cumpre os seguintes requisitos:
  2. Faça a cópia de segurança completa da instância de origem. Consulte o Início rápido: faça uma cópia de segurança e restaure uma base de dados do SQL Server com o SSMS na documentação da Microsoft. Também pode verificar os seguintes comandos de exemplo:

    Exemplo de comando T-SQL para um único ficheiro de cópia de segurança completa

    Este comando de exemplo faz uma cópia de segurança completa da base de dados AdventureWorks2022. O ficheiro de cópia de segurança 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 ficheiros de cópia de segurança completa segmentados

    Este comando de exemplo faz uma cópia de segurança completa da base de dados AdventureWorks2022. O ficheiro de cópia de segurança 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 + '\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. Carregue o ficheiro de cópia de segurança para um contentor do Cloud Storage. Consulte Crie e configure um contentor do Cloud Storage.

Faça uma cópia de segurança completa do Amazon RDS

Para fazer uma cópia de segurança completa da sua origem do Amazon RDS, siga estes passos:

  1. Certifique-se de que cumpre os seguintes requisitos:
  2. Configurar a capacidade de cópia de segurança nativa. Consulte o artigo Configuração para a cópia de segurança e o restauro nativos na documentação do Amazon RDS.
  3. Faça a cópia de segurança completa da instância de origem. Se o tamanho da sua base de dados exceder 5 TB, certifique-se de que divide a cópia de segurança completa em faixas separadas através do parâmetro @number_of_files. Cada faixa pode ter um tamanho máximo de 5 TB. Consulte o artigo Fazer uma cópia de segurança de uma base de dados na documentação do Amazon RDS.

    Também pode verificar o seguinte comando de exemplo:

    Exemplo de consulta para fazer uma cópia de segurança completa no Amazon RDS

    Este comando de exemplo faz uma cópia de segurança completa da base de dados AdventureWorks2022. O ficheiro de cópia de segurança 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. Carregue o ficheiro de cópia de segurança para um contentor do Cloud Storage. Consulte Crie e configure um contentor do Cloud Storage.

Faça a cópia de segurança diferencial da instância de origem

Pode usar um ficheiro de cópia de segurança de base de dados diferencial durante a fase de carregamento incremental da tarefa de migração. Pode usar ficheiros de cópia de segurança diferencial encriptados se também encriptar o ficheiro de cópia de segurança completo e os ficheiros de registo de transações para a mesma base de dados. Todos os ficheiros de registo de transações e de cópia de segurança têm de usar a mesma chave de encriptação por base de dados. Consulte a secção Use cópias de segurança encriptadas.

Faça uma cópia de segurança diferencial para instâncias do SQL Server no local

Pode fazer a cópia de segurança diferencial da sua instância do SQL Server no local através do T-SQL ou do SQL Server Management Studio (SSMS). Siga estes passos:

  1. Certifique-se de que cumpre os seguintes requisitos:
  2. Faça a cópia de segurança diferencial da instância de origem. Consulte Crie uma cópia de segurança diferencial da base de dados na documentação da Microsoft. Também pode verificar os seguintes comandos de exemplo:

    Exemplo de comando T-SQL para um único ficheiro de cópia de segurança diferencial

    Este comando de exemplo faz uma cópia de segurança diferencial da base de dados AdventureWorks2022. O ficheiro de cópia de segurança 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 ficheiros de cópia de segurança diferencial divididos

    Este comando de exemplo faz uma cópia de segurança diferencial da base de dados AdventureWorks2022. O ficheiro de cópia de segurança 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. Carregue o ficheiro de cópia de segurança para um contentor do Cloud Storage. Consulte Crie e configure um contentor do Cloud Storage.

Faça uma cópia de segurança diferencial para o Amazon RDS

Para fazer a cópia de segurança diferencial da sua origem do Amazon RDS, siga estes passos:

  1. Certifique-se de que cumpre os seguintes requisitos:
  2. Configurar a capacidade de cópia de segurança nativa. Consulte o artigo Configuração para a cópia de segurança e o restauro nativos na documentação do Amazon RDS.
  3. Faça a cópia de segurança diferencial da instância de origem. Use o procedimento armazenado rds_backup_database com o parâmetro type definido como DIFFERENTIAL.

    Se o tamanho da base de dados exceder 5 TB, certifique-se de que divide a cópia de segurança completa em faixas separadas através do parâmetro @number_of_files. Cada faixa pode ter um tamanho máximo de 5 TB.

    Consulte o artigo Fazer uma cópia de segurança de uma base de dados na documentação do Amazon RDS. Também pode verificar o seguinte comando de exemplo:

    Exemplo de consulta para fazer uma cópia de segurança diferencial no Amazon RDS

    Este comando de exemplo faz uma cópia de segurança diferencial da base de dados AdventureWorks2022. O ficheiro de cópia de segurança 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. Carregue o ficheiro de cópia de segurança para um contentor do Cloud Storage. Consulte Crie e configure um contentor do Cloud Storage.

Faça cópias de segurança dos registos de transações

Os ficheiros de cópia de segurança do registo de transações contêm as alterações que ocorrem na base de dados de origem depois de fazer a cópia de segurança completa. São necessárias cópias de segurança do registo de transações para a fase de carregamento contínuo da tarefa de migração. Pode agendar exportações e carregamentos regulares de registos de transações para garantir que as atualizações de dados são replicadas continuamente para a instância do Cloud SQL para SQL Server de destino. Consulte o artigo Agende cópias de segurança dos registos de transações.

Se usar ficheiros de cópia de segurança encriptados, também tem de encriptar os ficheiros de registo de transações da mesma base de dados. Consulte a secção Use cópias de segurança encriptadas.

Faça uma cópia de segurança do registo de transações para instâncias do SQL Server no local

Para fazer uma cópia de segurança do registo de transações das suas bases de dados do SQL Server no local, siga estes passos:

  1. Certifique-se de que cumpre os seguintes requisitos:
  2. Exporte os ficheiros de registo de transações das bases de dados de origem do SQL Server. Consulte o artigo Fazer uma cópia de segurança de um registo de transações na documentação da Microsoft. Também pode verificar o seguinte comando de exemplo:

    Exemplo de comando T-SQL para exportar ficheiros de registo de transações para o disco local

    Este comando de exemplo cria uma cópia de segurança do registo de transações da base de dados AdventureWorks2022 e guarda o ficheiro no disco local. O ficheiro de cópia de segurança 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. Carregue os ficheiros de cópia de segurança do registo de transações para o contentor do Cloud Storage que criou para a migração.

Faça uma cópia de segurança do registo de transações para o Amazon RDS

As cópias de segurança dos registos de transações são criadas automaticamente se as cópias de segurança automáticas estiverem ativadas na sua instância do Amazon RDS. Consulte a secção Ative as cópias de segurança automáticas na documentação do Amazon RDS.

Para usar ficheiros de cópia de segurança do registo de transações para a migração, siga estes passos:

  1. Ative o acesso a ficheiros de registo de transações na sua instância do Amazon RDS. Consulte Acesso a cópias de segurança do registo de transações com o RDS para SQL Server. Também pode verificar o seguinte comando de exemplo:

    Exemplo de chamada de procedimento armazenado para ativar o acesso ao registo 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 ficheiros de cópia de segurança do registo de transações do seu contentor do S3 para o contentor do Cloud Storage que criou para a migração.