交易記錄備份檔案包含您執行完整備份後,來源資料庫發生的變更。遷移工作的連續載入階段需要交易記錄備份。
本頁面說明如何為來源 SQL Server 資料庫排定定期匯出及上傳交易記錄的排程。
排定 Amazon RDS 交易記錄檔案上傳時間
您可以排定定期轉移交易記錄檔的時程,將檔案從 Amazon RDS 來源執行個體轉移到儲存交易記錄檔的 Cloud Storage 值區。
請執行下列步驟:
- 確保 Amazon RDS 執行個體已啟用自動備份功能。 請參閱 Amazon RDS 說明文件中的「 啟用自動備份功能」。
- 在 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/';
- 建立定期執行的 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;
- 設定從 S3 bucket 到 Cloud Storage bucket 的檔案持續轉移作業。您可以使用任何解決方案移動檔案,例如 Storage 移轉服務中以事件為導向的移轉作業。請參閱「設定從 AWS S3 進行的事件驅動型移轉作業」。
排定地端部署 SQL Server 執行個體的交易記錄檔上傳作業
您可以排定交易記錄檔的定期移轉作業,將檔案從自行管理的來源執行個體移至 Cloud Storage 值區,並在該處儲存交易記錄檔。建議的解決方案之一是
請執行下列步驟:
- 在要執行指令碼的系統上,請務必執行 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後置字元的交易記錄檔。如果您想完成遷移作業並 升級遷移工作,這個選項就非常實用。