本頁面說明如何建立將 SQL Server 資料庫遷移至 SQL Server 適用的 Cloud SQL 所需的備份檔案,包括以下各節:
- ������和限制列出備份檔案支援的重要限制。
- 命名慣例說明備份檔案的檔案名稱相關規定。
- 「建立完整備份」一文說明建立完整備份檔案的步驟。
- 「建立差異備份」一文說明如何建立差異備份檔案。
- 交易記錄備份檔案中包含建立交易記錄備份檔案的步驟。
需求條件和限制
下列規定和限制適用於用於遷移作業的備份檔案:
所有備份檔案的名稱都必須符合各自的命名慣例。
備份檔案的大小上限為 5 TB。
如果資料庫大小超過 5 TB,您可以將完整或差異備份檔案��分為多個小���檔案。每個拆分檔案的大小上限為 5 TB。
您可以使用加密備份和交易記錄檔案進行遷移。如果您想使用加密備份檔案,則必須為遷移作業中特定資料庫使用的每個備份檔案 (完整備份、差異備份、交易記錄) 進行加密。請參閱 使用加密備份。
資料庫移轉服務不會遷移 SQL Server
master
資料庫。來源 SQL Server 執行個體無法使用簡單復原模式。如要進一步瞭解復原模型,請參閱 Microsoft 說明文件中的「Recovery Models (SQL Server)」(復原模型 (SQL Server))。
命名慣例
本節將說明完整備份、差異備份和交易記錄備份檔案的檔名規定。
如要瞭解 Cloud Storage 值區資料夾名稱和結構規定,請參閱「 建立及設定 Cloud Storage 值區」。
如要瞭解資料庫遷移服務如何在同質 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
如果您將完整備份分割成個別的區塊,每個區塊都可以使用您選擇的任何名稱,但必須上傳至名稱為 Unix 時間戳記 (以秒為單位) 的 Cloud Storage 資料夾:
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
如果您將差異備份分割成個別的條紋,每個條紋都可以使用您選擇的任何名稱,但必須上傳至名稱為 Unix 時間戳記 (以秒為單位) 的 Cloud Storage 資料夾:
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
如果您將完整備份分割成個別的區塊,每個區塊都可以使用您選擇的任何名稱,但必須上傳至名稱為 Unix 時間戳記 (以秒為單位) 的 Cloud Storage 資料夾:
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
如果您將完整備份分割成個別的區塊,每個區塊都可以使用您選擇的任何名稱,但必須上傳至名稱為 Unix 時間戳記 (以秒為單位) 的 Cloud Storage 資料夾:
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 說明文件中的「Recovery Models (SQL Server) 」(復原模型 (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)); BACKUP DATABASE @DATABASE TO DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '.bak'; 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)); BACKUP DATABASE @DATABASE TO DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe1.bak', DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe2.bak', DISK = 'X:\SQLServerBackups\full\' + @DATABASE + '.' + @unixTimestamp + '\stripe3.bak' WITH FORMAT, MEDIANAME = 'AdventureWorksStripedSet0', MEDIADESCRIPTION = 'Striped media set for ' + @DATABASE + ' database'; GO
- 將備份檔案上傳至 Cloud Storage 值區。請參閱「 建立及設定 Cloud Storage 值區」一文。
為 Amazon RDS 執行完整備份
如要完整備份 Amazon RDS 來源,請按照下列步驟操作:
- 請確認你符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫未使用簡單復原模式。 請參閱 Amazon RDS 說明文件中的「決定 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 值區。請參閱「 建立及設定 Cloud Storage 值區」一文。
為來源執行個體建立差異備份
您可以在遷移工作的增量載入階段使用差異資料庫備份檔案。如果您也為相同資料庫加密完整備份檔案和交易記錄檔案,就可以使用加密的差異備份檔案。所有備份和交易記錄檔案都必須使用每個資料庫相同的加密金鑰。請參閱 使用加密備份。
為地端 SQL Server 執行個體建立差異備份
您可以使用 T-SQL 或 SQL Server Management Studio (SSMS),為內部部署的 SQL Server 例項建立差異備份。步驟如下:
- 請確認你符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫未使用簡單復原模式。 請參閱 Microsoft 說明文件中的「Recovery Models (SQL Server) 」(復原模型 (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)); BACKUP DATABASE @DATABASE TO DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '.bak' WITH DIFFERENTIAL; 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)); BACKUP DATABASE @DATABASE TO DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe1.bak', DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe2.bak', DISK = 'X:\SQLServerBackups\diff\' + @DATABASE + '.' + @unixTimestamp + '\stripe3.bak' WITH DIFFERENTIAL; WITH FORMAT, MEDIANAME = 'AdventureWorksStripedSet0', MEDIADESCRIPTION = 'Striped differential media set for ' + @DATABASE + ' database'; GO
- 將備份檔案上傳至 Cloud Storage 值區。請參閱「 建立及設定 Cloud Storage 值區」一文。
為 Amazon RDS 執行差異備份
如要備份 Amazon RDS 來源的差異備份,請按照下列步驟操作:
- 請確認你符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫未使用簡單復原模式。 請參閱 Amazon RDS 說明文件中的「決定 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 值區。請參閱「 建立及設定 Cloud Storage 值區」一文。
備份交易記錄
交易記錄備份檔案包含完整備份後,������資料庫������生的變更。遷移工作需要交易記錄備份,才能進行持續載入階段。您可以排定定期的交易記錄匯出和上傳作業,確保資料更新持續複製至目的地 SQL Server 適用的 Cloud SQL 執行個體。請參閱「 安排交易記錄備份」。
如果您使用加密備份檔案,則必須為相同資料庫加密交易記錄檔案。請參閱 使用加密備份。
為地端部署的 SQL Server 執行個體備份交易記錄
如要備份內部部署 SQL Server 資料庫的交易記錄,請按照下列步驟操作:
- 請確認你符合下列規定:
- 備份檔案符合 命名規範 。
- 來源資料庫未使用簡單復原模式。 請參閱 Microsoft 說明文件中的「Recovery Models (SQL Server) 」(復原模型 (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)); BACKUP LOG @DATABASE TO DISK = 'X:\SQLServerBackups\log\' + @DATABASE + '.' + @unixTimestamp + '.trn';
- 將交易記錄備份檔案上傳至 為遷移作業建立的 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 值區複製到您為遷移作業建立的 Cloud Storage 值區。