Exporte von Transaktionslogdateien planen

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

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

Hochladen von Transaktionslogdateien für Amazon RDS planen

Sie können regelmäßige Übertragungen Ihrer Transaktionslogdateien von der Amazon RDS-Quellinstanz 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 Transaktionslogdateien 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 prüfen:

    Beispiel für einen Aufruf einer gespeicherten Prozedur zum Aktivieren des Transaktionslog-Zugriffs 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 regelmäßig ausgeführt wird. Der Job sollte das folgende Skript 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 eine beliebige Lösung zum Verschieben Ihrer Dateien verwenden, z. B. ereignisgesteuerte Übertragungsjobs im Storage Transfer Service. Weitere Informationen finden Sie unter Ereignisgesteuerte Übertragungen von AWS S3 einrichten.

Hochladen von Transaktionslogdateien für lokale SQL Server-Instanzen planen

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

Führen Sie diese Schritte aus:

  1. Prüfen Sie auf dem System, auf dem Sie das Skript 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.

    Mit diesem Skript wird das Erstellen einer Transaktionsprotokolldatei und das Hochladen in Ihren Cloud Storage-Bucket mithilfe des Befehls gcloud storage cp automatisiert.

    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 Skript regelmäßig auszuführen.

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