交易記錄備份檔案包含完整備份後,來源資料庫中發生的變更。遷移工作需要交易記錄備份,才能進行持續載入階段。
本頁面說明如何為來源 SQL Server 資料庫排定定期的交易記錄匯出和上傳作業。
為 Amazon RDS 排定交易記錄檔上傳作業
您可以排定定期轉移作業,將交易記錄檔從 Amazon RDS 來源執行個體轉移至儲存交易記錄檔的 Cloud Storage 值區。
請執行下列步驟:
- ����� 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 值區持續傳輸至 Cloud Storage 值區的檔案傳輸作業。您可以使用任何解決方案移動檔案,例如 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 值區。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
後綴的交易記錄檔案。如要完成遷移作業並 升級遷移工作,這項功能就很實用。