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 la base de datos de origen después de que se crea la copia de seguridad completa. Las copias de seguridad del registro de transacciones son obligatorias 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 de registros de transacciones para tus bases de datos de SQL Server de origen.

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 almacenas los archivos de registro de transacciones.

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 las 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 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 de SQL que se ejecute de forma periódica. La tarea 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. Puedes usar cualquier solución para mover tus archivos, por ejemplo, trabajos de transferencia controlados por eventos en el Servicio de transferencia de almacenamiento. Consulta Configura transferencias impulsadas por eventos desde AWS S3.

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

Puedes programar transferencias periódicas de tus archivos de registro de transacciones desde tu instancia de origen autoadministrada al bucket de Cloud Storage en el que almacenas los archivos de registro de transacciones. 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, gcloud auth login y gcloud config set project.
  2. Guarda la siguiente secuencia de comandos en un archivo de 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 a tu bucket de Cloud Storage con el 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 la herramienta de programación que elijas para ejecutar la secuencia de comandos con regularidad.

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