Exporte von Transaktionslogdateien planen

Sicherungsdateien für Transaktionsprotokolle enthalten die Änderungen, die in der Quelldatenbank nach der vollständigen Sicherung auftreten. Sicherungen von Transaktionsprotokollen sind für die kontinuierliche Ladephase Ihres Migrationsjobs erforderlich.

Auf dieser Seite wird beschrieben, wie Sie regelmäßige Exporte und Uploads von Transaktionsprotokollen für Ihre Quell-SQL-Server-Datenbanken planen.

Uploads von Transaktionslogdateien für Amazon RDS planen

Sie können regelmäßige Übertragungen Ihrer Transaktionslogdateien von der Amazon RDS-Quell-Instanz in den Cloud Storage-Bucket planen, in dem Sie die Transaktionslogdateien speichern.

Führen Sie diese Schritte aus:

  1. Achten Sie darauf, dass automatische Sicherungen für Ihre Amazon RDS-Instanz aktiviert sind. Weitere Informationen finden Sie in der Amazon RDS-Dokumentation unter Automatische Sicherungen aktivieren.
  2. Aktivieren Sie den Zugriff auf Transaktionsprotokolldateien in Ihrer Amazon RDS-Instanz. Weitere Informationen finden Sie unter Zugriff auf Transaktionslogsicherungen mit RDS for SQL Server. Sie können auch den folgenden Beispielbefehl verwenden:

    Beispiel für einen Aufruf einer gespeicherten Prozedur zum Aktivieren des Zugriffs auf das Transaktionsprotokoll in 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. Erstellen Sie einen SQL-Agent-Job, der nach einem regelmäßigen Zeitplan ausgeführt wird. Der Job sollte das folgende Script ausführen:
    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. Konfigurieren Sie kontinuierliche Dateiübertragungen von Ihrem S3-Bucket in den Cloud Storage-Bucket. Sie können jede Lösung verwenden, um Ihre Dateien zu verschieben, z. B. ereignisgesteuerte Übertragungsjobs im Storage Transfer Service. Weitere Informationen finden Sie unter Ereignisgesteuerte Übertragungen von AWS S3 einrichten.

Transaktionslogdateiuploads für lokale SQL Server-Instanzen planen

Sie können regelmäßige Übertragungen Ihrer Transaktionsprotokolldateien von Ihrer selbst verwalteten Quellinstanz an den Cloud Storage-Bucket planen, in dem Sie die Transaktionsprotokolldateien speichern. Eine der empfohlenen Lösungen ist

Führen Sie diese Schritte aus:

  1. Prüfen Sie auf dem System, auf dem Sie das Script ausführen möchten, ob die Google Cloud CLI mit Authentifizierung und einem Projekt initialisiert wurde. Führen Sie dazu gcloud init oder gcloud auth login und gcloud config set project aus.
  2. Speichern Sie das folgende Script in einer Datei auf Ihrer Quell-SQL-Server-Instanz.

    Dieses Script automatisiert das Erstellen einer Transaktionsprotokolldatei und den Upload in Ihren Cloud Storage-Bucket mithilfe des Befehls 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. Konfigurieren Sie ein Planungstool Ihrer Wahl, um das Script regelmäßig auszuführen.

    Sie können dieses Script auch manuell verwenden und das Positionalargument "final" übergeben, um die Transaktionsprotokolldatei zu erstellen, deren Name auf das Suffix .trn.final endet. Das ist nützlich, wenn Sie die Migration abschließen und den Migrationsjob hochstufen möchten.