排定交易記錄檔案匯出作業

交易記錄備份檔案包含您執行完整備份後,來源資料庫發生的變更。遷移工作的連續載入階段需要交易記錄備份。

本頁面說明如何為來源 SQL Server 資料庫排定定期匯出及上傳交易記錄的排程。

排定 Amazon RDS 交易記錄檔案上傳時間

您可以排定定期轉移交易記錄檔的時程,將檔案從 Amazon RDS 來源執行個體轉移到儲存交易記錄檔的 Cloud Storage 值區。

請執行下列步驟:

  1. 確保 Amazon RDS 執行個體已啟用自動備份功能。 請參閱 Amazon RDS 說明文件中的「 啟用自動備份功能」。
  2. 在 Amazon RDS 執行個體中啟用交易記錄檔的存取權。 請參閱「 Access to transaction log backups with RDS for SQL Server」(使用 RDS for SQL Server 存取交易記錄備份)。您也可以查看下列指令範例:

    在 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. 建立定期執行的 SQL Server Agent 工作。這項作業應執行下列指令碼:
    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. 設定從 S3 bucket 到 Cloud Storage bucket 的檔案持續轉移作業。您可以使用任何解決方案移動檔案,例如 Storage 移轉服務中以事件為導向的移轉作業。請參閱「設定從 AWS S3 進行的事件驅動型移轉作業」。

排定地端部署 SQL Server 執行個體的交易記錄檔上傳作業

您可以排定交易記錄檔的定期移轉作業,將檔案從自行管理的來源執行個體移至 Cloud Storage 值區,並在該處儲存交易記錄檔。建議的解決方案之一是

請執行下列步驟:

  1. 在要執行指令碼的系統上,請務必執行 gcloud init gcloud auth login gcloud config set project,透過驗證和專案初始化 Google Cloud CLI。
  2. 將下列指令碼儲存至來源 SQL Server 執行個體上的檔案。

    這個指令碼會使用 gcloud storage cp 指令,自動建立交易記錄檔並上傳至 Cloud Storage bucket。

    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. 設定您選擇的排程工具,定期執行指令碼。

    您也可以手動使用這個指令碼,並傳遞 "final" 位置引數,建立名稱結尾為 .trn.final 後置字元的交易記錄檔。如果您想完成遷移作業並 升級遷移工作,這個選項就非常實用。