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 elenca le limitazioni importanti per il supporto dei file di backup.
- La sezione Convenzioni di denominazione spiega i requisiti relativi ai nomi dei file di backup.
- Eseguire un backup completo contiene i passaggi per creare file di backup completi.
- L'articolo Eseguire un backup differenziale contiene i passaggi per creare file di backup differenziali.
- File di backup dei log delle transazioni descrive la procedura per creare i file di backup dei log delle transazioni.
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.
Per informazioni sui requisiti relativi al nome e alla struttura della cartella del bucket Cloud Storage, consulta Creare e configurare i bucket Cloud Storage.
Per informazioni su come Database Migration Service utilizza diversi tipi di file di backup nelle migrazioni omogenee di SQL Server, consulta Tipo di file di backup supportati.
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 formato
db_name.epoch.bak
, dove:db_name
è il nome del databaseepoch
è 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 databaseepoch
è 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 databaseepoch
è 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 formato
db_id.family_guid.rds_backup_seq_id.epoch.bak
, dove:db_id
è l'identificatore del database interno Amazon RDSfamily_guid
è l'identificatore univoco Amazon RDS del database originale al momento della creazionerds_backup_seq_id
è l'identificatore che Amazon RDS utilizza internamente per mantenere un numero di sequenza per ogni file di backup del log delle transazioniepoch
è 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 RDSfamily_guid
è l'identificatore univoco Amazon RDS del database originale al momento della creazionerds_backup_seq_id
è l'identificatore che Amazon RDS utilizza internamente per mantenere un numero di sequenza per ogni file di backup del log delle transazioniepoch
è 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:
- Assicurati di soddisfare i seguenti requisiti:
- Utilizzi i requisiti di denominazione corretti per i file di backup.
- I database di origine non utilizzano il modello di recupero semplice. Consulta Modelli di recupero (SQL Server) nella documentazione di Microsoft.
- Se la dimensione del database supera i 5 TB, assicurati di suddividere il backup completo in stripe distinti. Ogni stripe può avere una dimensione massima di 5 TB. Consulta Eseguire il backup dei dispositivi in un set di media a strisce.
- 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
- 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:
- Assicurati di soddisfare i seguenti requisiti:
- Utilizzi i requisiti di denominazione corretti per i file di backup.
- I database di origine non utilizzano il modello di recupero semplice. Consulta Determinare un modello di recupero per il database Microsoft SQL Server nella documentazione di Amazon RDS.
- Se vuoi utilizzare il backup dei log delle transazioni dopo aver eseguito il backup completo, attiva i backup automatici nell'istanza Amazon RDS.
- Configura la funzionalità di backup nativa. Consulta Configurazione per il backup e il ripristino nativi nella documentazione di Amazon RDS.
- 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;
- 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:
- Assicurati di soddisfare i seguenti requisiti:
- Utilizzi i requisiti di denominazione corretti per i file di backup.
- I database di origine non utilizzano il modello di recupero semplice. Consulta Modelli di recupero (SQL Server) nella documentazione di Microsoft.
- Se la dimensione del database supera i 5 TB, assicurati di suddividere il backup differenziale in strisce separate. Ogni stripe può avere una dimensione massima di 5 TB. Consulta Eseguire il backup dei dispositivi in un set di media a strisce.
- 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
- 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:
- Assicurati di soddisfare i seguenti requisiti:
- Utilizzi i requisiti di denominazione corretti per i file di backup.
- I database di origine non utilizzano il modello di recupero semplice. Consulta Determinare un modello di recupero per il database Microsoft SQL Server nella documentazione di Amazon RDS.
- Configura la funzionalità di backup nativa. Consulta Configurazione per il backup e il ripristino nativi nella documentazione di Amazon RDS.
- Esegui il backup differenziale dell'istanza di origine. Utilizza la stored procedure
rds_backup_database
con il parametrotype
impostato suDIFFERENTIAL
.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;
- 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:
- Assicurati di soddisfare i seguenti requisiti:
- Utilizzi i requisiti di denominazione corretti per i file di backup.
- I database di origine non utilizzano il modello di recupero semplice. Consulta Modelli di recupero (SQL Server) nella documentazione di Microsoft.
- 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';
- 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:
- 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;
- Copia i file di backup dei log delle transazioni dal bucket S3 al bucket Cloud Storage che hai creato per la migrazione.