Les fichiers de sauvegarde des journaux de transactions contiennent les modifications apportées à votre base de données source après la sauvegarde complète. Les sauvegardes des journaux de transactions sont nécessaires pour la phase de chargement continu de votre tâche de migration.
Cette page explique comment planifier des exportations et des importations régulières de journaux de transactions pour la migration depuis des sources autogérées et Amazon RDS.
Planifier l'importation de fichiers journaux de transactions pour Amazon RDS
Vous pouvez planifier des transferts réguliers de vos fichiers journaux de transactions depuis l'instance source Amazon RDS vers le bucket Cloud Storage dans lequel vous stockez les fichiers journaux de transactions.
Procédez comme suit :
- Assurez-vous que les sauvegardes automatiques sont activées sur votre instance Amazon RDS. Consultez la section Activer les sauvegardes automatiques dans la documentation Amazon RDS.
- Activez l'accès aux fichiers journaux de transactions dans votre instance Amazon RDS.
Consultez la section
Accès aux sauvegardes des journaux de transactions avec RDS pour SQL Server.
Vous pouvez également consulter l'exemple de commande suivant :
Exemple d'appel de procédure stockée pour activer l'accès aux journaux de transactions dans 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/';
- Créez une tâche SQL Agent qui s'exécute selon une programmation régulière. La tâche doit
exécuter le script suivant :
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;
- Configurez des transferts de fichiers continus depuis votre bucket S3 vers le bucket Cloud Storage bucket. Vous pouvez utiliser n'importe quelle solution pour déplacer vos fichiers, par exemple des tâches de transfert basées sur des événements dans service de transfert de stockage. Consultez la section Configurer des transferts basés sur des événements depuis AWS S3.
Planifier l'importation de fichiers journaux de transactions pour les instances SQL Server sur site
Vous pouvez planifier des transferts réguliers de vos fichiers journaux de transactions depuis votre instance source autogérée vers le bucket Cloud Storage dans lequel vous stockez les fichiers journaux de transactions. L'une des solutions recommandées est
Procédez comme suit :
- Sur le système où vous souhaitez exécuter le script, assurez-vous d'avoir initialisé Google Cloud CLI avec l'authentification et un projet en exécutant la commande gcloud init ou gcloud auth login et gcloud config set project.
- Enregistrez le script suivant dans un fichier sur votre instance SQL Server source.
Ce script automatise la création d'un fichier journal de transactions et son importation dans votre bucket Cloud Storage à l'aide de la
gcloud storage cpcommande.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/"
- Configurez l'outil de planification de votre choix pour exécuter régulièrement le script.
Vous pouvez également utiliser ce script manuellement et transmettre l'argument positionnel
"final"pour créer le fichier journal de transactions dont le nom se termine par le.trn.finalsuffixe. Cela est utile lorsque vous souhaitez terminer votre migration et promouvoir la tâche de migration.