Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för: SQL Server 2022 (16.x)
Den här artikeln beskriver de begrepp, krav och komponenter som krävs för att använda S3-kompatibel objektlagring som ett mål för säkerhetskopiering. Säkerhetskopierings- och återställningsfunktionerna liknar konceptuellt att arbeta med SQL Server-säkerhetskopiering till URL för Azure Blob Storage som en typ av säkerhetskopieringsenhet.
Information om stödda plattformar finns i leverantörer av S3-kompatibel objektlagring.
Översikt
SQL Server 2022 (16.x) introducerar objektlagringsintegrering till dataplattformen, så att du kan integrera SQL Server med S3-kompatibel objektlagring utöver Azure Storage. För att tillhandahålla den här integreringen har SQL Server stöd för en S3-anslutning, som använder S3 REST API för att ansluta till valfri provider av S3-kompatibel objektlagring. SQL Server 2022 (16.x) utökar den befintliga URL-syntaxen för säkerhetskopiering/återställning till/från genom att lägga till stöd för den nya S3-anslutningen via REST API:et.
URL:er som pekar på S3-kompatibla resurser prefixas med s3://
för att ange att S3-anslutningsappen används. URL:er som börjar med s3://
förutsätter alltid att det underliggande protokollet är https
.
Delnummer och filstorleksbegränsningar
För att lagra data måste den S3-kompatibla objektlagringsprovidern dela upp filer i flera block som kallas delar, ungefär som blockblobar i Azure Blob Storage.
Varje fil kan delas upp till 10 000 delar, varje delstorlek varierar från 5 MB till 20 MB. Det här intervallet styrs av T-SQL BACKUP-kommandot via parametern MAXTRANSFERSIZE. Standardvärdet MAXTRANSFERSIZE
för är 10 MB, därför är standardstorleken för varje del 10 MB. Även om det här värdet anger den maximala överföringsstorleken garanterar det inte att varje skickad del är 10 MB. Storleken på delen påverkas av dataanslutningen. Om det till exempel finns 4 MB data i anslutning till 2 MB data skickas 6 MB efter att ha nått den minsta storleksdelen på 5 MB. Om det finns 12 MB intilliggande data skickas data upp till maxstorleken (10 MB), och de återstående 2 MB skickas i nästa del. S3-kontaktören försöker alltid skicka den maximala möjliga datastorleken, men den överskrider aldrig värdet MAXTRANSFERSIZE
.
Den maximala storleken som stöds för en enskild fil är resultatet av 10 000 delar * MAXTRANSFERSIZE
. Om det krävs för att säkerhetskopiera en större fil, måste den delas upp eller fördelas över upp till 64 URL:er. Den slutliga maximala storleken på en fil som stöds är 10 000 delar * MAXTRANSFERSIZE
* URL:er.
Anmärkning
Användningen av COMPRESSION krävs för att ändra MAXTRANSFERSIZE
värden.
Förutsättningar för S3-slutpunkten
S3-slutpunkten måste konfigureras på följande sätt:
- TLS måste konfigureras. Det förutsätts att alla anslutningar överförs säkert via HTTPS, inte HTTP. Slutpunkten godkänns av ett certifikat som är installerat på SQL Server-värdsnoden.
- Autentiseringsuppgifter som skapats på den S3-kompatibla objektlagringen med rätt behörighet för att utföra åtgärden. Användaren och lösenordet som skapas på lagringsskiktet heter
Access Key ID
ochSecret Key ID
. Du behöver både autentisera dig mot S3-slutpunkten. - Minst en bucket har konfigurerats. Bucketar kan inte skapas eller konfigureras från SQL Server 2022 (16.x).
Säkerhet
Behörigheter för säkerhetskopiering
För att ansluta SQL Server till S3-kompatibel objektlagring måste två uppsättningar behörigheter upprättas, en på SQL Server och även på lagringsskiktet.
På SQL Server ska användarkontot som används för att utfärda säkerhetskopierings- eller ÅTERSTÄLLNINGskommandon finnas i db_backupoperator databasrollen med Ändra eventuella behörigheter för autentiseringsuppgifter .
På lagringsskiktet:
- I AWS S3 skapar du en anpassad roll och anger specifikt vilket S3 API som kräver åtkomst. Säkerhetskopiering och återställning kräver följande behörigheter: ListBucket (Bläddra), PutObject (Skriv – för säkerhetskopiering).
- I annan S3-kompatibel lagring måste användaren (
Access Key ID
) ha både ListBucket - och WriteOnly-behörigheter .
Återställ behörigheter
Om databasen som återställs inte finns måste användaren ha CREATE DATABASE
behörighet att köra RESTORE. Om databasen existerar, tilldelas behörigheter som standard till medlemmar i sysadmin
och dbcreator
fasta serverroller samt ägaren (dbo
) av databasen.
ÅTERSTÄLLNINGsbehörigheter ges till roller där medlemskapsinformation alltid är lättillgänglig för servern. Eftersom fast databasrollmedlemskap endast kan kontrolleras när databasen är tillgänglig och oskadad, vilket inte alltid är fallet när RESTORE körs, har medlemmar i den fasta databasrollen db_owner
inte ÅTERSTÄLLNINGsbehörighet.
På lagringsskiktet:
- I AWS S3 skapar du en anpassad roll och anger specifikt vilket S3 API som kräver åtkomst. Säkerhetskopiering och återställning kräver följande behörigheter: ListBucket (Bläddra), GetObject (Läs – för återställning).
- I annan S3-kompatibel lagring måste användaren (
Access Key ID
) ha både ListBucket - och ReadOnly-behörigheter .
Funktioner som stöds
Översikt på hög nivå över de funktioner som stöds för BACKUP
och RESTORE
:
- En enskild säkerhetskopieringsfil kan vara upp till 200 000 MiB per URL (med
MAXTRANSFERSIZE
värdet 20 MB). - Säkerhetskopior kan fördelas över högst 64 URL:er.
- Spegling stöds, men endast över URL:er. Spegling med både URL och DISK stöds inte.
- Komprimering stöds och rekommenderas.
- Kryptering stöds.
- Återställning från URL med S3-kompatibelt objektlagring har ingen storleksbegränsning.
- När du återställer en databas bestäms
MAXTRANSFERSIZE
av det värde som angavs under säkerhetskopieringen. - URL:er kan anges antingen i formatstil för virtuell värd eller sökväg.
-
WITH CREDENTIAL
stöds. -
REGION
stöds och standardvärdet ärus-east-1
. -
MAXTRANSFERSIZE
varierar från 5 MB till 20 MB. 10 MB är standardvärdet för S3-anslutningsappen.
Argument som stöds för säkerhetskopiering
WITH Alternativ |
S3-slutpunkt | Noteringar |
---|---|---|
BLOCKSIZE |
Y |
MAXTRANSFERSIZE avgör delstorleken. |
BUFFERCOUNT |
Y | |
COMPRESSION |
Y | |
COPY_ONLY |
Y | |
CREDENTIAL |
Y | |
DESCRIPTION |
Y | |
DIFFERENTIAL |
Y | |
ENCRYPTION |
Y | |
FILE_SNAPSHOT |
N | |
MAXTRANSFERSIZE |
Y | Från 5 MB (5 242 880 byte) till 20 MB (20 971 520 byte) är standardvärdet 10 MB (10 485 760 byte). |
MEDIADESCRIPTION |
Y | |
MEDIANAME |
Y | |
MIRROR TO |
Y | Fungerar bara med en annan URL, MIRROR med URL och DISK stöds inte. |
NAME |
Y | |
NOFORMAT / FORMAT |
Y | |
NOINIT / INIT |
N | Appendering stöds inte. Om du vill skriva över en säkerhetskopia använder du WITH FORMAT . |
NO_CHECKSUM / CHECKSUM |
Y | |
NO_TRUNCATE |
Y | |
REGION |
Y | Standardvärdet är us-east-1 . Måste användas med BACKUP_OPTIONS . |
STATS |
Y |
Argument som stöds för återställning
WITH Alternativ |
S3-slutpunkt | Noteringar |
---|---|---|
BLOCKSIZE |
Y |
MAXTRANSFERSIZE avgör delstorleken. |
BUFFERCOUNT |
N | |
CHECKSUM / NO_CHECKSUM |
Y | |
CREDENTIAL |
Y | |
ENABLE_BROKER / ERROR_BROKER_CONVERSATIONS / NEW_BROKER |
Y | |
FILE |
N | Logiska namn stöds inte med RESTORE FROM URL . |
FILESTREAM |
Y | |
KEEP_CDC |
Y | |
KEEP_REPLICATION |
Y | |
LOADHISTORY |
Y | |
MAXTRANSFERSIZE |
Y | |
MEDIANAME |
Y | |
MEDIAPASSWORD |
N | Krävs för vissa säkerhetskopior som gjorts i versioner före SQL Server 2012. |
MOVE |
Y | |
PARTIAL |
Y | |
PASSWORD |
N | Krävs för vissa säkerhetskopior som gjorts i versioner före SQL Server 2012. |
RECOVERY / NORECOVERY / STANDBY |
Y | |
REGION |
Y | Standardvärdet är us-east-1 . Måste användas med RESTORE_OPTIONS . |
REPLACE |
Y | |
RESTART |
Y | |
RESTRICTED_USER |
Y | |
REWIND / NOREWIND |
N | |
STATS |
Y | |
STOP_ON_ERROR / CONTINUE_AFTER_ERROR |
Y | |
STOPAT / STOPATMARK / STOPBEFOREMARK |
Y | |
UNLOAD / NOUNLOAD |
N |
Region
Din S3-kompatibla objektlagringsprovider kan erbjuda möjligheten att fastställa en specifik region för bucketplatsen. Användningen av den här valfria parametern kan ge större flexibilitet genom att ange vilken region som en viss bucket tillhör. Den här parametern kräver användning av WITH
tillsammans med antingen BACKUP_OPTIONS
eller RESTORE_OPTIONS
. Dessa alternativ kräver att värdet deklareras i JSON-format. Detta möjliggör scenarier där en S3-kompatibel lagringsprovider kan ha samma universella URL men distribueras i flera regioner. I det här fallet pekar kommandopunkten för säkerhetskopiering eller återställning till de angivna regionerna utan att du behöver ändra URL:en.
Om inget värde deklareras us-east-1
tilldelas som standard.
Exempel på säkerhetskopiering:
WITH BACKUP_OPTIONS = '{"s3": {"region":"us-west-1"}}'
Exempel på återställning:
WITH RESTORE_OPTIONS = '{"s3": {"region":"us-west-1"}}'
Linux-stöd
SQL Server använder WinHttp
för att implementera klienten för HTTP REST-API:er som används. Det förlitar sig på operativsystemets certifikatlager för validering av de TLS-certifikat som presenteras av http(s)
slutpunkten. SQL Server på Linux måste dock ca:en placeras på en fördefinierad plats för att skapas på /var/opt/mssql/security/ca-certificates
, endast de första 50 certifikaten kan lagras och stödjas i den här mappen. Certifikatet måste vara på plats innan SQL Server-processen startas.
SQL Server läser certifikaten från mappen under starten och lägger till dem i förtroendearkivet.
Endast superanvändare ska kunna skriva i mappen, medan mssql
användaren måste kunna läsa.
Funktioner som inte stöds
- Säkerhetskopiering till S3-kompatibel objektlagring med en osäker URL
http
stöds inte. Kunderna ansvarar för att konfigurera sin S3-server med enhttps
URL och slutpunkten verifieras av ett certifikat som är installerat på SQL Server OS. - Säkerhetskopiering till S3-kompatibel objektlagring stöds inte i SQL Server Express och SQL Server Express med Advanced Services-utgåvor.
Begränsningar
Följande är de aktuella begränsningarna för säkerhetskopiering och återställning med S3-kompatibel objektlagring:
- På grund av den nuvarande begränsningen av S3 Standard REST API tas de tillfälligt ogenomförda datafilerna som skapas i kundens S3-kompatibla objektlagring (på grund av en pågående uppladdningsåtgärd för flera delar) inte bort om det uppstår fel vid säkerhetskopieringen när T-SQL-kommandot BACKUP körs. Dessa ogenomförda datablock fortsätter att sparas i S3-kompatibel objektlagring om T-SQL-kommandot backup misslyckas eller avbryts. Om säkerhetskopieringen lyckas tas dessa temporära filer bort automatiskt av objektarkivet för att bilda den slutliga säkerhetskopieringsfilen. Vissa S3-kompatibla lagringsleverantörer hanterar tillfälliga filer via sitt system för skräpinsamling.
- Den totala URL-längden är begränsad till 259 tecken. Den fullständiga strängen räknas i den här begränsningen
s3://
, inklusive anslutningsnamnet. Den användbara gränsen är alltså 254 tecken. Vi rekommenderar dock att du håller dig till en gräns på 200 tecken för att möjliggöra en eventuell introduktion av frågeparametrar. - SQL-autentiseringsuppgifternas namn begränsas av 128 tecken i UTF-16-format.
- Hemligt nyckel-ID får inte innehålla
:
tecken.
Sökvägsformat och virtuellt värdformat
Att säkerhetskopiera till S3 stöder att URL:en kan skrivas i både sökvägstil och virtuell värdstil.
Exempel på sökvägsformat: s3://<endpoint>:<port>/<bucket>/<backup_file_name>
Exempel på virtuell värd: s3://<bucket>.<domain>/<backup_file_name>
Exempel
Skapa autentiseringsuppgifter
- Namnet på autentiseringsuppgifterna ska ange lagringssökvägen och det finns flera standarder för detta beroende på lagringsplattformen.
- Identiteten ska alltid vara
'S3 Access Key'
när du använder S3-anslutningsappen. - Åtkomstnyckel-ID och hemligt nyckel-ID får inte innehålla ett kolon. Åtkomstnyckel-ID och hemligt nyckel-ID är användaren och lösenordet som skapats på den S3-kompatibla objektlagringen.
- Endast alfanumeriska värden tillåts.
- Åtkomstnyckel-ID:t måste ha rätt behörigheter för S3-kompatibel objektlagring.
Använd CREATE CREDENTIAL för att skapa en autentiseringsuppgift på servernivå för autentisering med den S3-kompatibla objektlagringsslutpunkten.
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 stöder dock två olika url-standarder.
-
S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER>
(standardinställning) S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>
Det finns flera metoder för att skapa en autentiseringsuppgift för 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
Eller:
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
Säkerhetskopiera till URL
I följande exempel utförs en fullständig databassäkerhetskopia till objektlagringsslutpunkten, uppdelad över flera filer.
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;
Återställa från URL
I följande exempel utförs en databasåterställning från platsen för objektlagringsslutpunkten:
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;
Alternativ för kryptering och komprimering
I följande exempel visas hur du säkerhetskopierar och återställer AdventureWorks2022
databasen med kryptering, MAXTRANSFERSIZE
som 20 MB och komprimering:
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
Använd region för säkerhetskopiering och återställning
I följande exempel visas hur du säkerhetskopierar och återställer AdventureWorks2022
databasen med hjälp av REGION_OPTIONS
:
Du kan parametrisera regionen i varje BACKUP
/ RESTORE
kommando. Observera den S3-specifika regionsträngen BACKUP_OPTIONS
i och RESTORE_OPTIONS
, till exempel '{"s3": {"region":"us-west-2"}}'
. Standardregionen är us-east-1
. Ett enkelt exempel:
-- 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"}}'
Till exempel:
-- 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
Relaterat innehåll
- SQL Server säkerhetskopiering till URL för S3-kompatibla objektlagring: bästa praxis och felsökning
- Bästa praxis och felsökning för säkerhetskopiering av SQL Server till URL för Microsoft Azure Blob Storage
- SKAPA CERTIFIKAT (Transact-SQL)
- SQL Server-säkerhetskopiering till URL för Microsoft Azure Blob Storage