Os ficheiros de cópia de segurança do registo de transações contêm as alterações que ocorrem na base de dados de origem depois de fazer a cópia de segurança completa. São necessárias cópias de segurança do registo de transações para a fase de carregamento contínuo da tarefa de migração.
Esta página descreve como agendar exportações e carregamentos regulares de registos de transações para as bases de dados SQL Server de origem.
Agende carregamentos de ficheiros de registo de transações para o Amazon RDS
Pode agendar transferências regulares dos ficheiros de registo de transações da instância de origem do Amazon RDS para o contentor do Cloud Storage onde armazena os ficheiros de registo de transações.
Siga estes passos:
- Certifique-se de que as cópias de segurança automáticas estão ativadas na sua instância do Amazon RDS. Consulte Ative as cópias de segurança automáticas na documentação do Amazon RDS.
- Ative o acesso a ficheiros de registo de transações na sua instância do Amazon RDS.
Consulte
Acesso a cópias de segurança do registo de transações com o RDS para SQL Server.
Também pode verificar o seguinte comando de exemplo:
Exemplo de chamada de procedimento armazenado para ativar o acesso ao registo 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 uma tarefa do SQL Agent que seja executada de forma regular. A tarefa deve
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 de ficheiros contínuas do seu contentor do S3 para o contentor do Cloud Storage. Pode usar qualquer solução para mover os seus ficheiros, por exemplo, tarefas de transferência baseadas em eventos no serviço de transferência de armazenamento. Consulte o artigo Configure transferências orientadas por eventos a partir do AWS S3.
Agende carregamentos de ficheiros de registo de transações para instâncias do SQL Server no local
Pode agendar transferências regulares dos ficheiros de registo de transações da instância de origem autogerida para o contentor do Cloud Storage onde armazena os ficheiros de registo de transações. Uma das soluções recomendadas é
Siga estes passos:
- No sistema onde quer executar o script, certifique-se de que inicializou a CLI Google Cloud com autenticação e um projeto executando o comando gcloud init; ou gcloud auth login e gcloud config set project.
- Guarde o seguinte script num ficheiro na sua instância do SQL Server de origem.
Este script automatiza a criação de um ficheiro de registo de transações e o carregamento para o seu contentor do Cloud Storage através do 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/"
- Configure uma ferramenta de agendamento à sua escolha para executar o script regularmente.
Também pode usar este script manualmente e transmitir o argumento posicional
"final"
para criar o ficheiro de registo de transações cujo nome termina no sufixo.trn.final
. Isto é útil quando quer concluir a migração e promover a tarefa de migração.