本頁面說明如何建立備份檔案,以便將自行管理的資料庫或 Amazon RDS SQL Server 資料庫,遷移至 SQL Server 適用的 Cloud SQL,包括下列各節:
- 需求和限制列出備份檔案支援的重要限制。
- 命名慣例:說明備份檔案的檔案名稱規定。
- 建立完整備份:包含建立完整備份檔案的步驟。
- 建立差異備份:包含建立差異備份檔案的步驟。
- 交易記錄備份檔案:包含建立交易記錄備份檔案的步驟。
需求條件和限制
用於遷移的備份檔案須符合下列規定和限制:
所有備份檔案的名稱都必須符合各自的命名慣例。
備份檔案的大小上限為 5 TB。
如果資料庫大小超過 5 TB,您可以將完整或差異備份檔案拆分為多個小型檔案。每個拆分檔案的大小上限為 5 TB。
您可以使用加密備份和交易記錄檔進行遷移。 如要使用加密備份檔案,您必須加密遷移作業中特定資料庫使用的每個備份檔案 (完整、差異、交易記錄)。請參閱「 使用加密備份」。
資料庫遷移服務不會遷移 SQL Server
master資料庫。來源 SQL Server 執行個體無法使用簡單復原模式。如要進一步瞭解復原模式,請參閱 Microsoft 說明文件中的「復原模式 (SQL Server)」。
命名慣例
本節說明完整、差異和交易記錄備份檔案的檔案名稱規定。
如要瞭解 Cloud Storage bucket 資料夾名稱和結構規定,請參閱「 建立及設定 Cloud Storage bucket」。
如要瞭解資料庫遷移服務如何在同質 SQL Server 遷移作業中使用不同類型的備份檔案,請參閱「 支援的備份檔案類型」。
地端部署 SQL Server 執行個體的備份檔案命名慣例
完整備份檔案名稱
完整備份檔案的命名慣例,取決於您是使用單一備份檔案,還是將其分成多個條帶。無論是哪種情況,資料庫遷移服務都要求您加入 Epoch 時間戳記 (以秒為單位的 Unix 時間戳記),代表完整備份的大致時間。
如果完整備份是單一檔案,檔案名稱必須採用
db_name.epoch.bak格式,其中:db_name是資料庫名稱epoch是以秒為單位的 Unix 時間戳記.bak是副檔名
有效範例包括:
my-business-database.1712649600.bakmy-other-database.1712649600.bak
如果將完整備份分割成不同的分區,每個分區都可以使用您選擇的任何名稱,但必須上傳到 Cloud Storage 資料夾,且資料夾名稱必須是 Unix 時間戳記 (以秒為單位):
Cloud Storage bucket root/ |- my-business-database/ | |- full/ | | |- 1712649600/ | | | |- mystripe-full_backup_file.bak | | | |- otherStripefull-bkp.bak | |- diff/ | | |- ... | |- log/ | | |- ... |- my-other-database/ | |- full/ | | |- 1715250742/ | | | |- cool-stripe-file.bak | | | |- secondStripeFile.bak | |- diff/ | | |- ... | |- log/ | | |- ...
差異備份檔案名稱
差異備份檔案的命名慣例,取決於您是使用單一備份檔案,還是將檔案分成多個分區。無論是哪種情況,資料庫遷移服務都要求您加入 Epoch 時間戳記 (以秒為單位的 Unix 時間戳記),代表差異備份的大致時間。
如果差異備份是單一檔案,檔案名稱必須採用
db_name.epoch.ext格式,其中:db_name是資料庫名稱epoch是以秒為單位的 Unix 時間戳記.ext是副檔名;差異備份檔案可以使用下列副檔名:.bak、.dif、.diff。
有效範例包括:
my-business-database.1731159833.bakmy-other-database.1731159833.dif
如果將差異備份分割成不同的分區,每個分區都可以使用您選擇的任何名稱,但必須上傳到 Cloud Storage 資料夾,且資料夾名稱必須是 Unix 時間戳記 (以秒為單位):
Cloud Storage bucket root/ |- my-business-database/ | |- full/ | | |- ... | |- diff/ | | |- 1731159833/ | | | |- mydiffstripe-diff_backup_file.dif | | | |- mySeconddiffstripe-diff_backup_file.bak | |- log/ | | |- ... |- my-other-database/ | |- full/ | | |- ... | |- diff/ | | |- 1731159833/ | | | |- firstDiffStripe.bak | | | |- other_diff_stripe.diff | |- log/ | | |- ...
交易記錄檔名稱
交易記錄檔名稱必須採用 db_name.epoch.trn 格式,其中:
db_name是資料庫名稱epoch是以秒為單位的 Unix 時間戳記.trn是副檔名
有效範例包括:
my-business-database.1712649600.trnmy-other-database.1712649600.trn
Amazon RDS 備份檔案命名慣例
完整備份檔案名稱
完整備份檔案的命名慣例,取決於您是使用單一備份檔案,還是將其分成多個條帶。無論是哪種情況,資料庫遷移服務都要求您加入 Epoch 時間戳記 (以秒為單位的 Unix 時間戳記),代表完整備份的大致時間。
如果完整備份是單一檔案,檔案名稱必須採用
db_id.family_guid.rds_backup_seq_id.epoch.bak格式,其中:db_id是 Amazon RDS 內部資料庫 IDfamily_guid是原始資料庫建立時的 Amazon RDS 專屬 IDrds_backup_seq_id是 Amazon RDS 內部使用的 ID,代表了個別交易記錄備份檔案的序號epoch是以秒為單位的 Unix 時間戳記.bak是副檔名
有效範例包括:
3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1712649600.bak1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1712649600.bak
如果將完整備份分割成不同的分區,每個分區都可以使用您選擇的任何名稱,但必須上傳到 Cloud Storage 資料夾,且資料夾名稱必須是 Unix 時間戳記 (以秒為單位):
Cloud Storage bucket root/ |- my-business-database/ | |- full/ | | |- 1712649600/ | | | |- mystripe-full_backup_file.bak | | | |- otherStripefull-bkp.bak | |- diff/ | | |- ... | |- log/ | | |- ... |- my-other-database/ | |- full/ | | |- 1715250742/ | | | |- cool-stripe-file.bak | | | |- secondStripeFile.bak | |- log/ | | |- ...
差異備份檔案名稱
差異備份檔案的命名慣例,取決於您是使用單一備份檔案,還是將檔案分成多個分區。無論是哪種情況,資料庫遷移服務都要求您加入 Epoch 時間戳記 (以秒為單位的 Unix 時間戳記),代表差異備份的大致時間。
如果差異備份是單一檔案,檔案名稱必須採用
db_id.family_guid.rds_backup_seq_id.epoch.ext格式,其中:db_id是 Amazon RDS 內部資料庫 IDfamily_guid是原始資料庫建立時的 Amazon RDS 專屬 IDrds_backup_seq_id是 Amazon RDS 內部使用的 ID,代表了個別交易記錄備份檔案的序號epoch是以秒為單位的 Unix 時間戳記.bak是副檔名;差異備份檔案可以使用下列副檔名:.bak、.dif、.diff。
有效範例包括:
3.CX11CB3D-G2E4-46D9-B462-CE40CDA97E89.22.1731159833.bak1.FD21CD3F-B5E4-27Z9-B462-CE40CDA97E89.21.1731159833.dif
如果將完整備份分割成不同的分區,每個分區都可以使用您選擇的任何名稱,但必須上傳到 Cloud Storage 資料夾,且資料夾名稱必須是 Unix 時間戳記 (以秒為單位):
Cloud Storage bucket root/ |- my-business-database/ | |- full/ | | |- ... | |- diff/ | | |- 1731159833/ | | | |- mydiffstripe-diff_backup_file.dif | | | |- mySeconddiffstripe-diff_backup_file.bak | |- log/ | | |- ... |- my-other-database/ | |- full/ | | |- ... | |- diff/ | | |- 1731159833/ | | | |- firstDiffStripe.bak | | | |- other_diff_stripe.diff | |- log/ | | |- ...
交易記錄檔名稱
Amazon RDS 會自動產生交易記錄備份檔案,內含所有必要資料庫 ID。這些預設名稱包含 Epoch 時間戳記,而且資料庫遷移服務提供完整支援。您可以直接將這些檔案上傳至 /log/ 資料夾。
完整備份來源執行個體
遷移工作的初始載入階段需要完整的資料庫備份檔案。如要加密備份,請務必儲存加密金鑰,以便日後建立遷移工作時,將金鑰上傳至 Cloud Storage。請參閱「 使用加密備份」。
完整備份地端部署 SQL Server 執行個體
您可以使用 T-SQL 或 SQL Server Management Studio (SSMS),完整備份地端部署 SQL Server 執行個體。步驟如下:
- 請確認符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫不使用簡單復原模式。 請參閱 Microsoft 說明文件中的「復原模式 (SQL Server) 」。
- 如果資料庫大小超過 5 TB,請務必將完整備份拆分為多個小型檔案。每個拆分檔案的大小上限為 5 TB。 請參閱「 備份裝置在等量媒體集」。
- 完整備份來源執行個體。請參閱 Microsoft 說明文件中的「
快速入門導覽課程:使用 SSMS 備份及還原 SQL Server 資料庫」。您也可以查看下列範例指令:
單一完整備份檔案的 T-SQL 指令範例
這個範例指令會完整備份
AdventureWorks2022資料庫。產生的備份檔案會採用必要的命名慣例。declare @DATABASE varchar(1000); SELECT @DATABASE = 'AdventureWorks2022'; declare @unixTimestamp varchar(1000); SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50)); DECLARE @BackupPath NVARCHAR(2000); SET @BackupPath = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '.bak'; DECLARE @SQL NVARCHAR(MAX); SET @SQL = 'BACKUP DATABASE [' + @DATABASE + '] TO DISK = N''' + @BackupPath + ''''; EXEC sp_executesql @SQL; GO
範例 T-SQL 指令:建立等量完整備份檔案
這個範例指令會完整備份
AdventureWorks2022資料庫。產生的備份檔案會採用必要的命名慣例。declare @DATABASE varchar(1000); SELECT @DATABASE = 'AdventureWorks2022'; declare @unixTimestamp varchar(1000); SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50)); DECLARE @BackupPath1 NVARCHAR(2000); DECLARE @BackupPath2 NVARCHAR(2000); DECLARE @BackupPath3 NVARCHAR(2000); SET @BackupPath1 = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe1.bak'; SET @BackupPath2 = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe2.bak'; SET @BackupPath3 = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe3.bak'; DECLARE @SQL NVARCHAR(MAX); SET @SQL = 'BACKUP DATABASE [' + @DATABASE + '] ' + 'TO DISK = N''' + @BackupPath1 + ''', ' + 'DISK = N''' + @BackupPath2 + ''', ' + 'DISK = N''' + @BackupPath3 + ''' ' + 'WITH FORMAT, ' + 'MEDIANAME = N''AdventureWorksStripedSet0'', ' + 'MEDIADESCRIPTION = N''Striped media set for ' + @DATABASE + ' database'''; EXEC sp_executesql @SQL; GO
- 將備份檔案上傳至 Cloud Storage bucket。 請參閱「 建立及設定 Cloud Storage bucket」。
完整備份 Amazon RDS
如要完整備份 Amazon RDS 來源,請按照下列步驟操作:
- 請確認符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫不使用簡單復原模式。 請參閱 Amazon RDS 說明文件中的「Determining a recovery model for your Microsoft SQL Server database」(決定 Microsoft SQL Server 資料庫的復原模式)。
- 如要在完整備份後使用交易記錄備份,請在 Amazon RDS 執行個體上 啟用自動備份。
- 設定原生備份功能。請參閱 Amazon RDS 說明文件中的「 設定原生備份與還原」。
- 完整備份來源執行個體。如果資料庫大小超過 5 TB,請務必使用
@number_of_files參數,將完整備份拆分為多個資料條。每個拆分檔案的大小上限為 5 TB。請參閱 Amazon RDS 說明文件中的「備份資料庫 」。您也可以查看下列指令範例:
在 Amazon RDS 執行完整備份的查詢範例
這個範例指令會完整備份
AdventureWorks2022資料庫。產生的備份檔案會採用必要的命名慣例。declare @DATABASE varchar(1000); declare @S3Bucket varchar(1000); declare @unixTimestamp varchar(30); declare @fileName varchar(1000); SELECT @S3Bucket = 'dms-sqlserver-exports'; SELECT @DATABASE = 'AdventureWorks2022'; SELECT @unixTimestamp=CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50)); SELECT @fileName = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/full/' + @DATABASE + '.' + @unixTimestamp + '/' + CAST(database_id AS VARCHAR(10)) + '.' + CAST(family_guid AS VARCHAR(50)) + '.*.' + @unixTimestamp) FROM master.sys.database_recovery_status WHERE DB_NAME(database_id)=@DATABASE; exec msdb.dbo.rds_backup_database @source_db_name=@DATABASE, @s3_arn_to_backup_to=@fileName, @overwrite_s3_backup_file=1, @type='FULL', @number_of_files=1;
- 將備份檔案上傳至 Cloud Storage bucket。 請參閱「 建立及設定 Cloud Storage bucket」。
對來源執行個體進行差異備份
在遷移工作的增量載入階段,您可以使用差異資料庫備份檔案。如果您也加密同一資料庫的完整備份檔案和交易記錄檔,則可以使用加密的差異備份檔案。每個資料庫的所有備份和交易記錄檔,都必須使用相同的加密金鑰。請參閱「 使用加密備份」。
為地端部署 SQL Server 執行個體建立差異備份
您可以使用 T-SQL 或 SQL Server Management Studio (SSMS),對地端部署 SQL Server 執行個體進行差異備份。步驟如下:
- 請確認符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫不使用簡單復原模式。 請參閱 Microsoft 說明文件中的「復原模式 (SQL Server) 」。
- 如果資料庫大小超過 5 TB,請務必將差異備份拆分為多個小型檔案。每個拆分檔案的大小上限為 5 TB。 請參閱「 備份裝置在等量媒體集」。
- 建立來源執行個體的差異備份。請參閱 Microsoft 說明文件中的「
建立差異資料庫備份」。您也可以查看下列範例指令:
單一差異備份檔案的 T-SQL 指令範例
這個範例指令會對
AdventureWorks2022資料庫進行差異備份。產生的備份檔案會採用必要的命名慣例。declare @DATABASE varchar(1000); SELECT @DATABASE = 'AdventureWorks2022'; declare @unixTimestamp varchar(1000); SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50)); DECLARE @BackupPath NVARCHAR(2000); SET @BackupPath = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '.bak'; DECLARE @SQL NVARCHAR(MAX); SET @SQL = 'BACKUP DATABASE [' + @DATABASE + '] TO DISK = N''' + @BackupPath + ''' WITH DIFFERENTIAL'; EXEC sp_executesql @SQL; GO
分區差異備份檔案的 T-SQL 指令範例
這個範例指令會對
AdventureWorks2022資料庫進行差異備份。產生的備份檔案會採用必要的命名慣例。declare @DATABASE varchar(1000); SELECT @DATABASE = 'AdventureWorks2022'; declare @unixTimestamp varchar(1000); SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50)); DECLARE @BackupPath1 NVARCHAR(2000); DECLARE @BackupPath2 NVARCHAR(2000); DECLARE @BackupPath3 NVARCHAR(2000); SET @BackupPath1 = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe1.bak'; SET @BackupPath2 = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe2.bak'; SET @BackupPath3 = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe3.bak'; DECLARE @SQL NVARCHAR(MAX); SET @SQL = 'BACKUP DATABASE [' + @DATABASE + '] ' + 'TO DISK = N''' + @BackupPath1 + ''', ' + 'DISK = N''' + @BackupPath2 + ''', ' + 'DISK = N''' + @BackupPath3 + ''' ' + 'WITH DIFFERENTIAL, FORMAT, ' + 'MEDIANAME = N''AdventureWorksStripedSet0'', ' + 'MEDIADESCRIPTION = N''Striped differential media set for ' + @DATABASE + ' database'''; EXEC sp_executesql @SQL; GO
- 將備份檔案上傳至 Cloud Storage bucket。 請參閱「 建立及設定 Cloud Storage bucket」。
為 Amazon RDS 建立差異備份
如要對 Amazon RDS 來源進行差異備份,請按照下列步驟操作:
- 請確認符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫不使用簡單復原模式。 請參閱 Amazon RDS 說明文件中的「Determining a recovery model for your Microsoft SQL Server database」(決定 Microsoft SQL Server 資料庫的復原模式)。
- 設定原生備份功能。請參閱 Amazon RDS 說明文件中的「 設定原生備份與還原」。
- 建立來源執行個體的差異備份。使用
rds_backup_database預存程序,並將type參數設為DIFFERENTIAL。如果資料庫大小超過 5 TB,請務必使用
@number_of_files參數,將完整備份拆分為多個資料條。每個拆分檔案的大小上限為 5 TB。請參閱 Amazon RDS 說明文件中的「備份資料庫 」。您也可以查看下列指令範例:
在 Amazon RDS 執行差異備份的查詢範例
這個範例指令會對
AdventureWorks2022資料庫進行差異備份。產生的備份檔案會採用必要的命名慣例。declare @DATABASE varchar(1000); declare @S3Bucket varchar(1000); declare @unixTimestamp varchar(30); declare @fileName varchar(1000); SELECT @S3Bucket = 'dms-sqlserver-exports'; SELECT @DATABASE = 'AdventureWorks2022'; SELECT @unixTimestamp=CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50)); SELECT @fileName = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/full/' + @DATABASE + '.' + @unixTimestamp + '/' + CAST(database_id AS VARCHAR(10)) + '.' + CAST(family_guid AS VARCHAR(50)) + '.*.' + @unixTimestamp) FROM master.sys.database_recovery_status WHERE DB_NAME(database_id)=@DATABASE; exec msdb.dbo.rds_backup_database @source_db_name=@DATABASE, @s3_arn_to_backup_to=@fileName, @overwrite_s3_backup_file=1, @type='DIFFERENTIAL', @number_of_files=1;
- 將備份檔案上傳至 Cloud Storage bucket。 請參閱「 建立及設定 Cloud Storage bucket」。
備份交易記錄
交易記錄備份檔案包含完整備份後,來源資料庫中發生的變更。遷移工作的連續載入階段需要交易記錄備份。您可以排定定期匯出及上傳交易記錄,確保資料更新會持續複製到目的地 SQL Server 適用的 Cloud SQL 執行個體。請參閱「 排定交易記錄備份」。
如果使用加密備份檔案,也必須加密同一資料庫的交易記錄檔。請參閱「 使用加密備份」。
為地端部署 SQL Server 執行個體建立交易記錄備份
如要備份地端部署 SQL Server 資料庫的交易記錄,請按照下列步驟操作:
- 請確認符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫不使用簡單復原模式。 請參閱 Microsoft 說明文件中的「復原模式 (SQL Server) 」。
- 從 SQL Server 來源資料庫匯出交易記錄檔。請參閱 Microsoft 說明文件中的「
備份交易記錄」。您也可以查看下列指令範例:
將交易記錄檔匯出至本機磁碟的 T-SQL 指令範例
這個範例指令會建立
AdventureWorks2022資料庫的交易記錄備份,並將檔案儲存至本機磁碟。產生的備份檔案會採用必要的命名慣例。declare @DATABASE varchar(1000); SELECT @DATABASE = 'AdventureWorks2022'; declare @unixTimestamp varchar(1000); SELECT @unixTimestamp = CAST(DATEDIFF(s, '1970-01-01', GETUTCDATE()) AS VARCHAR(50)); DECLARE @BackupPath NVARCHAR(2000); SET @BackupPath = 'X:\SQLServerBackups\log\' + @DATABASE + '.' + @unixTimestamp + '.trn'; DECLARE @SQL NVARCHAR(MAX); SET @SQL = 'BACKUP LOG [' + @DATABASE + '] TO DISK = N''' + @BackupPath + ''''; EXEC sp_executesql @SQL; GO
- 將交易記錄備份檔案上傳至您為遷移作業建立的 Cloud Storage bucket。
備份 Amazon RDS 的交易記錄
如果 Amazon RDS 執行個體啟用自動備份功能,系統會自動建立交易記錄備份。請參閱 Amazon RDS 說明文件中的「 啟用自動備份」。
如要使用交易記錄備份檔案進行遷移,請按照下列步驟操作:
- 啟用 Amazon RDS 執行個體中的交易記錄檔存取權。
請參閱「
使用 RDS for SQL Server 存取交易記錄備份」。您也可以查看下列指令範例:
範例:在 Amazon RDS 中啟用交易記錄存取權的預存程序呼叫
declare @DATABASE varchar(1000); declare @S3Bucket varchar(1000); declare @targetS3Arn varchar(1000);
SELECT @S3Bucket = 'dms-sqlserver-exports'; SELECT @DATABASE = 'AdventureWorks2022'; SELECT @targetS3Arn = ('arn:aws:s3:::' + @S3Bucket + '/' + @DATABASE + '/log/');
USE @DATABASE; exec msdb.dbo.rds_tlog_copy_setup @target_s3_arn=@targetS3Arn;
- 將交易記錄備份檔案從 S3 bucket 複製到您為遷移作業建立的 Cloud Storage bucket。