Os arquivos de backup do registro de transações contêm as mudanças que ocorrem no banco de dados de origem depois que você faz o backup completo. Os backups do registro de transações são necessários para a fase de carregamento contínuo 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 SQL Server de origem.
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:
- Verifique se os backups automatizados estão ativados na instância do Amazon RDS. Consulte Ativar backups automatizados na documentação do Amazon RDS.
- Ative o acesso aos arquivos de registro de transações na instância do Amazon RDS.
Consulte
Acesso a backups de registro de transações com o RDS para SQL Server.
Você também pode conferir o seguinte 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/';
- Crie um job do SQL Agent 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;
- Configure transferências contínuas de arquivos do bucket do S3 para o bucket do Cloud Storage bucket. É possível usar qualquer solução para mover seus arquivos, por exemplo, jobs de transferência orientados a 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ções da instância de origem autogerenciada para o bucket do Cloud Storage em que você armazena os arquivos de registro de transações. Uma das soluções recomendadas é
Siga as etapas abaixo:
- No sistema em que você quer executar o script, inicialize a Google Cloud CLI com autenticação e um projeto executando gcloud init; ou gcloud auth login e gcloud config set project.
- Salve o script a seguir em um arquivo na 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 para o bucket do Cloud Storage usando o
gcloud storage cpcomando.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/"
- Configure uma ferramenta de programação de sua escolha para executar o script regularmente.
Também é possível usar esse script manualmente e transmitir o
"final"argumento posicional para criar o arquivo de registro de transações cujo nome termina em no sufixo.trn.final. Isso é útil quando você quer concluir a migração e promover o job de migração.