事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊適用於:SQL Server 2022 (16.x)
本文介紹使用 S3 相容物件儲存體作為備份目的地所需的概念、需求及元件。 備份和還原功能在概念上類似於使用 SQL Server 備份至作為備份裝置類型的 Azure Blob 儲存體 URL。
如需支援平台的資訊,請參閱 S3 相容物件儲存體提供者。
SQL Server 2022 (16.x) 為資料平台引進物件儲存體整合,讓您除了 Azure 儲存體之外,還可整合 SQL Server 與 S3 相容物件儲存體。 為提供這項整合,SQL Server 支援 S3 連接器,可使用 S3 REST API 來連接 S3 相容物件儲存體的任何供應商。 SQL Server 2022 (16.x) 使用 REST API 為新 S3 連接器新增支援,然後擴充現有的 BACKUP/RESTORE TO/FROM URL 語法。
指向 S3 相容資源的 URL 前面加上 s3://
時,表示正在使用 S3 連接器。 開頭為 s3://
的 URL 一律會假設基礎通訊協定是 https
。
若要儲存資料,S3 相容物件儲存體提供者必須分割檔案為多個區塊 (稱為組件),類似 Azure Blob 儲存體中的 Blob 儲存體。
每個檔案最多可分割為 10,000 個組件,每個組件大小範圍為 5 MB 到 20 MB,此範圍透過 T-SQL BACKUP 命令的 MAXTRANSFERSIZE 參數控制。 MAXTRANSFERSIZE
的預設值為 10 MB,所以每個組件預設的大小為 10 MB。
單一檔案支援大小上限的結果是 10,000 個組件 * MAXTRANSFERSIZE
,如果需要備份較大的檔案,參數必須分割/等量最多 64 個 URL。 檔案最終支援的大小上限是 10,000 個組件 * MAXTRANSFERSIZE
* URL。
注意
您必須使用 COMPRESSION 才能變更 MAXTRANSFERSIZE
值。
S3 端點必須設定如下:
Access Key ID
和 Secret Key ID
。 您需要這兩項資訊才能向 S3 端點進行驗證。若要連線 SQL Server 與 S3 相容物件儲存體,您必須建立兩組權限,一組在 SQL Server 上,另一組在儲存層上。
SQL Server 上用來發行 BACKUP 或 RESTORE 命令的使用者帳戶應該在包含變更任何認證權限的 db_backupoperator 資料庫角色中。
在儲存體層上:
Access Key ID
) 必須同時具有 ListBucket 和 WriteOnly 權限。如果還原的資料庫不存在,則使用者必須有 CREATE DATABASE
權限才能執行 RESTORE。 如果資料庫存在,則 RESTORE 權限預設為 sysadmin
和 dbcreator
固定伺服器角色的成員,以及資料庫的擁有者 (dbo
)。
RESTORE 權限提供給伺服器隨時可以取得其成員資格資訊的角色。 由於資料庫必須是可存取且未損毀才能夠檢查固定資料庫角色成員資格,但執行 RESTORE 時未必如此;因此,db_owner
固定資料庫角色的成員並沒有 RESTORE 權限。
在儲存體層上:
Access Key ID
) 必須同時有 ListBucket 和 ReadOnly 權限。BACKUP
和 RESTORE
支援功能的高階概觀:
MAXTRANSFERSIZE
設為 20 MB 時)。MAXTRANSFERSIZE
。WITH CREDENTIAL
。REGION
,且預設值為 us-east-1
。MAXTRANSFERSIZE
的範圍是 5 MB 到 20 MB。10 MB 是 S3 連接器的預設值。WITH 選項 |
S3 端點 | 備註 |
---|---|---|
BLOCKSIZE |
Y | MAXTRANSFERSIZE 會決定組件大小。 |
BUFFERCOUNT |
Y | |
COMPRESSION |
Y | |
COPY_ONLY |
Y | |
CREDENTIAL |
Y | |
DESCRIPTION |
Y | |
DIFFERENTIAL |
Y | |
ENCRYPTION |
Y | |
FILE_SNAPSHOT |
N | |
MAXTRANSFERSIZE |
是 | 從 5 MB (5,242,880 個位元組) 到 20 MB (20,971,520 個位元組),預設值是 10 MB (10,485,760 個位元組)。 |
MEDIADESCRIPTION |
Y | |
MEDIANAME |
Y | |
MIRROR TO |
Y | 只能搭配另一個 URL 使用,不支援包含 URL 和 DISK 的 MIRROR 。 |
NAME |
Y | |
NOFORMAT / FORMAT |
Y | |
NOINIT / INIT |
否 | 不支援附加。 若要覆寫備份,請使用 WITH FORMAT 。 |
NO_CHECKSUM / CHECKSUM |
Y | |
NO_TRUNCATE |
Y | |
REGION |
Y | 預設值為 us-east-1 。 必須與 BACKUP_OPTIONS 搭配使用。 |
STATS |
Y |
WITH 選項 |
S3 端點 | 備註 |
---|---|---|
BLOCKSIZE |
Y | MAXTRANSFERSIZE 會決定組件大小。 |
BUFFERCOUNT |
否 | |
CHECKSUM / NO_CHECKSUM |
是 | |
CREDENTIAL |
Y | |
ENABLE_BROKER / ERROR_BROKER_CONVERSATIONS / NEW_BROKER |
Y | |
FILE |
否 | RESTORE FROM URL 不支援邏輯名稱。 |
FILESTREAM |
Y | |
KEEP_CDC |
Y | |
KEEP_REPLICATION |
Y | |
LOADHISTORY |
Y | |
MAXTRANSFERSIZE |
Y | |
MEDIANAME |
Y | |
MEDIAPASSWORD |
否 | 需要 SQL Server 2012 之前的版本建立的部分備份。 |
MOVE |
Y | |
PARTIAL |
Y | |
PASSWORD |
否 | 需要 SQL Server 2012 之前的版本建立的部分備份。 |
RECOVERY / NORECOVERY / STANDBY |
Y | |
REGION |
Y | 預設值為 us-east-1 。 必須與 RESTORE_OPTIONS 搭配使用。 |
REPLACE |
Y | |
RESTART |
Y | |
RESTRICTED_USER |
Y | |
REWIND / NOREWIND |
否 | |
STATS |
是 | |
STOP_ON_ERROR / CONTINUE_AFTER_ERROR |
Y | |
STOPAT / STOPATMARK / STOPBEFOREMARK |
Y | |
UNLOAD / NOUNLOAD |
否 |
S3 相容物件儲存體提供者可以提供判斷貯體位置特定區域的能力。 使用此選用參數可指定特定貯體所屬區域,然後提供更多彈性。 此參數需要搭配 BACKUP_OPTIONS
或 RESTORE_OPTIONS
使用 WITH
。 這些選項需要以 JSON 格式宣告值。 這可讓 S3 相容儲存提供者可以有相同的通用 URL,但分散到數個區域的情況。 在此情況下,備份或還原命令點會指向指定的區域,而不需要變更 URL。
如果未宣告值,會指派 us-east-1
為預設值。
備份範例:
WITH BACKUP_OPTIONS = '{"s3": {"region":"us-west-1"}}'
還原範例:
WITH RESTORE_OPTIONS = '{"s3": {"region":"us-west-1"}}'
SQL Server 使用 WinHttp
實作所用的 HTTP REST API 用戶端。 這依賴 OS 憑證存放區驗證 http(s)
端點呈現的 TLS 憑證。 但 Linux 上的 SQL Server CA 必須放置在預先定義位置上,才能在 /var/opt/mssql/security/ca-certificates
建立,在此資料夾中只能儲存並支援前 50 個憑證。 啟動 SQL 伺服器處理序之前,CA 必須就緒。
啟動期間,SQL Server 會從資料夾讀取憑證,並新增憑證至信任存放區。
建議僅限進階使用者可以在資料夾中寫入,而 mssql
使用者必須能夠讀取。
http
URL 備份至 S3 相容物件儲存體。 客戶需負責使用 https
URL 設定 S3 主機,然後 SQL Server OS 主機上安裝的憑證會驗證此端點。以下是使用 S3 相容物件儲存體備份與還原的目前限制:
s3://
連接器名稱。 因此,可用限制為 254 個字元。 但考慮到可能採用查詢參數,我們建議遵守 200 個字元的限制。:
個字元。備份至 S3 支援以路徑樣式或虛擬主機樣式編寫 URL。
路徑樣式範例:s3://<endpoint>:<port>/<bucket>/<backup_file_name>
虛擬主機範例:s3://<bucket>.<domain>/<backup_file_name>
'S3 Access Key'
。使用 CREATE CREDENTIAL 建立伺服器層級認證,以使用 S3 相容的物件儲存體端點進行驗證。
USE [master];
CREATE CREDENTIAL [s3://<endpoint>:<port>/<bucket>]
WITH
IDENTITY = 'S3 Access Key',
SECRET = '<AccessKeyID>:<SecretKeyID>';
GO
BACKUP DATABASE [SQLTestDB]
TO URL = 's3://<endpoint>:<port>/<bucket>/SQLTestDB.bak'
WITH FORMAT /* overwrite any existing backup sets */
, STATS = 10
, COMPRESSION;
不過,AWS S3 支援兩種不同的 URL 標準。
S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER>
(預設值)S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>
有多種方式可成功建立 AWS S3 的認證。
-- S3 bucket name: datavirtualizationsample
-- S3 bucket region: us-west-2
-- S3 bucket folder: backup
CREATE CREDENTIAL [s3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup]
WITH
IDENTITY = 'S3 Access Key'
, SECRET = 'accesskey:secretkey';
GO
BACKUP DATABASE [AdventureWorks2022]
TO URL = 's3://datavirtualizationsample.s3.us-west-2.amazonaws.com/backup/AdventureWorks2022.bak'
WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
GO
或者,
CREATE CREDENTIAL [s3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup]
WITH
IDENTITY = 'S3 Access Key'
, SECRET = 'accesskey:secretkey';
GO
BACKUP DATABASE [AdventureWorks2022]
TO URL = 's3://s3.us-west-2.amazonaws.com/datavirtualizationsample/backup/AdventureWorks2022.bak'
WITH COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
GO
下列範例會等量跨多個檔案,執行完整資料庫備份至物件儲存體端點:
BACKUP DATABASE <db_name>
TO URL = 's3://<endpoint>:<port>/<bucket>/<database>_01.bak'
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_02.bak'
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_03.bak'
--
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_64.bak'
WITH FORMAT -- overwrite
, STATS = 10
, COMPRESSION;
下列範例會從物件儲存體端點位置執行資料庫還原:
RESTORE DATABASE <db_name>
FROM URL = 's3://<endpoint>:<port>/<bucket>/<database>_01.bak'
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_02.bak'
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_03.bak'
--
, URL = 's3://<endpoint>:<port>/<bucket>/<database>_64.bak'
WITH REPLACE -- overwrite
, STATS = 10;
下列範例示範如何備份和還原加密、MAXTRANSFERSIZE
為 20 MB 並壓縮的 AdventureWorks2022
資料庫:
CREATE MASTER KEY ENCRYPTION BY PASSWORD = <password>;
GO
CREATE CERTIFICATE AdventureWorks2022Cert
WITH SUBJECT = 'AdventureWorks2022 Backup Certificate';
GO
-- Backup database
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022_Encrypt.bak'
WITH FORMAT, MAXTRANSFERSIZE = 20971520, COMPRESSION,
ENCRYPTION (ALGORITHM = AES_256, SERVER CERTIFICATE = AdventureWorks2022Cert)
GO
-- Restore database
RESTORE DATABASE AdventureWorks2022
FROM URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022_Encrypt.bak'
WITH REPLACE
下列範例示範如何使用 REGION_OPTIONS
備份和還原 AdventureWorks2022
資料庫:
您可以將每個 BACKUP
/ RESTORE
命令中的區域參數化。 留意 BACKUP_OPTIONS
和 RESTORE_OPTIONS
中的 S3 特定區域字串,例如:'{"s3": {"region":"us-west-2"}}'
。 預設區域是 us-east-1
。 以下是簡單的範例:
-- Backup Database
BACKUP DATABASE AdventureWorks2022
TO URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022.bak'
WITH BACKUP_OPTIONS = '{"s3": {"region":"us-west-2"}}'
-- Restore Database
RESTORE DATABASE AdventureWorks2022
FROM URL = 's3://<endpoint>:<port>/<bucket>/AdventureWorks2022.bak'
WITH
MOVE 'AdventureWorks2022'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022.mdf'
, MOVE 'AdventureWorks2022_log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022.ldf'
, RESTORE_OPTIONS = '{"s3": {"region":"us-west-2"}}'
例如:
-- S3 bucket name: datavirtualizationsample
-- S3 bucket region: us-west-2
-- S3 bucket folder: backup
CREATE CREDENTIAL [s3://datavirtualizationsample.s3.amazonaws.com/backup]
WITH
IDENTITY = 'S3 Access Key'
, SECRET = 'accesskey:secretkey';
GO
BACKUP DATABASE [AdventureWorks2022]
TO URL = 's3://datavirtualizationsample.s3.amazonaws.com/backup/AdventureWorks2022.bak'
WITH
BACKUP_OPTIONS = '{"s3": {"region":"us-west-2"}}' -- REGION AS PARAMETER)
, COMPRESSION, FORMAT, MAXTRANSFERSIZE = 20971520;
GO
RESTORE DATABASE AdventureWorks2022_1
FROM URL = 's3://datavirtualizationsample.s3.amazonaws.com/backup/AdventureWorks2022.bak'
WITH
MOVE 'AdventureWorks2022'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_1.mdf'
, MOVE 'AdventureWorks2022_log'
TO 'C:\Program Files\Microsoft SQL Server\MSSQL16.MSSQLSERVER\MSSQL\DATA\AdventureWorks2022_1.ldf'
, STATS = 10, RECOVERY
, REPLACE, RESTORE_OPTIONS = '{"s3": {"region":"us-west-2"}}'; -- REGION AS PARAMETER)
GO
事件
3月31日 下午11時 - 4月2日 下午11時
最大的 SQL、網狀架構和 Power BI 學習事件。 3 月 31 日 - 4 月 2 日。 使用程式代碼 FABINSIDER 來節省 $400 美元。
立即註冊訓練
認證
Microsoft Certified: Azure Database Administrator Associate - Certifications
使用 Microsoft PaaS 關聯式資料庫供應項目管理用於雲端、內部部署和混合關聯式資料庫的 SQL Server 資料庫基礎結構。
文件
備份至 URL 最佳做法和 S3 相容物件儲存體的疑難排解 - SQL Server
瞭解從 SQL Server 備份及還原至 S3 相容物件儲存體的最佳做法和疑難排解提示。
使用 S3-Compatible 物件記憶體備份和還原 SQL Server - SQL Server
瞭解 SQL Server 備份至 S3 相容物件儲存體及從 S3 相容的物件儲存體還原,包括使用 S3 相容物件儲存體來儲存 SQL Server 備份的優點。
快速入門:了解如何將備份寫入至與 S3 相容的物件儲存體以及從中還原。