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

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

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

為 Amazon RDS 排定交易記錄檔上傳作業

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

請執行下列步驟:

  1. ����� Amazon RDS 執行個體������用自動備份功能。 請參閱 Amazon RDS 說明文件中的「 啟用自動備份功能」。
  2. 啟用 Amazon RDS 執行個體中的交易記錄檔案存取權。請參閱「 使用 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 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 值區持續傳輸至 Cloud Storage 值區的檔案傳輸作業。您可以使用任何解決方案移動檔案,例如 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 值區。

    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 後綴的交易記錄檔案。如要完成遷移作業並 升級遷移工作,這項功能就很實用。