Eseguire il backup dei database SQL Server in un bucket Cloud Storage

Questo tutorial descrive come eseguire il backup diretto di un database Microsoft SQL Server 2022 in un bucket Cloud Storage e ripristinarlo in un secondo momento. Introdotta in SQL Server 2022, la funzionalità nativa di backup di SQL Server offre una strategia semplice ed economica per il ripristino di emergenza e la migrazione dei dati basati sul cloud.

La funzionalità nativa di backup di SQL Server sfrutta i comandi BACKUP TO URL e RESTORE FROM URL che supportano l'archiviazione di oggetti compatibile con S3, incluso Cloud Storage. In questo modo non è necessario uno spazio di archiviazione locale intermedio, semplificando il flusso di lavoro di backup e riducendo l'overhead operativo.

Questo tutorial è rivolto ad amministratori e database engineer.

Obiettivi

Questo tutorial mostra come completare le seguenti attività per raggiungere il tuo obiettivo:

  • Crea un nuovo bucket Cloud Storage
  • Configura un connettore SQL Server
  • Eseguire il backup del database
  • Ripristina il database dal backup

Costi

In questo documento vengono utilizzati i seguenti componenti fatturabili di Google Cloud:

Per generare una stima dei costi in base all'utilizzo previsto, utilizza il calcolatore prezzi.

I nuovi utenti di Google Cloud potrebbero avere diritto a una prova senza costi.

Al termine delle attività descritte in questo documento, puoi evitare l'addebito di ulteriori costi eliminando le risorse che hai creato. Per saperne di più, consulta Esegui la pulizia.

Prima di iniziare

  1. Per questo tutorial, è necessario un progetto Google Cloud . Puoi crearne uno nuovo o selezionarne uno già esistente:

    1. Nella console Google Cloud , nella pagina di selezione del progetto, seleziona o crea un progetto Google Cloud .

      Ruoli richiesti per selezionare o creare un progetto

      • Seleziona un progetto: la selezione di un progetto non richiede un ruolo IAM specifico. Puoi selezionare qualsiasi progetto per il quale ti è stato concesso un ruolo.
      • Crea un progetto: per creare un progetto, devi disporre del ruolo Autore progetto (roles/resourcemanager.projectCreator), che contiene l'autorizzazione resourcemanager.projects.create. Scopri come concedere ruoli.

      Vai al selettore di progetti

    2. Verifica che la fatturazione sia attivata per il tuo progetto Google Cloud .

    3. Nella console Google Cloud , attiva Cloud Shell.

      Attiva Cloud Shell

  2. Assicurati che Microsoft SQL Server 2022 o versioni successive sia installato e in esecuzione.

  3. Assicurati che sia il tuo progetto Google Cloud sia SQL Server dispongano delle autorizzazioni necessarie per eseguire le attività di backup e ripristino.

  4. Assicurati che l'utente o il account di servizio associato alle chiavi di accesso disponga delle autorizzazioni per creare e visualizzare oggetti nel bucket Cloud Storage.

  5. Assicurati che l'account utente SQL Server utilizzato per eseguire il backup disponga delle autorizzazioni di backup del database e del log di backup.

Crea un bucket Cloud Storage

Puoi creare un bucket Cloud Storage utilizzando la console Google Cloud o il comando gcloud storage.

Per creare un bucket Cloud Storage utilizzando il comando gcloud storage, segui questi passaggi.

  1. Selezionare il tuo progetto Google Cloud .

    gcloud config set project PROJECT_ID
    
  2. Crea il bucket. Per creare il bucket, esegui il comando gcloud storage buckets create come segue.

      gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
    

    Sostituisci quanto segue:

  • BUCKET_NAME: con un nome univoco per il bucket.
  • BUCKET_LOCATION: con la posizione del bucket.

Configura l'interoperabilità S3 e crea una chiave di accesso

Per consentire a SQL Server di comunicare con Cloud Storage utilizzando il protocollo S3, devi attivare l'interoperabilità e generare una chiave di accesso seguendo questi passaggi:

  1. Vai alle impostazioni di Cloud Storage nella console Google Cloud .

    Vai alle impostazioni di Cloud Storage

  2. Seleziona la scheda Interoperabilità.

  3. Nella sezione Chiavi di accesso del tuo account utente, fai clic su Crea una chiave.

    Chiavi di accesso al bucket

  4. Salva in modo sicuro la chiave di accesso e il secret generati. Ti serviranno nel passaggio successivo.

Per gli ambienti di produzione, ti consigliamo di utilizzare una chiave HMAC (Hash-based Message Authentication Code) del service account per una maggiore sicurezza e gestione.

Aggiungere le credenziali a SQL Server

Per consentire a SQL Server di eseguire l'autenticazione con il bucket Cloud Storage, devi creare un oggetto credenziale in SQL Server per archiviare la chiave di accesso e il secret di Cloud Storage. Per farlo, esegui questo comando T-SQL in SQL Server Management Studio (SSMS).

CREATE CREDENTIAL CREDENTIAL_NAME
WITH
    IDENTITY = 'S3 Access Key',
    SECRET = 'ACCESS_KEY:SECRET';

Sostituisci quanto segue:

  • CREDENTIAL_NAME: con un nome per le tue credenziali.
  • ACCESS_KEY: con la chiave di accesso che hai creato nella sezione precedente.
  • SECRET: con il secret creato nella sezione precedente.

IDENTITY = 'S3 Access Key' è fondamentale perché indica a SQL Server di utilizzare il nuovo connettore S3. Il secret deve essere formattato come chiave di accesso, seguita da due punti e poi dalla chiave secret.

Esempio:

CREATE CREDENTIAL sql_backup_credentials
WITH
    IDENTITY = 'S3 Access Key',
    SECRET = 'GOOGGE3SVF7OQE5JRMLQ7KWB:b31Pl8Tx1ARJfdGOsbgMFQNbk3nPdlT2UCYzs1iC';

Eseguire il backup dei dati in Cloud Storage

Con le credenziali in posizione, ora puoi eseguire il backup del database direttamente nel bucket Cloud Storage utilizzando il comando BACKUP DATABASE con l'opzione TO URL. Aggiungi il prefisso s3://storage.googleapis.com all'URL per utilizzare il connettore S3, come segue.

BACKUP DATABASE DATABASE_NAME
TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME',
    FORMAT,
    STATS = 10,
    MAXTRANSFERSIZE = 10485760,
    COMPRESSION;

Sostituisci quanto segue:

  • CREDENTIAL_NAME Il nome della credenziale che hai creato nel passaggio 3. Ad esempio: sql_backup_credentials.
  • BUCKET_NAME Il nome del bucket che hai creato nel passaggio 1.
  • FOLDER_NAME Il nome della cartella in cui vuoi archiviare il file di backup.
  • BACKUP_FILE_NAME Il nome del file di backup.

Le descrizioni dei parametri di backup utilizzati nel comando sono le seguenti:

  • FORMAT: sovrascrive i file di backup esistenti e crea un nuovo set di supporti.
  • STATS: indica l'avanzamento del backup.
  • COMPRESSION: comprime il backup, il che può ridurre le dimensioni del file e il tempo di caricamento.
  • MAXTRANSFERSIZE: consigliato per evitare errori di I/O con file di backup di grandi dimensioni.

Per ulteriori informazioni, consulta Backup di SQL Server su URL per l'archiviazione di oggetti compatibile con S3.

Per i database molto grandi, puoi dividere il backup in più file nel seguente modo.

BACKUP DATABASE DATABASE_NAME
TO
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_0.bak',
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_1.bak'
    -- ... more files
WITH
    CREDENTIAL = 'CREDENTIAL_NAME',
    FORMAT,
    STATS = 10,
    MAXTRANSFERSIZE = 10485760,
    COMPRESSION;

Ripristinare i dati da Cloud Storage

Puoi ripristinare il database direttamente da un file di backup archiviato in Cloud Storage utilizzando il comando RESTORE DATABASE come segue.

RESTORE DATABASE DATABASE_NAME
FROM URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME';

Sostituisci quanto segue:

  • CREDENTIAL_NAME Il nome della credenziale che hai creato nel passaggio 3. Ad esempio, sql_backup_credentials.
  • BUCKET_NAME Il nome del bucket che hai creato nel passaggio 1.
  • FOLDER_NAME: il nome della cartella in cui vuoi archiviare il file di backup.
  • BACKUP_FILE_NAME Il nome del file di backup.

Esegui la pulizia

Per evitare che al tuo account Google Cloud vengano addebitati costi relativi alle risorse utilizzate in questo tutorial:

Elimina il progetto

  1. Nella console Google Cloud , vai alla pagina Gestisci risorse.

    Vai a Gestisci risorse

  2. Nell'elenco dei progetti, seleziona il progetto che vuoi eliminare, quindi fai clic su Elimina.
  3. Nella finestra di dialogo, digita l'ID progetto, quindi fai clic su Chiudi per eliminare il progetto.

Passaggi successivi

  • Esplora architetture di riferimento, diagrammi e best practice su Google Cloud. Consulta il nostro Cloud Architecture Center.