本頁面說明如何建立將 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.bak
my-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.bak
my-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 時間戳記.bak
是副檔名
有效範例包括:
my-business-database.1712649600.trn
my-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.bak
1.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.bak
1.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 執行個體中啟用交易記錄檔的存取權。
請參閱「
Access to transaction log backups with RDS for SQL Server」(使用 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。