Pianifica le esportazioni dei file di log delle transazioni

I file di backup dei log delle transazioni contengono le modifiche apportate al database di origine dopo aver eseguito il backup completo. I backup dei log delle transazioni sono necessari per la fase di caricamento continuo del job di migrazione.

Questa pagina descrive come pianificare esportazioni e caricamenti regolari dei log delle transazioni per i database SQL Server di origine.

Pianificare i caricamenti dei file di log delle transazioni per Amazon RDS

Puoi pianificare trasferimenti regolari dei file di log delle transazioni dall'istanza di origine Amazon RDS al bucket Cloud Storage in cui li memorizzi.

Segui questi passaggi:

  1. Assicurati che i backup automatici siano abilitati nell'istanza Amazon RDS. Consulta Abilitare i backup automatici nella documentazione di Amazon RDS.
  2. Abilita l'accesso ai file di log delle transazioni nell'istanza Amazon RDS. Consulta Accesso 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

    export DATABASE=YOUR_DATABASE_NAME;
    export S3_Bucket=YOUR_S3_BUCKET;
    exec msdb.dbo.rds_tlog_copy_setup
    @target_s3_arn='arn:aws:s3:::${S3_Bucket}/${DATABASE}/log/';
  3. Crea un job di SQL Agent che venga eseguito regolarmente. Il job deve eseguire il seguente script:
    declare @DATABASE varchar(100);
    SELECT @DATABASE=YOUR_DATABASE_NAME;
    
    USE @DATABASE;
    declare @startTime varchar(100);
    declare @endTime varchar(100);
    SELECT
      @startTime = CONVERT(VARCHAR(100), DATEADD(hour, -1, GETUTCDATE()), 120),
      @endTime = CONVERT(VARCHAR(100), GETUTCDATE(), 120);
    
    exec msdb.dbo.rds_tlog_backup_copy_to_S3 
      @db_name=@DATABASE,
      @backup_file_start_time=@startTime,
      @backup_file_end_time=@endTime;
  4. Configura i trasferimenti continui di file dal bucket S3 al bucket Cloud Storage bucket. Puoi utilizzare qualsiasi soluzione per spostare i file, ad esempio i job di trasferimento basati su eventi in Storage Transfer Service. Consulta Configurare i trasferimenti basati su eventi da AWS S3.

Pianificare i caricamenti dei file di log delle transazioni per le istanze SQL Server on-premise

Puoi pianificare trasferimenti regolari dei file di log delle transazioni dall'istanza di origine autogestita al bucket Cloud Storage in cui li memorizzi. Una delle soluzioni consigliate è

Segui questi passaggi:

  1. Sul sistema in cui vuoi eseguire lo script, assicurati di aver inizializzato Google Cloud CLI con l'autenticazione e un progetto eseguendo gcloud init; o gcloud auth login e gcloud config set project.
  2. Salva il seguente script in un file sull'istanza SQL Server di origine.

    Questo script automatizza la creazione di un file di log delle transazioni e il caricamento nel bucket Cloud Storage utilizzando il comando gcloud storage cp.

    Bash

    #!/bin/bash
    
    NOW="$(date +%s)"
    
    EXT=".trn"
    if [[ "$1" == "final" ]]
    then
      EXT='.trn.final'
    fi
    
    NAME="{DATABASE}.${NOW}.${EXT}"
    FULL_NAME="/SQLServerBackups/log/${NAME}"
    
    
    QUERY="BACKUP LOG ${DATABASE} TO DISK = '${FULL_NAME}'"
    /opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P "${SA_PASSWORD}" -d master -Q "${QUERY}"
    
    gcloud storage cp "${FULL_NAME}" "${GCS_BACKUPS}/log/"

    PowerShell

    # Get the current timestamp
    $NOW = [int](Get-Date -UFormat '%s')
    
    # Set the file extension based on the command-line argument
    $EXT = '.trn'
    if ($args[0] -eq 'final') {
        $EXT = '.trn.final'
    }
    
    # Construct the backup file name
    $NAME = "{0}.{1}{2}" -f $DATABASE, $NOW, $EXT
    $FULL_NAME = "X:\SQLServerBackups\log\$NAME"
    
    # Construct the SQL backup query
    $QUERY = "BACKUP LOG $DATABASE TO DISK = '$FULL_NAME'"
    
    # Execute the SQL backup command
    Invoke-Sqlcmd -ServerInstance 'localhost' -Username 'SA' -Password $env:SA_PASSWORD -Database 'master' -Query $QUERY
    
    # Upload the backup file to Google Cloud Storage
    gcloud storage cp "$FULL_NAME" "$GCS_BACKUPS/log/"
  3. Configura uno strumento di pianificazione a tua scelta per eseguire regolarmente lo script.

    Puoi anche utilizzare questo script manualmente e passare l'argomento posizionale "final" per creare il file di log delle transazioni il cui nome termina con il suffisso .trn.final. Questa opzione è utile quando vuoi completare la migrazione e promuovere il job di migrazione.