Programar exportações de arquivos de registro de transações

Os arquivos de backup do registro de transações contêm as mudanças que ocorrem no banco de dados de origem depois do backup completo. Os backups de registro de transação são necessários para a fase de carga contínua do job de migração.

Esta página descreve como programar exportações e uploads regulares de registros de transações para seus bancos de dados de origem do SQL Server.

Programar uploads de arquivos de registro de transações para o Amazon RDS

É possível programar transferências regulares dos arquivos de registro de transações da instância de origem do Amazon RDS para o bucket do Cloud Storage em que você armazena os arquivos de registro de transações.

Siga as etapas abaixo:

  1. Verifique se os backups automáticos estão ativados na sua instância do Amazon RDS. Consulte Ativar backups automáticos na documentação do Amazon RDS.
  2. Ative o acesso aos arquivos de registro de transações na sua instância do Amazon RDS. Consulte Acesso a backups de registros de transações com o RDS para SQL Server. Confira também este comando de exemplo:

    Exemplo de chamada de procedimento armazenado para ativar o acesso ao registro de transações no 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. Crie um job do agente SQL que seja executado em uma programação regular. O job precisa executar o seguinte 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. Configure as transferências contínuas de arquivos do bucket do S3 para o bucket do Cloud Storage. Você pode usar qualquer solução para mover seus arquivos, por exemplo, jobs de transferência orientados por eventos no Serviço de transferência do Cloud Storage. Consulte Configurar transferências baseadas em eventos do AWS S3.

Programar uploads de arquivos de registro de transações para instâncias locais do SQL Server

É possível programar transferências regulares dos arquivos de registro de transação da instância de origem autogerenciada para o bucket do Cloud Storage em que você armazena os arquivos de registro de transação. Uma das soluções recomendadas é

Siga as etapas abaixo:

  1. No sistema em que você quer executar o script, inicialize a CLI do Google Cloud com autenticação e um projeto executando gcloud init; gcloud auth login e gcloud config set project.
  2. Salve o script a seguir em um arquivo na sua instância de origem do SQL Server.

    Esse script automatiza a criação de um arquivo de registro de transações e o upload dele no seu bucket do Cloud Storage usando o 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. Configure uma ferramenta de programação para executar o script regularmente.

    Também é possível usar esse script manualmente e transmitir o argumento posicional "final" para criar o arquivo de registro de transações cujo nome termina com o sufixo .trn.final. Isso é útil quando você quer concluir a migração e promover o job de migração.