Programa exportaciones de archivos de registro de transacciones

Los archivos de copia de seguridad del registro de transacciones contienen los cambios que se producen en tu base de datos de origen después de que realizas la copia de seguridad completa. Las copias de seguridad del registro de transacciones son necesarias para la fase de carga continua de tu trabajo de migración.

En esta página, se describe cómo programar exportaciones y cargas regulares del registro de transacciones para migrar desde fuentes autoadministradas y de Amazon RDS.

Programa cargas de archivos de registro de transacciones para Amazon RDS

Puedes programar transferencias regulares de tus archivos de registro de transacciones desde la instancia de origen de Amazon RDS al bucket de Cloud Storage en el que los almacenas.

Sigue los siguientes pasos:

  1. Asegúrate de que las copias de seguridad automáticas estén habilitadas en tu instancia de Amazon RDS. Consulta Habilita las copias de seguridad automáticas en la documentación de Amazon RDS.
  2. Habilita el acceso a los archivos de registro de transacciones en tu instancia de Amazon RDS. Consulta Acceso a copias de seguridad del registro de transacciones con RDS para SQL Server. También puedes consultar el siguiente comando de muestra:

    Ejemplo de llamada a un procedimiento almacenado para habilitar el acceso al registro de transacciones en 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 trabajo del Agente SQL que se ejecute de forma periódica. El trabajo debe ejecutar la siguiente secuencia de comandos:
    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 transferencias de archivos continuas desde tu bucket de S3 al bucket de Cloud Storage bucket. Puedes usar cualquier solución para mover tus archivos, por ejemplo, trabajos de transferencia basados en eventos en Servicio de transferencia de almacenamiento. Consulta Configura transferencias basadas en eventos desde AWS S3.

Programa cargas de archivos de registro de transacciones para instancias de SQL Server locales

Puedes programar transferencias regulares de tus archivos de registro de transacciones desde tu instancia de origen autoadministrada al bucket de Cloud Storage en el que los almacenas. Una de las soluciones recomendadas es

Sigue los siguientes pasos:

  1. En el sistema en el que deseas ejecutar la secuencia de comandos, asegúrate de haber inicializado Google Cloud CLI con autenticación y un proyecto mediante la ejecución de gcloud init; o gcloud auth login y gcloud config set project.
  2. Guarda la siguiente secuencia de comandos en un archivo en tu instancia de SQL Server de origen.

    Esta secuencia de comandos automatiza la creación de un archivo de registro de transacciones y su carga en tu bucket de Cloud Storage mediante el gcloud storage cp comando.

    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 una herramienta de programación de tu elección para ejecutar la secuencia de comandos con regularidad.

    También puedes usar esta secuencia de comandos de forma manual y pasar el "final" argumento posicional para crear el archivo de registro de transacciones cuyo nombre termina con el .trn.final sufijo. Esto resulta útil cuando deseas finalizar la migración y promover el trabajo de migración.