Prepara i file di backup

Questa pagina descrive come creare i file di backup necessari per eseguire la migrazione dei database SQL Server a Cloud SQL per SQL Server, incluse le seguenti sezioni:

Requisiti e limitazioni

Ai file di backup che utilizzi per la migrazione si applicano i seguenti requisiti e limitazioni:

  • Tutti i file di backup devono avere nomi conformi alle rispettive convenzioni di denominazione.

  • I file di backup possono avere una dimensione massima di 5 TB.

  • Puoi eseguire lo striping dei file di backup completi o differenziali in file più piccoli se la dimensione del database supera i 5 TB. Ogni stripe può avere una dimensione massima di 5 TB.

  • Per la migrazione puoi utilizzare i file di backup e dei log delle transazioni criptati. Se vuoi utilizzare file di backup criptati, devi criptare ogni file di backup (completo, differenziale, log delle transazioni) che utilizzi per un database specifico incluso nella migrazione. Consulta Utilizzare i backup criptati.

  • Database Migration Service non esegue la migrazione del database master SQL Server.

  • L'istanza SQL Server di origine non può utilizzare il modello di recupero semplice. Per ulteriori informazioni sui modelli di recupero, consulta Modelli di recupero (SQL Server) nella documentazione Microsoft.

Convenzioni di denominazione

Questa sezione illustra i requisiti dei nomi dei file per i file di backup completi, differenziali e dei log delle transazioni.

Convenzioni di denominazione dei file di backup per le istanze SQL Server on-premise

Nomi dei file di backup completi

La convenzione di denominazione per i file di backup completo dipende dal fatto che tu utilizzi un singolo file di backup o se lo dividi in più strisce. In entrambi gli scenari, Database Migration Service richiede l'inclusione di un timestamp dell'epoca (espresso come un timestamp Unix in secondi) che rappresenta l'ora approssimativa in cui hai eseguito il backup completo.

  • Se il backup completo è un singolo file, il nome del file deve utilizzare il formatodb_name.epoch.bak, dove:

    • db_name è il nome del database
    • epoch è un timestamp Unix in secondi
    • .bak è l'estensione del file

    Gli esempi validi includono:

    • my-business-database.1712649600.bak
    • my-other-database.1712649600.bak
  • Se dividi il backup completo in strisce separate, ogni striscia può avere un nome a tua scelta, ma deve essere caricata in una cartella Cloud Storage il cui nome è un timestamp Unix in secondi:

    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/
    |  |  |- ...
    

Nomi dei file di backup differenziali

La convenzione di denominazione per i file di backup differenziale dipende dal fatto che tu utilizzi un singolo file di backup o se lo dividi in più strisce. In entrambi gli scenari, Database Migration Service richiede l'inclusione di un timestamp dell'epoca (espresso come un timestamp Unix in secondi) che rappresenta l'ora approssimativa in cui hai eseguito il backup differenziale.

  • Se il backup differenziale è un singolo file, il nome del file deve utilizzare il formato db_name.epoch.ext, dove:

    • db_name è il nome del database
    • epoch è un timestamp Unix in secondi
    • .ext è l'estensione del file; i file di backup differenziale possono utilizzare le seguenti estensioni: .bak, .dif, .diff.

    Gli esempi validi includono:

    • my-business-database.1731159833.bak
    • my-other-database.1731159833.dif
  • Se dividi il backup differenziale in strisce separate, ogni striscia può avere un nome a tua scelta, ma deve essere caricata in una cartella Cloud Storage il cui nome è un timestamp Unix in secondi:

    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/
    |  |  |- ...
    

Nomi dei file di log delle transazioni

I nomi dei file di log delle transazioni devono usare il formato db_name.epoch.trn, dove:

  • db_name è il nome del database
  • epoch è un timestamp Unix in secondi
  • .bak è l'estensione del file

Gli esempi validi includono:

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

Convenzioni di denominazione dei file di backup per Amazon RDS

Nomi dei file di backup completi

La convenzione di denominazione per i file di backup completo dipende dal fatto che tu utilizzi un singolo file di backup o se lo dividi in più strisce. In entrambi gli scenari, Database Migration Service richiede l'inclusione di un timestamp dell'epoca (espresso come un timestamp Unix in secondi) che rappresenta l'ora approssimativa in cui hai eseguito il backup completo.

  • Se il backup completo è un singolo file, il nome del file deve utilizzare il formatodb_id.family_guid.rds_backup_seq_id.epoch.bak, dove:

    • db_id è l'identificatore del database interno Amazon RDS
    • family_guid è l'identificatore univoco Amazon RDS del database originale al momento della creazione
    • rds_backup_seq_id è l'identificatore che Amazon RDS utilizza internamente per mantenere un numero di sequenza per ogni file di backup del log delle transazioni
    • epoch è un timestamp Unix in secondi
    • .bak è l'estensione del file

    Gli esempi validi includono:

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1712649600.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1712649600.bak
  • Se dividi il backup completo in strisce separate, ogni striscia può avere un nome a tua scelta, ma deve essere caricata in una cartella Cloud Storage il cui nome è un timestamp Unix in secondi:

    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/
    |  |  |- ...
    

Nomi dei file di backup differenziali

La convenzione di denominazione per i file di backup differenziale dipende dal fatto che tu utilizzi un singolo file di backup o se lo dividi in più strisce. In entrambi gli scenari, Database Migration Service richiede l'inclusione di un timestamp dell'epoca (espresso come un timestamp Unix in secondi) che rappresenta l'ora approssimativa in cui hai eseguito il backup differenziale.

  • Se il backup differenziale è un singolo file, il nome del file deve utilizzare il formato db_id.family_guid.rds_backup_seq_id.epoch.ext, dove:

    • db_id è l'identificatore del database interno Amazon RDS
    • family_guid è l'identificatore univoco Amazon RDS del database originale al momento della creazione
    • rds_backup_seq_id è l'identificatore che Amazon RDS utilizza internamente per mantenere un numero di sequenza per ogni file di backup del log delle transazioni
    • epoch è un timestamp Unix in secondi
    • .bak è l'estensione del file; i file di backup differenziale possono utilizzare le seguenti estensioni: .bak, .dif, .diff.

    Gli esempi validi includono:

    • 3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1731159833.bak
    • 1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1731159833.dif
  • Se dividi il backup completo in strisce separate, ogni striscia può avere un nome a tua scelta, ma deve essere caricata in una cartella Cloud Storage il cui nome è un timestamp Unix in secondi:

    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/
    |  |  |- ...
    

Nomi dei file di log delle transazioni

In Amazon RDS, i file di backup dei log delle transazioni vengono generati automaticamente e includono tutti gli identificatori del database richiesti. Questi nomi predefiniti includono il timestamp dell'epoca e sono completamente supportati in Database Migration Service. Puoi caricare questi file direttamente nella tua cartella /log/.

Esegui il backup completo dell'istanza di origine

Il file di backup completo del database è necessario per la fase di caricamento iniziale del job di migrazione. Se vuoi criptare i backup, assicurati di archiviare la chiave di crittografia in modo da poterla caricare in un secondo momento su Cloud Storage quando crei il job di migrazione. Consulta Utilizzare i backup criptati.

Esegui il backup completo delle istanze SQL Server on-premise

Puoi eseguire il backup completo dell'istanza SQL Server on-premise utilizzando T-SQL o SQL Server Management Studio (SSMS). Segui questi passaggi:

  1. Assicurati di soddisfare i seguenti requisiti:
  2. Esegui il backup completo dell'istanza di origine. Consulta Guida rapida: esegui il backup e il ripristino di un database SQL Server con SSMS nella documentazione di Microsoft. Puoi anche controllare i seguenti comandi di esempio:

    Esempio di comando T-SQL per un singolo file di backup completo

    Questo comando di esempio esegue un backup completo del database AdventureWorks2022. Il file di backup risultante utilizza la convenzione di denominazione richiesta.

    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

    Esempio di comando T-SQL per i file di backup completo a strisce

    Questo comando di esempio esegue un backup completo del database AdventureWorks2022. Il file di backup risultante utilizza la convenzione di denominazione richiesta.

    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. Carica il file di backup in un bucket Cloud Storage. Consulta Creare e configurare un bucket Cloud Storage.

Esegui il backup completo per Amazon RDS

Per eseguire il backup completo dell'origine Amazon RDS:

  1. Assicurati di soddisfare i seguenti requisiti:
  2. Configura la funzionalità di backup nativa. Consulta Configurazione per il backup e il ripristino nativi nella documentazione di Amazon RDS.
  3. Esegui il backup completo dell'istanza di origine. Se la dimensione del database supera i 5 TB, assicurati di suddividere il backup completo in strisce separate utilizzando il parametro @number_of_files. Ogni stripe può avere una dimensione massima di 5 TB. Consulta Eseguire il backup di un database nella documentazione di Amazon RDS.

    Puoi anche controllare il seguente comando di esempio:

    Query di esempio per eseguire un backup completo su Amazon RDS

    Questo comando di esempio esegue un backup completo del database AdventureWorks2022. Il file di backup risultante utilizza la convenzione di denominazione richiesta.

    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. Carica il file di backup in un bucket Cloud Storage. Consulta Creare e configurare un bucket Cloud Storage.

Esegui il backup differenziale dell'istanza di origine

Puoi utilizzare un file di backup del database differenziale durante la fase di caricamento incrementale del job di migrazione. Puoi utilizzare i file di backup differenziali criptati se criptate anche il file di backup completo e i file dei log delle transazioni per lo stesso database. Tutti i file di backup e dei log delle transazioni devono utilizzare la stessa chiave di crittografia per database. Consulta Utilizzare i backup criptati.

Esegui il backup differenziale per le istanze SQL Server on-premise

Puoi eseguire il backup differenziale della tua istanza SQL Server on-premise utilizzando T-SQL o SQL Server Management Studio (SSMS). Segui questi passaggi:

  1. Assicurati di soddisfare i seguenti requisiti:
  2. Esegui il backup differenziale dell'istanza di origine. Consulta Creare un backup differenziale del database nella documentazione di Microsoft. Puoi anche controllare i seguenti comandi di esempio:

    Esempio di comando T-SQL per un singolo file di backup differenziale

    Questo comando di esempio esegue un backup differenziale del database AdventureWorks2022. Il file di backup risultante utilizza la convenzione di denominazione richiesta.

    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

    Esempio di comando T-SQL per i file di backup differenziale a strisce

    Questo comando di esempio esegue un backup differenziale del database AdventureWorks2022. Il file di backup risultante utilizza la convenzione di denominazione richiesta.

    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. Carica il file di backup in un bucket Cloud Storage. Consulta Creare e configurare un bucket Cloud Storage.

Esegui il backup differenziale per Amazon RDS

Per eseguire il backup differenziale dell'origine Amazon RDS:

  1. Assicurati di soddisfare i seguenti requisiti:
  2. Configura la funzionalità di backup nativa. Consulta Configurazione per il backup e il ripristino nativi nella documentazione di Amazon RDS.
  3. Esegui il backup differenziale dell'istanza di origine. Utilizza la stored procedure rds_backup_database con il parametro type impostato su DIFFERENTIAL.

    Se la dimensione del database supera i 5 TB, assicurati di suddividere il backup completo in strisce distinte utilizzando il parametro @number_of_files. Ogni stripe può avere una dimensione massima di 5 TB.

    Consulta Eseguire il backup di un database nella documentazione di Amazon RDS. Puoi anche controllare il seguente comando di esempio:

    Query di esempio per eseguire un backup differenziale su Amazon RDS

    Questo comando di esempio esegue un backup differenziale del database AdventureWorks2022. Il file di backup risultante utilizza la convenzione di denominazione richiesta.

    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. Carica il file di backup in un bucket Cloud Storage. Consulta Creare e configurare un bucket Cloud Storage.

Esegui i backup dei log delle transazioni

I file di backup dei log delle transazioni contengono le modifiche che si verificano nel database di origine dopo il backup completo. I backup dei log delle transazioni sono obbligatori per la fase di caricamento continuo del job di migrazione. Puoi pianificare esportazioni e caricamenti regolari dei log delle transazioni per assicurarti che gli aggiornamenti dei dati vengano replicati continuamente nell'istanza Cloud SQL per SQL Server di destinazione. Consulta Pianifica i backup dei log delle transazioni.

Se utilizzi file di backup criptati, devi criptare anche i file dei log delle transazioni per lo stesso database. Consulta Utilizzare i backup criptati.

Esegui un backup del log delle transazioni per le istanze SQL Server on-premise

Per eseguire il backup del log delle transazioni dei database SQL Server on-premise:

  1. Assicurati di soddisfare i seguenti requisiti:
  2. Esporta i file dei log delle transazioni dai database di origine SQL Server. Consulta Eseguire il backup di un log delle transazioni nella documentazione di Microsoft. Puoi anche controllare il seguente comando di esempio:

    Esempio di comando T-SQL per esportare i file dei log delle transazioni sul disco locale

    Questo comando di esempio crea un backup del log delle transazioni del database AdventureWorks2022 e salva il file sul disco locale. Il file di backup risultante utilizza la convenzione di denominazione richiesta.

    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. Carica i file di backup dei log delle transazioni nel bucket Cloud Storage che hai creato per la migrazione.

Esegui un backup del log delle transazioni per Amazon RDS

I backup dei log delle transazioni vengono creati automaticamente se i backup automatici sono abilitati sull'istanza Amazon RDS. Consulta Attivare i backup automatici nella documentazione di Amazon RDS.

Per utilizzare i file di backup dei log delle transazioni per la migrazione:

  1. Attiva l'accesso ai file dei log delle transazioni nell'istanza Amazon RDS. Consulta Accedere ai backup dei log delle transazioni con RDS per SQL Server. Puoi anche controllare il seguente comando di esempio:

    Esempio di chiamata di stored procedure per abilitare l'accesso ai log delle transazioni in 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 i file di backup dei log delle transazioni dal bucket S3 al bucket Cloud Storage che hai creato per la migrazione.