Uso di backup e ripristino nativi - Amazon Relational Database Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Uso di backup e ripristino nativi

Dopo aver abilitato e configurato backup e ripristino nativi, puoi iniziare a utilizzarli. Innanzitutto, ti connetti al tuo database di Microsoft SQL Server, quindi richiami una procedura RDS memorizzata di Amazon per eseguire il lavoro. Per istruzioni sulla connessione al tuo database, consulta Connessione a un'istanza DB che esegue il motore di database Microsoft SQL Server.

Alcune delle stored procedure richiedono l'immissione di un Amazon Resource Name (ARN) al bucket e al file Amazon S3. Il formato per il tuo ARN è. arn:aws:s3:::bucket_name/file_name.extension Amazon S3 non richiede un numero di account o una AWS regione in. ARNs

Se fornisci anche una KMS chiave opzionale, il formato ARN della chiave èarn:aws:kms:region:account-id:key/key-id. Per ulteriori informazioni, consulta Amazon resource names (ARNs) e AWS service namespaces. È necessario utilizzare una KMS chiave di crittografia simmetrica per crittografare i backup. Amazon RDS non supporta le chiavi asimmetricheKMS. Per ulteriori informazioni, consulta Creazione di KMS chiavi di crittografia simmetriche nella Guida per gli sviluppatori.AWS Key Management Service

Nota

Indipendentemente dall'utilizzo o meno di una KMS chiave, le attività di backup e ripristino native abilitano la crittografia Advanced Encryption Standard (AES) a 256 bit lato server per impostazione predefinita per i file caricati su S3.

Per istruzioni su come chiamare ciascuna stored procedure, consulta i seguenti argomenti:

Backup di un database

Per eseguire il backup del tuo database, utilizza la stored procedure rds_backup_database.

Nota

Non puoi eseguire il backup di un database durante la finestra di manutenzione o mentre Amazon RDS sta scattando un'istantanea.

Utilizzo

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], [@type='DIFFERENTIAL|FULL'], [@number_of_files=n];

I parametri seguenti sono obbligatori:

  • @source_db_name – Nome del database di cui eseguire il backup.

  • @s3_arn_to_backup_to— L'ARNindicazione del bucket Amazon S3 da utilizzare per il backup, più il nome del file di backup.

    Il file può avere qualsiasi estensione, ma di norma è .bak.

I parametri seguenti sono facoltativi:

  • @kms_master_key_arn— ARN Per la KMS chiave di crittografia simmetrica da utilizzare per crittografare l'elemento.

    • Non è possibile utilizzare la chiave di crittografia predefinita. Se si utilizza la chiave predefinita, non verrà eseguito il backup del database.

    • Se non si specifica un identificatore di KMS chiave, il file di backup non verrà crittografato. Per ulteriori informazioni, consulta Encrypting Amazon RDS resources.

    • Quando si specifica una KMS chiave, viene utilizzata la crittografia lato client.

    • Amazon RDS non supporta le chiavi asimmetricheKMS. Per ulteriori informazioni, consulta Creazione di KMS chiavi di crittografia simmetriche nella Guida per gli sviluppatori.AWS Key Management Service

  • @overwrite_s3_backup_file – Un valore che indica se sovrascrivere un file di backup esistente.

    • 0 – Il file esistente non viene sovrascritto. Questo è il valore predefinito.

      L'impostazione di @overwrite_s3_backup_file su 0 restituisce un errore se il file esiste già.

    • 1 – Il file esistente con il nome specificato viene sovrascritto, anche se non è un file di backup.

  • @type – Tipo di backup.

    • DIFFERENTIAL – Viene eseguito un backup differenziale.

    • FULL – Viene eseguito un backup completo. Questo è il valore predefinito.

    Il backup differenziale si basa sull'ultimo backup completo. Per completare i backup differenziali non puoi effettuare una snapshot tra l'ultimo backup completo e il backup differenziale. Per effettuare un backup differenziale ed esiste uno snapshot, effettua un altro backup completo prima di procedere con il backup differenziale.

    È possibile cercare l'ultimo backup o istantanea completo utilizzando la seguente query di esempio: 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 – Numero di file in cui verrà diviso il backup (blocchi). Il numero massimo è 10.

    • Il backup a più file è supportato per backup completi e differenziali.

    • Se immetti un valore pari a 1 o ometti il parametro, viene creato un singolo file di backup.

    Fornisci il prefisso in comune dei file, quindi il suffisso con un asterisco (*). L'asterisco può trovarsi in qualsiasi punto del file_name parte della ARN S3. L'asterisco viene sostituito da una serie di stringhe alfanumeriche nei file generati, a partire da 1-of-number_of_files.

    Ad esempio, se i nomi di file in S3 ARN sono backup*.bak e tu li hai impostati@number_of_files=4, i file di backup generati sonobackup1-of-4.bak, backup2-of-4.bakbackup3-of-4.bak, e. backup4-of-4.bak

    • Se uno dei nomi di file esiste già e @overwrite_s3_backup_file è 0, viene restituito un errore.

    • I backup con più file possono avere un solo asterisco nella file_name parte del sistema S3. ARN

    • I backup a file singolo possono avere un numero qualsiasi di asterischi nel file_name parte del sistema S3. ARN Gli asterischi non vengono rimossi dal nome file generato.

Esempi

Esempio di backup differenziale
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak', @overwrite_s3_backup_file=1, @type='DIFFERENTIAL';
Esempio di backup completo con crittografia
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE', @overwrite_s3_backup_file=1, @type='FULL';
Esempio di backup di più file
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @number_of_files=4;
Esempio di backup differenziale di più file
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @type='DIFFERENTIAL', @number_of_files=4;
Esempio di backup di più file con crittografia
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE', @number_of_files=4;
Esempio di backup di più file con sovrascrittura S3
exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @overwrite_s3_backup_file=1, @number_of_files=4;
Esempio di backup di file singolo con il parametro @number_of_files

Questo esempio genera un file di backup denominato backup*.bak.

exec msdb.dbo.rds_backup_database @source_db_name='mydatabase', @s3_arn_to_backup_to='arn:aws:s3:::mybucket/backup*.bak', @number_of_files=1;

Ripristino di un database

Per eseguire il ripristino del tuo database devi chiamare la stored procedure rds_restore_database. Amazon RDS crea uno snapshot iniziale del database dopo il completamento dell'attività di ripristino e l'apertura del database.

Utilizzo

exec msdb.dbo.rds_restore_database @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/file_name.extension', @with_norecovery=0|1, [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@type='DIFFERENTIAL|FULL'];

I parametri seguenti sono obbligatori:

  • @restore_db_name – Il nome del database da ripristinare. I nomi dei database sono univoci. Non è possibile ripristinare un database se esiste già un database con lo stesso nome.

  • @s3_arn_to_restore_from— L'ARNindicazione del prefisso Amazon S3 e dei nomi dei file di backup utilizzati per ripristinare il database.

    • Per il backup di un file singolo, fornisci l'intero nome file.

    • Per eseguire un backup a più file, fornisci il prefisso in comune dei file, quindi il suffisso con un asterisco (*).

    • Se @s3_arn_to_restore_from è vuoto, viene restituito il seguente messaggio di errore: Il ARNprefisso S3 non può essere vuoto.

Il seguente parametro è obbligatorio per i ripristini differenziali, ma facoltativo per i ripristini completi:

  • @with_norecovery – La clausola di ripristino da utilizzare per l'operazione di ripristino.

    • Impostalo su per 0 ripristinare con. RECOVERY In questo caso, il database è online dopo il ripristino.

    • Impostalo 1 su ripristinare conNORECOVERY. In questo caso, il database rimane nello RESTORING stato dopo il completamento dell'attività di ripristino. Con questo approccio puoi eseguire ripristini differenziali successivi.

    • Per i DIFFERENTIAL ripristini, specificare 0 o1.

    • Per i ripristini FULL, per impostazione predefinita questo valore è 0.

I parametri seguenti sono facoltativi:

  • @kms_master_key_arn— Se è stato crittografato il file di backup, la KMS chiave da utilizzare per decrittografare il file.

    Quando si specifica una KMS chiave, viene utilizzata la crittografia lato client.

  • @type – Tipo di ripristino. I tipi validi sono DIFFERENTIAL e FULL. Il valore predefinito è FULL.

Nota

Per i ripristini differenziali, il database deve essere nello RESTORING stato o deve già esistere un'operazione con cui eseguire il ripristino. NORECOVERY

Non è possibile ripristinare i backup differenziali successivi mentre il database è online.

Non è possibile inviare un'attività di ripristino per un database che ha già un'attività di ripristino in sospeso con. RECOVERY

I ripristini completi con NORECOVERY e i ripristini differenziali non sono supportati sulle istanze Multi-AZ.

Il ripristino di un database in un'istanza Multi-AZ con repliche di lettura è simile al ripristino di un database in un'istanza Multi-AZ. Non è necessario eseguire ulteriori azioni per ripristinare un database in una replica.

Esempi

Esempio di ripristino di un singolo file
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
Esempio di ripristino di più file

Per evitare errori durante il ripristino di più file, assicurati che tutti i file di backup abbiano lo stesso prefisso e che nessun altro file utilizzi tale prefisso.

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
Esempio di ripristino completo del database con RECOVERY

I tre esempi seguenti eseguono la stessa operazione, ripristino completo conRECOVERY.

exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', [@type='DIFFERENTIAL|FULL'];
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=0;
Esempio di ripristino completo del database con crittografia
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
Esempio del ripristino completo del database con NORECOVERY
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=1;
Esempio di ripristino differenziale con NORECOVERY
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;
Esempio di ripristino differenziale con RECOVERY
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=0;

Ripristino di un log

Per ripristinare il log chiama la stored procedure rds_restore_log.

Utilizzo

exec msdb.dbo.rds_restore_log @restore_db_name='database_name', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name/log_file_name.extension', [@kms_master_key_arn='arn:aws:kms:region:account-id:key/key-id'], [@with_norecovery=0|1], [@stopat='datetime'];

I parametri seguenti sono obbligatori:

  • @restore_db_name – Il nome del database di cui vuoi ripristinare il log.

  • @s3_arn_to_restore_from— L'ARNindicazione del prefisso Amazon S3 e del nome del file di registro utilizzato per ripristinare il registro. Il file può avere qualsiasi estensione, ma di norma è .trn.

    Se @s3_arn_to_restore_from è vuoto, viene restituito il seguente messaggio di errore: il ARNprefisso S3 non può essere vuoto.

I parametri seguenti sono facoltativi:

  • @kms_master_key_arn— Se hai crittografato il registro, la KMS chiave da usare per decrittografare il registro.

  • @with_norecovery – La clausola di ripristino da utilizzare per l'operazione di ripristino. Il valore predefinito è 1.

    • Impostalo su 0 per il ripristino con. RECOVERY In questo caso, il database è online dopo il ripristino. Non è possibile ripristinare i backup di log successivi mentre il database è online.

    • Impostalo 1 su ripristinare conNORECOVERY. In questo caso, il database rimane nello RESTORING stato dopo il completamento dell'attività di ripristino. Con questo approccio puoi eseguire ripristini di log successivi.

  • @stopat – Un valore che specifica che lo stato del database viene ripristinato alla data e all'ora specificate (nel formato datetime). Solo i record del log delle transazioni scritti prima della data e dell'ora specificate vengono applicati al database.

    Se questo parametro non è specificato (lo èNULL), viene ripristinato il registro completo.

Nota

Per i ripristini dei log, il database deve essere in stato di ripristino o deve già esistere un'attività con cui eseguire il ripristino. NORECOVERY

Non è possibile ripristinare i backup di log mentre il database è online.

Non è possibile inviare un'attività di ripristino del registro su un database che ha già un'attività di ripristino in sospeso con. RECOVERY

I ripristini di log non sono supportati nelle istanze Multi-AZ.

Esempi

Esempio di ripristino di log
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
Esempio di ripristino di log con crittografia
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
Esempio di ripristino del registro con NORECOVERY

I due esempi seguenti eseguono la stessa operazione, log restore withNORECOVERY.

exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=1;
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
Esempio di log restore con RECOVERY
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0;
Esempio di log restore con STOPAT clausola
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0, @stopat='2019-12-01 03:57:09';

Completamento di un ripristino del database

Se l'ultima operazione di ripristino sul database è stata eseguita utilizzando@with_norecovery=1, il database è ora nello RESTORING stato. Apri il database per il normale funzionamento utilizzando la stored procedure rds_finish_restore.

Utilizzo

exec msdb.dbo.rds_finish_restore @db_name='database_name';
Nota

Per utilizzare questo approccio, il database deve trovarsi RESTORING nello stato in cui si trova senza alcuna operazione di ripristino in sospeso.

La procedura rds_finish_restore non è supportata nelle istanze Multi-AZ.

Per completare il ripristino del database, utilizza l'accesso master. Oppure usa il login dell'utente con cui è stato ripristinato il database o con NORECOVERY cui è stato effettuato il login per ultimo.

Utilizzo di database parzialmente ripristinati

Rimozione di un database parzialmente ripristinato

Per eliminare un database parzialmente ripristinato (rimasto nello RESTORING stato), utilizzate la rds_drop_database stored procedure.

exec msdb.dbo.rds_drop_database @db_name='database_name';
Nota

Non è possibile inviare una richiesta di DROP database per un database che ha già un'attività di ripristino o di completamento del ripristino in sospeso.

Per rimuovere il database, utilizza l'accesso master. Oppure usa il login dell'utente che ha ripristinato il database o con NORECOVERY cui è stato effettuato il login per ultimo.

Comportamento di ripristino e point-in-time ripristino delle istantanee per database parzialmente ripristinati

I database parzialmente ripristinati nell'istanza di origine (lasciati nello RESTORING stato) vengono eliminati dall'istanza di destinazione durante il ripristino e point-in-time il ripristino delle istantanee.

Annullamento di un'attività

Per annullare un'attività di backup o ripristino, chiama la stored procedure rds_cancel_task.

Nota

Non è possibile annullare un'RESTOREattività FINISH _.

Utilizzo

exec msdb.dbo.rds_cancel_task @task_id=ID_number;

Il parametro seguente è obbligatorio:

  • @task_id – L'ID dell'attività da annullare. L'ID attività si ottiene chiamando rds_task_status.

Monitoraggio dello stato delle attività

Per monitorare lo stato delle tue attività di backup e ripristino, chiama la stored procedure rds_task_status. Se non fornisci alcun parametro, la stored procedure restituisce lo stato di tutte le attività. Lo stato delle attività viene aggiornato all'incirca ogni due minuti. La cronologia delle operazioni viene conservata per 36 giorni.

Utilizzo

exec msdb.dbo.rds_task_status [@db_name='database_name'], [@task_id=ID_number];

I parametri seguenti sono facoltativi:

  • @db_name – Il nome del database per il quale visualizzare lo stato dell'attività.

  • @task_id – L'ID dell'attività per la quale visualizzare lo stato.

Esempi

Esempio di elenco dello stato per un'attività specifica
exec msdb.dbo.rds_task_status @task_id=5;
Esempio di elenco dello stato per un'attività e un database specifici
exec msdb.dbo.rds_task_status @db_name='my_database', @task_id=5;
Esempio di elenco di tutte le attività e relativi stati per un database specifico
exec msdb.dbo.rds_task_status @db_name='my_database';
Esempio di elenco di tutte le attività e relativi stati per l'istanza corrente
exec msdb.dbo.rds_task_status;

Risposta

La stored procedure rds_task_status restituisce le seguenti colonne.

Colonna Descrizione

task_id

L'ID dell'attività.

task_type

Tipo di attività in base ai parametri di input, come segue:

  • Per le attività di backup:

    • BACKUP_DB — Backup completo del database

    • BACKUP_DB_ DIFFERENTIAL — Backup differenziale del database

  • Per le attività di ripristino:

    • RESTORE_DB — Ripristino completo del database con RECOVERY

    • RESTORE_DB_ NORECOVERY — Ripristino completo del database con NORECOVERY

    • RESTORE_DB_ DIFFERENTIAL — Ripristino differenziale del database con RECOVERY

    • RESTORE_DB_ DIFFERENTIAL _ NORECOVERY — Ripristino differenziale del database con NORECOVERY

    • RESTORE_DB_ LOG — Ripristino del registro con RECOVERY

    • RESTORE_DB_ LOG _ NORECOVERY — Ripristino del registro con NORECOVERY

  • Per le attività di completamento del ripristino:

    • FINISH_ RESTORE — Termina il ripristino e apri il database

Amazon RDS crea uno snapshot iniziale del database dopo l'apertura al termine delle seguenti attività di ripristino:

  • RESTORE_DB

  • RESTORE_DB_ DIFFERENTIAL

  • RESTORE_DB_ LOG

  • FINISH_RESTORE

database_name

Il nome del database al quale l'attività è associata.

% complete

L'avanzamento dell'attività espresso in percentuale.

duration (mins)

La quantità di tempo dedicato all'attività, in minuti.

lifecycle

Lo stato dell'attività. I possibili stati sono i seguenti:

  • CREATED – Quando chiami rds_backup_database o rds_restore_database, viene creata un'attività il cui stato viene impostato su CREATED.

  • IN_PROGRESS – Dopo l'avvio di un'attività di backup o ripristino, lo stato viene impostato su IN_PROGRESS. Possono essere necessari fino a 5 minuti perché lo stato cambi da CREATED in IN_PROGRESS.

  • SUCCESS – Dopo il completamento di un'attività di backup o ripristino, lo stato viene impostato su SUCCESS.

  • ERROR – In caso di errore di un'attività di backup o ripristino, lo stato viene impostato su ERROR. Per ulteriori informazioni sull'errore, consulta la colonna task_info.

  • CANCEL_REQUESTED – Quando chiami rds_cancel_task, lo stato dell'attività viene impostato su CANCEL_REQUESTED.

  • CANCELLED – Dopo che un'attività è stata annullata, lo stato dell'attività viene impostato su CANCELLED.

task_info

Ulteriori informazioni sull'attività.

Se si verifica un errore durante il backup o il ripristino di un database, questa colonna contiene informazioni sull'errore. Per l'elenco dei possibili errori e le strategie di mitigazione, consulta Risoluzione dei problemi.

last_updated

La data e l'ora dell'ultimo aggiornamento dello stato dell'attività. Lo stato viene aggiornato dopo ogni 5% di avanzamento.

created_at

La data e l'ora di creazione dell'attività.

S3_object_arn ARNIndica il prefisso Amazon S3 e il nome del file di cui viene eseguito il backup o il ripristino.

overwrite_s3_backup_file

Il valore del parametro @overwrite_s3_backup_file specificato quando chiami un'attività di backup. Per ulteriori informazioni, consulta Backup di un database.

KMS_master_key_arn Il ARN per la KMS chiave utilizzata per la crittografia (per il backup) e la decrittografia (per il ripristino).
filepath Non applicabile ad attività di backup e ripristino nativi.
overwrite_file Non applicabile ad attività di backup e ripristino nativi.