本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用原生備份與還原
啟用並設定原生備份與還原之後,就可以開始使用此選項。首先,您會連線至 Microsoft SQL Server 資料庫,然後呼叫 Amazon RDS預存程序來執行工作。如需連接資料庫的指示,請參閱連線至執行 Microsoft SQL Server 資料庫引擎的資料庫執行個體。
某些預存程序需要您將 Amazon Resource Name (ARN) 提供給 Amazon S3 儲存貯體和檔案。您 的格式ARN為 arn:aws:s3:::
。Amazon S3 不需要 中的帳戶號碼或 AWS 區域ARNs。bucket_name
/file_name.extension
如果您也提供選用KMS金鑰,則金鑰ARN的 格式為 arn:aws:kms:
。如需詳細資訊,請參閱 Amazon 資源名稱 (ARNs) AWS 和服務命名空間。您必須使用對稱加密KMS金鑰來加密備份。Amazon RDS 不支援非對稱KMS金鑰。如需詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的建立對稱加密KMS金鑰。region
:account-id
:key/key-id
注意
無論您是否使用KMS金鑰,原生備份和還原任務預設會為上傳至 S3 的檔案啟用伺服器端進階加密標準 (AES) 256 位元加密。
如需如何呼叫每個預存程序的相關指示,請參閱下列主題:
備份資料庫
若要備份資料庫,請使用 rds_backup_database
預存程序。
注意
您無法在維護時段或 Amazon RDS拍攝快照時備份資料庫。
用量
exec msdb.dbo.rds_backup_database @source_db_name='
database_name
', @s3_arn_to_backup_to='arn:aws:s3:::bucket_name
/file_name.extension
', [@kms_master_key_arn='arn:aws:kms:region
:account-id
:key/key-id
'], [@overwrite_s3_backup_file=0|1
], [@block_size=512|1024|2048|4096|8192|16384|32768|65536
], [@max_transfer_size=n
], [@buffer_count=n
], [@type='DIFFERENTIAL|FULL
'], [@number_of_files=n
];
下列是必要參數:
-
@source_db_name
– 要備份之資料庫的名稱。 -
@s3_arn_to_backup_to
– ARN指出要用於備份的 Amazon S3 儲存貯體,以及備份檔案名稱。檔案可以有任何副檔名,但通常使用
.bak
。
下列是選用參數:
-
@kms_master_key_arn
– 用於加密項目ARN的對稱加密KMS金鑰的 。-
您無法使用預設的加密金鑰。如果您使用預設金鑰,資料庫將不會備份。
-
如果您未指定 KMS 金鑰識別符,則不會加密備份檔案。如需詳細資訊,請參閱加密 Amazon RDS 資源。
-
當您指定KMS金鑰時,會使用用戶端加密。
-
Amazon RDS 不支援非對稱KMS金鑰。如需詳細資訊,請參閱《 AWS Key Management Service 開發人員指南》中的建立對稱加密KMS金鑰。
-
-
@overwrite_s3_backup_file
– 此值指出是否覆寫現有的備份檔案。-
0
– 不覆寫現有檔案。此為預設值。將
@overwrite_s3_backup_file
設為 0 時,如果檔案已存在,則傳回錯誤。 -
1
– 即使現有檔案不是備份檔案,只要是指定的名稱,就覆寫檔案。
-
-
@type
– 備份的類型。-
DIFFERENTIAL
– 建立差異備份。 -
FULL
– 建立完整備份。此為預設值。
差異備份是以前次完整備份為基礎。您不能在前次完整備份和差異備份之間擷取快照,差異備份才能運作。如果您要建立差異備份,但快照存在,請先建立另一個完整備份,再繼續建立差異備份。
您可以使用下列範例SQL查詢來尋找最後一個完整的備份或快照:
select top 1 database_name , backup_start_date , backup_finish_date from msdb.dbo.backupset where database_name='
mydatabase
' and type = 'D
' order by backup_start_date desc; -
-
@number_of_files
– 要將備份分割 (分塊) 的檔案數目。上限為 10。-
完整和差異備份都支援多個備份。
-
如果輸入值 1 或省略參數,則會建立單一備份檔案。
提供檔案共有的字首,再於末尾加上星號 (
*
)。星號可以在 S3 的任何file_name
位置ARN。星號會由所產生檔案 (以1-of-
開頭) 中的一系列字母數字字串取代。number_of_files
例如,如果 S3 中的檔案名稱ARN是
backup*.bak
且您設定@number_of_files=4
,則產生的備份檔案為backup1-of-4.bak
、backup3-of-4.bak
、backup2-of-4.bak
和backup4-of-4.bak
。-
如果任一檔案名稱已存在,且
@overwrite_s3_backup_file
為 0,則會傳回錯誤。 -
多檔案備份在
file_name
S3 中只能有一個星號ARN。 -
單一檔案備份在 S3
file_name
的部分中可以有任意數量的星號ARN。不會從所產生檔案名稱中移除星號。
-
-
@block_size
– 區塊大小 (以位元組為單位),指定備份操作的實體區塊大小。有效值為 512、1024、2048、4096、8192、16384、32768 和 65536 -
@max_transfer_size
– 最大傳輸大小表示備份程序期間每個 I/O 操作傳輸的資料磁碟區上限 (以位元組為單位)。有效值為 65536 位元組 (64 KB) 的倍數,最多 4194304 位元組 (4 MB)。 -
@buffer_count
– 用於備份程序的 I/O 緩衝區總數。
範例
範例 差異備份
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup1.bak
', @overwrite_s3_backup_file=1
, @type='DIFFERENTIAL
';
範例 有加密的完整備份
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup1.bak
', @kms_master_key_arn='arn:aws:kms:us-east-1
:123456789012
:key/AKIAIOSFODNN7EXAMPLE
', @overwrite_s3_backup_file=1
, @type='FULL
';
範例 多個備份
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @number_of_files=4
;
範例 多個差異備份
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @type='DIFFERENTIAL
', @number_of_files=4
;
範例 多個備份與加密
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @kms_master_key_arn='arn:aws:kms:us-east-1
:123456789012
:key/AKIAIOSFODNN7EXAMPLE
', @number_of_files=4
;
範例 多個備份與 S3 覆寫
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @overwrite_s3_backup_file=1, @number_of_files=4
;
範例 區塊大小的備份
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @block_size=512
;
範例 使用 @max_transfer_size
和 進行多檔案備份 @buffer_count
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @number_of_files=4
, @max_transfer_size=4194304
, @buffer_count=10
;
範例 單一檔案備份與 @number_of_files 參數
此範例會產生名為 backup*.bak
的備份檔案。
exec msdb.dbo.rds_backup_database @source_db_name='
mydatabase
', @s3_arn_to_backup_to='arn:aws:s3:::mybucket
/backup*.bak
', @number_of_files=1;
還原資料庫
若要還原資料庫,請呼叫 rds_restore_database
預存程序。Amazon 會在還原任務完成且資料庫開啟後RDS建立資料庫的初始快照。
用量
exec msdb.dbo.rds_restore_database @restore_db_name='
database_name
', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name
/file_name.extension
', @with_norecovery=0|1
, [@kms_master_key_arn='arn:aws:kms:region
:account-id
:key/key-id
'], [@block_size=512|1024|2048|4096|8192|16384|32768|65536
], [@max_transfer_size=n
], [@buffer_count=n
], [@type='DIFFERENTIAL|FULL
'];
下列是必要參數:
-
@restore_db_name
– 要還原之資料庫的名稱。資料庫名稱是唯一的。您不能還原與現有資料庫同名的資料庫。 -
@s3_arn_to_restore_from
– ARN指出用於還原資料庫之備份檔案的 Amazon S3 字首和名稱。-
若為單一檔案備份,請提供整個檔案名稱。
-
若為多檔案備份,請提供檔案共有的字首,再於末尾加上星號 (
*
)。 -
如果
@s3_arn_to_restore_from
為空,則傳回下列錯誤訊息:S3 ARN字首不能為空
。
-
以下為差異還原的必要參數,但為完整還原的選用參數:
-
@with_norecovery
– 用於還原操作的復原子句。-
將其設定為
0
以使用 還原RECOVERY。在此情況下,資料庫於還原之後會在線上。 -
將其設定為
1
以使用 還原NORECOVERY。在此情況下,資料庫會在還原任務完成後保持 RESTORING 狀態。此方法可讓您進行後續差異還原。 -
對於DIFFERENTIAL還原,請指定
0
或1
。 -
若為
FULL
還原,此值預設為0
。
-
下列是選用參數:
-
@kms_master_key_arn
– 如果您已加密備份檔案,則 KMS金鑰可用來解密檔案。當您指定KMS金鑰時,會使用用戶端加密。
-
@type
– 還原的類型。有效類型為DIFFERENTIAL
和FULL
。預設值為FULL
。 -
@block_size
– 區塊大小 (以位元組為單位),指定備份操作的實體區塊大小。有效值為 512、1024、2048、4096、8192、16384、32768 和 65536 -
@max_transfer_size
– 最大傳輸大小表示備份程序期間每個 I/O 操作傳輸的資料磁碟區上限 (以位元組為單位)。有效值為 65536 位元組 (64 KB) 的倍數,最多 4194304 位元組 (4 MB)。 -
@buffer_count
– 用於備份程序的 I/O 緩衝區總數。
注意
對於差異還原,資料庫必須處於 RESTORING 狀態,或者任務必須已存在,而該任務必須使用 還原NORECOVERY。
當資料庫在線上時,您無法還原後續差異備份。
您無法為已有 待定還原任務的資料庫提交還原任務RECOVERY。
多可用區域執行個體不支援具有 NORECOVERY和 差異還原的完整還原。
在具有僅供讀取複本的異地同步備份執行個體上還原資料庫,與在異地同步備份執行個體上還原資料庫類似。您不需要採取任何其他動作來還原複本上的資料庫。
範例
範例 單一檔案還原
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
範例 多檔案還原
若要避免在還原多個檔案時發生錯誤,請確保所有備份檔案具有相同的字首,以及沒有其他檔案使用該字首。
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*';
範例 的完整資料庫還原搭配 RECOVERY
下列三個範例執行相同的任務,即使用 進行完整還原RECOVERY。
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak';
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', [@type='
DIFFERENTIAL|FULL
'];
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=0;
範例 含加密的完整資料庫還原
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
範例 區塊大小的還原
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @block_size=512;
範例 使用 @max_transfer_size 和 @buffer_count 進行多檔案還原
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup*', @max_transfer_size=4194304, @buffer_count=10;
範例 的完整資料庫還原搭配 NORECOVERY
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='FULL', @with_norecovery=1;
範例 使用 進行差異還原 NORECOVERY
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='DIFFERENTIAL', @with_norecovery=1;
範例 使用 進行差異還原 RECOVERY
exec msdb.dbo.rds_restore_database @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/backup1.bak', @type='DIFFERENTIAL', @with_norecovery=0;
還原日誌
若要還原日誌,請呼叫 rds_restore_log
預存程序。
用量
exec msdb.dbo.rds_restore_log @restore_db_name='
database_name
', @s3_arn_to_restore_from='arn:aws:s3:::bucket_name
/log_file_name.extension
', [@kms_master_key_arn='arn:aws:kms:region
:account-id
:key/key-id
'], [@with_norecovery=0|1
], [@stopat='datetime
'], [@block_size=512|1024|2048|4096|8192|16384|32768|65536
], [@max_transfer_size=n
], [@buffer_count=n
];
下列是必要參數:
-
@restore_db_name
– 資料庫的名稱,表示要還原其日誌。 -
@s3_arn_to_restore_from
– ARN指出用於還原日誌之日誌檔案的 Amazon S3 字首和名稱。檔案可以有任何副檔名,但通常使用.trn
。如果
@s3_arn_to_restore_from
為空,則傳回下列錯誤訊息:S3 ARN字首不能為空
。
下列是選用參數:
-
@kms_master_key_arn
– 如果您加密了日誌, KMS金鑰可用來解密日誌。 -
@with_norecovery
– 用於還原操作的復原子句。此值預設為1
。-
將其設定為
0
以使用 還原RECOVERY。在此情況下,資料庫於還原之後會在線上。當資料庫在線上時,您無法還原更多的日誌備份。 -
將其設定為
1
以使用 還原NORECOVERY。在此情況下,資料庫會在還原任務完成後保持 RESTORING 狀態。此方法可讓您進行後續日誌還原。
-
-
@stopat
– 此值指定將資料庫還原至指定日期和時間的狀態 (日期時間格式)。只有在指定日期和時間之前寫入的交易日誌記錄,才會套用至資料庫。如果未指定此參數 (其為 NULL),則會還原完整日誌。
-
@block_size
– 區塊大小 (以位元組為單位),指定備份操作的實體區塊大小。有效值為 512、1024、2048、4096、8192、16384、32768 和 65536 -
@max_transfer_size
– 最大傳輸大小表示備份程序期間每個 I/O 操作傳輸的資料磁碟區上限 (以位元組為單位)。有效值為 65536 位元組 (64 KB) 的倍數,最多 4194304 位元組 (4 MB)。 -
@buffer_count
– 用於備份程序的 I/O 緩衝區總數。
注意
對於日誌還原,資料庫必須處於還原狀態,或者任務必須已經存在,而該任務必須使用 進行還原NORECOVERY。
當資料庫在線上時,您無法還原日誌備份。
您無法在已有 待定還原任務的資料庫上提交日誌還原任務RECOVERY。
異地同步備份執行個體上不支援日誌還原。
範例
範例 日誌還原
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
範例 含加密的日誌還原
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @kms_master_key_arn='arn:aws:kms:us-east-1:123456789012:key/AKIAIOSFODNN7EXAMPLE';
範例 的日誌還原 NORECOVERY
下列兩個範例執行相同的任務,即使用 進行日誌還原NORECOVERY。
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=1;
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn';
範例 區塊大小的還原
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @block_size=512;
範例 的日誌還原 RECOVERY
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0;
範例 具有 STOPAT子句的日誌還原
exec msdb.dbo.rds_restore_log @restore_db_name='mydatabase', @s3_arn_to_restore_from='arn:aws:s3:::mybucket/mylog.trn', @with_norecovery=0, @stopat='2019-12-01 03:57:09';
完成資料庫還原
如果資料庫上的最後一個還原任務是使用 執行@with_norecovery=1
,則資料庫現在處於 RESTORING 狀態。使用 rds_finish_restore
預存程序開啟資料庫,以正常操作。
用量
exec msdb.dbo.rds_finish_restore @db_name='
database_name
';
注意
若要使用此方法,資料庫必須處於 RESTORING 狀態,沒有任何待定的還原任務。
異地同步備份執行個體上不支援 rds_finish_restore
程序。
若要完成還原資料庫,請使用 master 登入。或使用最近還原資料庫或日誌的使用者登入,搭配 NORECOVERY。
處理部分還原的資料庫
捨棄部分還原的資料庫
若要捨棄部分還原的資料庫 (處於 RESTORING 狀態的左側),請使用rds_drop_database
預存程序。
exec msdb.dbo.rds_drop_database @db_name='
database_name
';
注意
您無法為已有待定還原或完成還原任務的DROP資料庫提交資料庫請求。
若要捨棄資料庫,請使用 master 登入。或使用最近還原資料庫或日誌的使用者登入,搭配 NORECOVERY。
部分還原資料庫的快照還原和point-in-time 復原行為
在快照還原和 point-in-time復原期間,來源執行個體中部分還原的資料庫 (處於 RESTORING 狀態) 會從目標執行個體捨棄。
取消任務
若要取消備份或還原任務,請呼叫 rds_cancel_task
預存程序。
注意
您無法取消 FINISH_RESTORE 任務。
用量
exec msdb.dbo.rds_cancel_task @task_id=
ID_number
;
以下是必要參數:
-
@task_id
– 要取消之任務的 ID。您可以呼叫rds_task_status
來取得任務 ID。
追蹤任務的狀態
若要追蹤備份和還原任務的狀態,請呼叫 rds_task_status
預存程序。如果您不提供任何參數,預存程序會傳回所有任務的狀態。任務的狀態大約每兩分鐘更新一次。查詢歷程記錄會保留 36 天。
用量
exec msdb.dbo.rds_task_status [@db_name='
database_name
'], [@task_id=ID_number
];
下列是選用參數:
-
@db_name
– 要顯示任務狀態之資料庫的名稱。 -
@task_id
– 要顯示任務狀態之任務的 ID。
範例
範例 列出特定任務的狀態
exec msdb.dbo.rds_task_status @task_id=5;
範例 列出特定資料庫和任務的狀態
exec msdb.dbo.rds_task_status @db_name='my_database', @task_id=5;
範例 列出特定資料庫上的所有任務及其狀態
exec msdb.dbo.rds_task_status @db_name='my_database';
範例 列出目前執行個體上的所有任務及其狀態
exec msdb.dbo.rds_task_status;
回應
rds_task_status
預存程序會傳回下列幾欄。
資料欄 | 描述 |
---|---|
|
任務的 ID。 |
|
任務類型取決於輸入參數,如下所示:
Amazon 會在資料庫完成下列還原任務後,建立資料庫的RDS初始快照:
|
|
與任務相關聯之資料庫的名稱。 |
|
任務的進度 (以百分比值表示)。 |
|
任務所花的時間 (以分鐘為單位)。 |
|
任務的狀態。可能的狀態如下:
|
|
任務的其他資訊。 如果備份或還原資料庫時發生錯誤,此欄會包含此錯誤的相關資訊。如需可能錯誤的清單及緩解策略,請參閱故障診斷。 |
|
上次更新任務狀態的日期和時間。進度每完成 5% 後,就會更新一次狀態。 |
|
建立任務的日期和時間。 |
S3_object_arn |
ARN 指出 Amazon S3 字首和正在備份或還原的檔案名稱。 |
|
呼叫備份任務時所指定之 |
KMS_master_key_arn |
用於加密 (用於備份) 和解密 (用於還原) ARN的KMS金鑰的 。 |
filepath |
不適用於原生備份與還原任務。 |
overwrite_file |
不適用於原生備份與還原任務。 |