交易記錄備份檔案包含完整備份後,來源資料庫中發生的變更。遷移工作的連續載入階段需要交易記錄備份。
本頁面說明如何排定定期匯出及上傳交易記錄,以便從自行管理的來源和 Amazon RDS 來源遷移。
排定 Amazon RDS 交易記錄檔上傳作業
您可以安排定期將交易記錄檔從 Amazon RDS 來源執行個體,移轉至儲存交易記錄檔的 Cloud Storage bucket。
請執行下列步驟:
- 確保 Amazon RDS 執行個體已啟用自動備份功能。 請參閱 Amazon RDS 說明文件中的「 啟用自動備份」。
- 在 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/';
- 建立定期執行的 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;
- 設定從 S3 bucket 到 Cloud Storage bucket 的連續檔案移轉作業。您可以使用任何解決方案移動檔案,例如 Storage 移轉服務中的事件導向移轉工作。請參閱「設定從 AWS S3 進行事件導向移轉作業」。
排定地端部署 SQL Server 執行個體的交易記錄檔上傳作業
您可以安排定期將交易記錄檔從自行管理的來源執行個體,移轉至儲存交易記錄檔的 Cloud Storage bucket。建議的解決方案之一是
請執行下列步驟:
- 在要執行指令碼的系統上,請務必執行 gcloud init,或 gcloud auth login 和 gcloud config set project,透過驗證和專案初始化 Google Cloud CLI。
- 將下列指令碼儲存至來源 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/"
- 設定您選擇的排程工具,定期執行指令碼。
您也可以手動使用這個指令碼,並傳遞
"final"位置引數,建立名稱結尾為.trn.final後置字元的交易記錄檔。如要完成遷移作業並 升級遷移工作,這個選項就相當實用。