Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: SQL Server 2022 (16.x)
Bu makalede, S3 uyumlu nesne depolama alanını yedekleme hedefi olarak kullanmak için gereken kavramlar, gereksinimler ve bileşenler tanıtilmektedir. Yedekleme ve geri yükleme işlevi, SQL Server'ın Azure Blob Depolama için URL'ye yedeklemesi ile yedekleme cihaz türü olarak çalışmaya kavramsal olarak benzerdir.
Desteklenen platformlar hakkında bilgi için bkz. S3 uyumlu nesne depolama
Genel Bakış
SQL Server 2022 (16.x) veri platformuna nesne depolama tümleştirmesi sunarak SQL Server'ı Azure Depolama'ya ek olarak S3 uyumlu nesne depolama ile tümleştirmenizi sağlar. Bu tümleştirmeyi sağlamak için SQL Server, S3 uyumlu nesne depolamanın herhangi bir sağlayıcısına bağlanmak için S3 REST API'sini kullanan bir S3 bağlayıcısını destekler. SQL Server 2022 (16.x), REST API kullanarak yeni S3 bağlayıcısı için destek ekleyerek mevcut BACKUP/RESTORE TO/FROM URL söz dizimini genişletir.
S3 uyumlu kaynaklara işaret eden URL'ler, S3 bağlayıcısının kullanıldığını belirtmek için önek olarak s3:// eklenir. ile başlayan s3:// URL'ler her zaman temel alınan protokolün olduğunu httpsvarsayar.
Parça numaraları ve dosya boyutu sınırlamaları
Verileri depolamak için S3 uyumlu nesne depolama sağlayıcısının, Azure Blob Depolama'daki blok bloblarına benzer şekilde parçaları olarak adlandırılan birden çok bloktaki dosyaları bölmesi gerekir.
Her dosya 10.000 parçaya kadar bölünebilir, her parça boyutu 5 MB ile 20 MB arasında değişir, bu aralık MAXTRANSFERSIZE parametresi aracılığıyla T-SQL BACKUP komutu tarafından denetlenür. varsayılan değeri MAXTRANSFERSIZE 10 MB'tır, bu nedenle her bölümün varsayılan boyutu 10 MB'tır. Bu değer maksimum aktarım boyutunu belirtir ancak gönderilen her bölümün 10 MB olduğunu garanti etmez. Parçanın boyutu, verilerin bitişikliği tarafından etkilenir. Örneğin, 2 MB veriye bitişik 4 MB veri varsa, 5 MB'lık minimum boyut bölümüne ulaşıldıktan sonra 6 MB gönderilir. Alternatif olarak, 12 MB bitişik dat varsa, maksimum boyuta (10 MB) kadar veri gönderilir ve kalan 2 MB sonraki bölümde gönderilir. S3 bağlayıcısı her zaman mümkün olan en büyük veri boyutunu göndermeye çalışır, ancak değeri asla aşmaz MAXTRANSFERSIZE .
Tek bir dosyanın desteklenen en büyük boyutu 10.000 parçanın * MAXTRANSFERSIZE sonucudur. Daha büyük bir dosyayı yedeklemek gerekirse, dosya en fazla 64 URL olacak şekilde bölünmeli veya şeritlenmelidir. Bir dosyanın desteklenen en büyük boyutu 10.000 parça * * MAXTRANSFERSIZE URL'dir.
Uyarı
MAXTRANSFERSIZE değerlerini değiştirmek için COMPRESSION kullanılması gereklidir.
S3 uç noktası için önkoşullar
S3 uç noktası aşağıdaki gibi yapılandırılmalıdır:
- TLS yapılandırılmalıdır. Tüm bağlantıların HTTP üzerinden değil HTTPS üzerinden güvenli bir şekilde iletileceği varsayılır. Uç nokta, SQL Server İşletim Sistemi Konağı'nda yüklü bir sertifika tarafından doğrulanır.
- İşlemi gerçekleştirmek için uygun izinlere sahip S3 uyumlu nesne depolamada oluşturulan kimlik bilgileri. Depolama katmanında oluşturulan kullanıcı ve parola,
Access Key IDveSecret Key IDolarak adlandırılır. S3 uç noktasında kimlik doğrulaması yapmak için her ikisine de ihtiyacınız var. - En az bir kova yapılandırıldı. Demetler SQL Server 2022'den (16.x) oluşturulamaz veya yapılandırılamaz.
Güvenlik
Yedekleme izinleri
SQL Server'ı S3 uyumlu nesne depolamaya bağlamak için biri SQL Server'da, diğeri de depolama katmanında olmak üzere iki izin kümesi oluşturulması gerekir.
SQL Server'da, BACKUP veya RESTORE komutları vermek için kullanılan kullanıcı hesabı, kimlik bilgisi izinlerini değiştirme ile db_backupoperator veritabanı rolünde olmalıdır.
Depolama katmanında:
- AWS S3'te özel bir rol oluşturun ve özel olarak hangi S3 API'sine erişim gerektiğini belirtin. Yedekleme ve geri yükleme şu izinleri gerektirir: ListBucket (Gözat), PutObject (Yazma - yedekleme için).
- S3 uyumlu diğer depolama alanında kullanıcının (
Access Key ID) hem ListBucket hem de WriteOnly izinleri olmalıdır.
İzinleri geri yükleme
Geri yüklenen veritabanı yoksa, kullanıcının RESTORE'yi yürütebilmesi için izinlere sahip CREATE DATABASE olması gerekir. Veritabanı varsa, RESTORE izinleri varsayılan olarak sysadmin ve dbcreator sabit sunucu rollerinin üyeleri ile veritabanının sahibi (dbo)'ne verilir.
GERI YÜKLEME izinleri, üyelik bilgilerinin sunucu tarafından her zaman kullanılabilir olduğu rollere verilir. Sabit veritabanı rolü üyeliği yalnızca veritabanı erişilebilir ve hasarsız olduğunda denetlenebildiğinden ve RESTORE yürütülürken her zaman böyle olmadığından, sabit veritabanı rolünün db_owner üyelerinin RESTORE izinleri yoktur.
Depolama katmanında:
- AWS S3'te özel bir rol oluşturun ve özel olarak hangi S3 API'sine erişim gerektiğini belirtin. Yedekleme ve geri yükleme şu izinleri gerektirir: ListBucket (Gözat), GetObject (Okuma - geri yükleme için).
- S3 uyumlu diğer depolama alanında kullanıcının (
Access Key ID) hem ListBucket hem de ReadOnly izinlerine sahip olması gerekir.
Desteklenen özellikler
BACKUP ve RESTORE için desteklenen özelliklere üst düzey genel bakış:
- Tek bir yedekleme dosyası URL başına en fazla 200.000 MiB olabilir (
MAXTRANSFERSIZE20 MB olarak ayarlanmıştır). - Yedeklemeler en fazla 64 URL arasında şeritlenebilir.
- Yansıtma desteklenir, ancak yalnızca URL'ler arasında yapılabilir. Hem URL hem de DISK kullanarak yansıtma desteklenmez.
- Sıkıştırma desteklenir ve önerilir.
- Şifreleme desteklenir.
- S3 uyumlu nesne depolama ile URL'den geri yüklemenin boyut sınırlaması yoktur.
- Veritabanını geri yüklerken ,
MAXTRANSFERSIZEyedekleme aşamasında atanan değere göre belirlenir. - URL'ler sanal konak veya yol tarzı formatında belirtilebilir.
-
WITH CREDENTIALdesteklenir. -
REGIONdesteklenir ve varsayılan değerdirus-east-1. -
MAXTRANSFERSIZE5 MB ile 20 MB arasında değişir. 10 MB, S3 bağlayıcısı için varsayılan değerdir.
Yedekleme için desteklenen bağımsız değişkenler
WITH Seçenekler |
S3 Uç Noktası | Notlar |
|---|---|---|
BLOCKSIZE |
Evet |
MAXTRANSFERSIZE Parça boyutunu belirler. |
BUFFERCOUNT |
Evet | |
COMPRESSION |
Evet | |
COPY_ONLY |
Evet | |
CREDENTIAL |
Evet | |
DESCRIPTION |
Evet | |
DIFFERENTIAL |
Evet | |
ENCRYPTION |
Evet | |
FILE_SNAPSHOT |
Hayı | |
MAXTRANSFERSIZE |
Evet | 5 MB (5.242.880 Bayt) ile 20 MB (20.971.520 Bayt) arasında varsayılan değer 10 MB 'tır (10.485.760 Bayt). |
MEDIADESCRIPTION |
Evet | |
MEDIANAME |
Evet | |
MIRROR TO |
Evet | Yalnızca başka bir URL MIRROR ile URL çalışır ve DISK desteklenmez. |
NAME |
Evet | |
NOFORMAT / FORMAT |
Evet | |
NOINIT / INIT |
Hayı | Ekleme desteklenmez. Bir yedeğin üzerine yazmak için WITH FORMAT kullanın. |
NO_CHECKSUM / CHECKSUM |
Evet | |
NO_TRUNCATE |
Evet | |
REGION |
Evet | Varsayılan değer us-east-1 olarak belirlenmiştir.
BACKUP_OPTIONS ile birlikte kullanılmalıdır. |
STATS |
Evet |
Geri yükleme için desteklenen bağımsız değişkenler
WITH Seçenekler |
S3 Uç Noktası | Notlar |
|---|---|---|
BLOCKSIZE |
Evet |
MAXTRANSFERSIZE Parça boyutunu belirler. |
BUFFERCOUNT |
Hayı | |
CHECKSUM / NO_CHECKSUM |
Evet | |
CREDENTIAL |
Evet | |
ENABLE_BROKER / ERROR_BROKER_CONVERSATIONS / NEW_BROKER |
Evet | |
FILE |
Hayı | Mantıksal adlar RESTORE FROM URL ile desteklenmiyor. |
FILESTREAM |
Evet | |
KEEP_CDC |
Evet | |
KEEP_REPLICATION |
Evet | |
LOADHISTORY |
Evet | |
MAXTRANSFERSIZE |
Hayı | |
MEDIANAME |
Evet | |
MEDIAPASSWORD |
Hayı | SQL Server 2012'nin önceki sürümlerinde alınan bazı yedeklemeler için gereklidir. |
MOVE |
Evet | |
PARTIAL |
Evet | |
PASSWORD |
Hayı | SQL Server 2012'nin önceki sürümlerinde alınan bazı yedeklemeler için gereklidir. |
RECOVERY / NORECOVERY / STANDBY |
Evet | |
REGION |
Evet | Varsayılan değer us-east-1 olarak belirlenmiştir.
RESTORE_OPTIONS ile birlikte kullanılmalıdır. |
REPLACE |
Evet | |
RESTART |
Evet | |
RESTRICTED_USER |
Evet | |
REWIND / NOREWIND |
Hayı | |
STATS |
Evet | |
STOP_ON_ERROR / CONTINUE_AFTER_ERROR |
Evet | |
STOPAT / STOPATMARK / STOPBEFOREMARK |
Evet | |
UNLOAD / NOUNLOAD |
Hayı |
Bölge
S3 uyumlu nesne depolama sağlayıcınız demet konumu için belirli bir bölgeyi belirleme olanağı sunabilir. Bu isteğe bağlı parametrenin kullanılması, belirli bir demetin hangi bölgeye ait olduğunu belirterek daha fazla esneklik sağlayabilir. Bu parametre WITH ile ya BACKUP_OPTIONS veya RESTORE_OPTIONS birlikte kullanılmasını gerektirir. Bu seçenekler için değerin JSON biçiminde bildirilmesi gerekir. Bu, S3 uyumlu bir depolama sağlayıcısının aynı evrensel URL'ye sahip olabileceği ancak birkaç bölgeye dağıtılabildiği senaryolara olanak tanır. Bu durumda, yedekleme veya geri yükleme komutu, URL'yi değiştirmeye gerek kalmadan belirtilen bölgelere işaret etti.
Hiçbir değer bildirilmemişse, us-east-1 varsayılan olarak atanır.
Yedekleme örneği:
WITH BACKUP_OPTIONS = '{"s3": {"region":"us-west-1"}}'
Geri yükleme örneği:
WITH RESTORE_OPTIONS = '{"s3": {"region":"us-west-1"}}'
Linux desteği
SQL Server, kullandığı HTTP REST API'lerinin istemcisini uygulamak için WinHttp kullanır. Uç nokta tarafından sunulan TLS sertifikalarının doğrulanması için işletim sistemi sertifika deposuna http(s) dayanır. Ancak, Linux üzerinde SQL Server CA, /var/opt/mssql/security/ca-certificates konumunda oluşturulacak önceden tanımlanmış bir konuma yerleştirilmelidir. Fakat bu klasörde yalnızca ilk 50 sertifika depolanabilir ve desteklenebilir. SQL Server işlemi başlatılmadan önce CA'nın yerinde olması gerekir.
SQL Server, başlatma sırasında klasördeki sertifikaları okur ve güven deposuna ekler.
Yalnızca süper kullanıcının klasöre yazabilmesi gerekirken, mssql kullanıcısının okuyabilmesi gerekir.
Desteklenmeyen özellikler
- Güvenli
httpolmayan bir URL ile S3 uyumlu nesne depolamaya yedekleme desteklenmez. Müşteriler S3 ana bilgisayarlarını birhttpsURL ile ayarlamakla sorumludur ve bu uç nokta SQL Server işletim sistemi konağına yüklenmiş bir sertifika tarafından doğrulanır. - S3 uyumlu nesne depolamaya yedekleme, SQL Server Express ve Gelişmiş Hizmetler ile SQL Server Express sürümlerinde desteklenmez.
Sınırlamalar
S3 uyumlu nesne depolama ile yedekleme ve geri yüklemenin geçerli sınırlamaları şunlardır:
- S3 Standart REST API'sinin geçerli sınırlaması nedeniyle, BACKUP T-SQL komutu çalışırken müşterinin S3 uyumlu nesne deposunda (devam eden çok parçalı karşıya yükleme işlemi nedeniyle) oluşturulan geçici kaydedilmemiş veri dosyaları, yedekleme hataları varsa kaldırılmaz. Bu kaydedilmemiş veri blokları, BACKUP T-SQL komutunun başarısız olması veya iptal olması durumunda S3 uyumlu nesne depolamada kalıcı olarak kalır. Yedekleme başarılı olursa, son yedekleme dosyasını oluşturmak için bu geçici dosyalar nesne deposu tarafından otomatik olarak kaldırılır. Bazı S3 uyumlu depolama sağlayıcıları, geçici dosyaları çöp toplayıcı sistemleri aracılığıyla işler.
- Toplam URL uzunluğu 259 karakterle sınırlıdır. Tam dize, bağlayıcı adı da dahil olmak üzere bu sınırlamada
s3://sayılır. Bu nedenle kullanılabilir sınır 254 karakterdir. Ancak, sorgu parametrelerinin olası girişine izin vermek için 200 karakterlik bir sınıra bağlı kalmanızı öneririz. - SQL kimlik bilgisi adı UTF-16 biçiminde 128 karakterle sınırlıdır.
- Gizli anahtar kimliğinin
:karakteri olmamalıdır.
Dizin yolu stili ve sanal ana bilgisayar stili
S3'e yedekleme, URL'nin hem yol stilinde hem de sanal konak stilinde yazılması için destekler.
Yol stili örneği: s3://<endpoint>:<port>/<bucket>/<backup_file_name>
Sanal konak örneği: s3://<bucket>.<domain>/<backup_file_name>
Örnekler
Kimlik Bilgileri Oluştur
- Kimlik bilgilerinin adı depolama yolunu sağlamalıdır ve depolama platformuna bağlı olarak bunun için birden çok standart vardır.
- IDENTITY her zaman S3 bağlayıcısı kullanılırken
'S3 Access Key'olmalıdır. - Erişim Anahtarı Kimliği ve Gizli Anahtar Kimliği iki nokta içermemelidir. Erişim Anahtarı Kimliği ve Gizli Anahtar Kimliği, S3 uyumlu nesne depolamada oluşturulan kullanıcı ve paroladır.
- Yalnızca alfasayısal değerlere izin verilir.
- Erişim Anahtarı Kimliği'nin S3 uyumlu nesne depolama üzerinde uygun izinlere sahip olması gerekir.
S3 uyumlu nesne depolama uç noktasıyla kimlik doğrulaması için sunucu düzeyinde kimlik bilgileri oluşturmak için CREATE CREDENTIAL kullanın.
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;
Ancak AWS S3 iki farklı URL standardını destekler.
-
S3://<BUCKET_NAME>.S3.<REGION>.AMAZONAWS.COM/<FOLDER>(varsayılan) S3://S3.<REGION>.AMAZONAWS.COM/<BUCKET_NAME>/<FOLDER>
AWS S3 için kimlik bilgilerini başarıyla oluşturmaya yönelik birden çok yaklaşım vardır.
-- 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
Veya
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
URL'ye yedekleme
Aşağıdaki örnek, nesne depolama uç noktasına birden çok dosya arasında şeritli tam veritabanı yedeklemesi gerçekleştirir:
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;
URL'den geri yükleme
Aşağıdaki örnek, nesne depolama uç noktası konumundan bir veritabanı geri yüklemesi gerçekleştirir:
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;
Şifreleme ve sıkıştırma seçenekleri
Aşağıdaki örnek, AdventureWorks2025 veritabanının şifreleme, 20 MB büyüklük ve sıkıştırma MAXTRANSFERSIZE şeklinde nasıl yedekleneceğini ve geri yükleneceğini göstermektedir:
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
Yedekleme ve geri yükleme için bölge kullanma
Aşağıdaki örnek AdventureWorks2025 kullanılarak REGION_OPTIONS veritabanının nasıl yedekleneceği ve geri yükleneceğini göstermektedir:
Her BACKUP / RESTORE komut içinde bölgeyi parametreleştirebilirsiniz. S3'e özgü bölge dizesini BACKUP_OPTIONS ve RESTORE_OPTIONS içinde not edin; örneğin, '{"s3": {"region":"us-west-2"}}'. Varsayılan bölge şeklindedir us-east-1. Basit bir örnek:
-- 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"}}'
Örneğin:
-- 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
İlgili içerik
- SQL Server'ı S3 uyumlu nesne depolama en iyi yöntemleri ve sorun giderme için URL'ye yedekleme
- SQL Server'ı Microsoft Azure Blob Depolama en iyi yöntemleri ve sorun giderme için URL'ye yedekleme
- SERTİFİKA OLUŞTUR (Transact-SQL)
- Microsoft Azure Blob Depolama URL'sine SQL Server yedeklemesi