Gestire i backup per le istanze SQL Server RDS è fondamentale per garantire la disponibilità dei dati e il recupero in caso di disastro. AWS fornisce strumenti per facilitare questo processo, inclusi comandi per eseguire il backup dei database SQL Server RDS direttamente su Amazon S3. Questo articolo ti guiderà attraverso i comandi e le configurazioni necessarie per eseguire backup e ripristini.
Backup di SQL Server RDS su S3
La procedura memorizzata principale utilizzata per creare backup è msdb.dbo.rds_backup_database
. Questo comando ti consente di specificare il database da eseguire il backup e la posizione S3 in cui il backup sarà archiviato.
Parametri del Pacchetto
La procedura memorizzata supporta diversi parametri, che sono categorizzati come obbligatori e opzionali.
Parametri Obbligatori
@source_db_name
: Il nome del database da eseguire il backup.@s3_arn_to_backup_to
: L’ARN che indica il bucket Amazon S3 da utilizzare per il backup, incluso il nome del file di backup.- Il file può avere qualsiasi estensione, ma
.bak
è comunemente usata.
- Il file può avere qualsiasi estensione, ma
Parametri Opzionali
-
@kms_master_key_arn
- L’ARN per la chiave KMS di crittografia simmetrica da utilizzare per crittografare il backup.
- Non puoi utilizzare la chiave di crittografia predefinita. Utilizzare la chiave predefinita comporterà un errore nel backup.
- Se non specifichi una chiave KMS, il file di backup non sarà crittografato.
- Solo le chiavi KMS simmetriche sono supportate.
-
@overwrite_s3_backup_file
- Determina se sovrascrivere un file esistente.
0
(predefinito): Non sovrascrive un file esistente. Restituisce un errore se il file esiste già.1
: Sovrascrive il file esistente, anche se non è un file di backup.
-
@type
- Specifica il tipo di backup.
FULL
(predefinito): Esegue un backup completo.DIFFERENTIAL
: Crea un backup differenziale basato sull’ultimo backup completo.- Importante: Affinché i backup differenziali funzionino, non deve esistere alcuno snapshot tra l’ultimo backup completo e il backup differenziale. Se esiste uno snapshot, eseguire un altro backup completo prima del backup differenziale. Di seguito è riportata una query di esempio per controllare l’ultimo backup completo:
MS SQL
select top 1
database_name,
backup_start_date,
backup_finish_date
from msdb.dbo.backupset
where database_name = 'mydatabase'
and type = 'D'
order by backup_start_date desc;
-
@number_of_files
- Specifica il numero di file (chunk) in cui il backup sarà diviso. Massimo: 10.
- Se impostato su
1
o omesso, viene creato un singolo file di backup. - I backup multifile devono utilizzare un singolo
*
nel nome del file, che verrà sostituito con stringhe alfanumeriche durante la generazione. Ad esempio:- Input:
backup*.bak
,@number_of_files = 4
- Output:
backup1-of-4.bak
,backup2-of-4.bak
,backup3-of-4.bak
,backup4-of-4.bak
- Input:
-
@block_size
- Specifica la dimensione fisica del blocco (in byte) per le operazioni di backup.
- Valori validi:
512
,1024
,2048
,4096
,8192
,16384
,32768
,65536
.
-
@max_transfer_size
- Indica la quantità massima di dati (in byte) trasferiti per ciascuna operazione I/O.
- Valori validi: multipli di
65536
byte fino a4194304
byte (4 MB).
-
@buffer_count
- Numero totale di buffer I/O utilizzati durante il processo di backup.
Sintassi del comando
exec msdb.dbo.rds_backup_database
@source_db_name = 'database_name',
@s3_arn_to_backup_to = 'arn:aws:s3:::bucket_name/file_name.extension',
[@kms_master_key_arn = 'arn:aws:kms:region:account-id:key/key-id'],
[@overwrite_s3_backup_file = 0|1],
[@block_size = 512|1024|2048|4096|8192|16384|32768|65536],
[@max_transfer_size = n],
[@buffer_count = n],
[@type = 'DIFFERENTIAL|FULL'],
[@number_of_files = n];
Esempio: Backup completo su S3
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Configurazione della compressione del backup
Per risparmiare spazio e ridurre i tempi di trasferimento, puoi abilitare la compressione per i backup di SQL Server RDS utilizzando i comandi rdsadmin
.
Abilita la compressione
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'true';
Disabilita la compressione
exec rdsadmin..rds_set_configuration 'S3 backup compression', 'false';
Nota: SQL Express non supporta la compressione dei backup; abilitarla in tali casi comporterà un errore nel backup.
Eseguire backup nativi di SQL Server
Amazon RDS supporta anche la funzionalità di backup nativo di SQL Server. Di seguito sono riportati i comandi per le operazioni di backup e ripristino.
Comandi di backup
Comando di backup completo
exec msdb.dbo.rds_backup_database
@source_db_name = 'MyDatabase',
@s3_arn_to_backup_to = 'arn:aws:s3:::mybucket/MyDatabase_backup_diff.bak',
@overwrite_s3_backup_file = 1,
@type = 'FULL';
Comando di backup differenziale
exec msdb.dbo.rds_backup_database
@source_db_name='mydatabase',
@s3_arn_to_backup_to='arn:aws:s3:::mybucket/differential_backup*.bak',
@type='DIFFERENTIAL',
@number_of_files=4;
Comando di ripristino
Comando di ripristino differenziale
exec msdb.dbo.rds_restore_database
@restore_db_name = 'MyDatabase',
@s3_arn_to_restore_from = 'arn:aws:s3:::mybucket/MyDatabase_backup_full.bak',
@type = 'FULL';
Comando di ripristino differenziale
exec msdb.dbo.rds_restore_database
@restore_db_name='mydatabase',
@s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak',
@type='DIFFERENTIAL',
@with_norecovery=1;
Monitoraggio e gestione delle attività di backup
Controlla lo stato dell’attività:
exec msdb.dbo.rds_task_status @db_name = 'MyDatabase';
Annulla un’attività di backup:
exec msdb.dbo.rds_cancel_task @task_id = 1234;
Considerazioni
- Assicurati che il bucket S3 utilizzato nei comandi abbia le autorizzazioni necessarie per consentire l’accesso dall’istanza RDS.
- Per dati sensibili, puoi utilizzare una chiave master AWS KMS per crittografare i backup prima di memorizzarli in S3 specificando
@kms_master_key_arn
.
Risorse aggiuntive
Per esempi e informazioni più dettagliate, fai riferimento alla documentazione ufficiale AWS sui backup di SQL Server.
Questa guida offre una solida base per gestire i backup di SQL Server RDS con Amazon S3. Per configurazioni più avanzate, si prega di consultare la documentazione AWS o di sperimentare con i parametri forniti per ottimizzare il processo di backup in base al proprio ambiente.
Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket