sql >> Databáze >  >> RDS >> Sqlserver

SQL Server 2016 – Úvod do Stretch databáze

Ne, to není úsek, který hledáte

Počínaje SQL Serverem 2016 budete mít možnost ukládat části databáze do cloudu. Tato nová schopnost je známá jako Stretch Database a tato funkce bude přínosná pro ty, kteří potřebují uchovávat transakční data po dlouhou dobu, a pro ty, kteří chtějí ušetřit peníze za úložiště. Možnost bezproblémové migrace dat do cloudu Microsoft Azure vám poskytne možnost archivovat data, aniž byste museli měnit způsob, jakým vaše aplikace data zpracovávají.

V SQL Server 2016 Community Technology Preview 2 (CTP2) migruje Stretch Database celé tabulky. Pokud je vaše databáze již nastavena tak, aby ukládala archivní data do samostatných tabulek než aktuální data, budete moci archivovaná data snadno migrovat do Azure. Jakmile povolíte Stretch Database, tiše migruje vaše data do Azure SQL Database. Stretch Database využívá výpočetní výkon v Azure ke spouštění dotazů na vzdálená data přepsáním dotazu. V plánu dotazů to uvidíte jako operátor „vzdáleného dotazu“.

Snadný způsob, jak identifikovat databáze a tabulky, které jsou způsobilé pro aktivaci Stretch, je stáhnout a spustit SQL Server 2016 Upgrade Advisor a spustit Stretch Database Advisor. Aaron Bertrand (@AaronBertrand) o tom nedávno napsal:

  • Identifikujte tabulky kandidátů pro SQL Server 2016 Stretch Database

Omezení pro databázi Stretch

Ne všechny tabulky budou způsobilé pro aktivaci Stretch. Některé vlastnosti tabulek, typy dat a sloupců, omezení a indexy nejsou podporovány, například:

  • Paměťově optimalizované a replikované tabulky
  • Tabulky, které obsahují data FILESTREAM, používají Sledování změn nebo Změna dat
  • Datové typy, jako je časové razítko, sql_variant, XML, geografie nebo sloupce, které jsou vždy šifrovány
  • Zkontrolujte a výchozí omezení nebo omezení cizího klíče, která odkazují na tabulku
  • XML, fulltextové, prostorové, seskupené úložiště sloupců a indexovaná zobrazení, která odkazují na tabulku s podporou roztažení
  • Nemůžete spouštět příkazy UPDATE nebo DELETE ani spouštět operace CREATE INDEX nebo ALTER INDEX v tabulce s povolenou funkcí Stretch

Úplný seznam omezení najdete na:Požadavky a omezení pro Stretch Database.

Nastavení databáze Stretch Database

Začít není složitý úkol. Budete potřebovat účet Azure a poté povolit Stretch Database na instanci.

Chcete-li povolit Stretch Database na instanci, spusťte:

EXEC sys.sp_configure N'remote data archive', '1';
RECONFIGURE;
GO

Pro tuto ukázku použiji databázi AdventureWorks2014 na instanci SQL Server 2016 CPT2. Začnu vytvořením nové tabulky:

USE [AdventureWorks2014];
GO
 
CREATE TABLE dbo.StretchTest
(
  FirstName VARCHAR(50),
  LastName  VARCHAR(50)
);
GO

A pak naplním testovací tabulku StretchTest nějakými údaji:

USE [AdventureWorks2014];
GO
 
INSERT INTO dbo.StretchTest(FirstName, LastName)
VALUES('Paul', 'Randal'),  ('Kimberly', 'Tripp'),('Jonathan', 'Kehayias'),
      ('Erin', 'Stellato'),('Glenn', 'Berry'),   ('Tim', 'Radney');
GO

Nyní mám tabulku, kterou mohu roztáhnout na cloud Microsoft Azure. K tomu použiji GUI kliknutím pravým tlačítkem myši na AdventureWorks2014, výběrem Úkoly a výběrem Enable Database for Stretch.

Otevře se průvodce Povolit databázi pro roztažení, jak je uvedeno níže:

Kliknu na další:

A přihlaste se ke svému účtu Microsoft Azure:

Poté jsem vyzván k ověření, který účet chci použít:

Poté vyberu, které umístění Azure chci použít, a určím přihlašovací jméno a heslo správce. Když to uděláte, nezapomeňte si poznamenat uživatelské jméno a heslo správce, protože je budete v budoucnu potřebovat, abyste se mohli znovu připojit k Azure SQL Database, pokud budete muset databázi obnovit.

Poté kliknu na další:

A klikněte na Dokončit a databáze se začne zajišťovat pro Azure SQL Database Server.

Právě jsem vytvořil definici zabezpečeného propojeného serveru na svém místním serveru, který má jako koncový bod vzdálenou databázi Azure SQL. Mohu to zobrazit v objektech serveru, propojených serverech a také ve svém účtu Azure pod databázemi SQL. Všimněte si, že tento propojený server mohou používat pouze systémové procesy; přihlášení uživatelů nemohou zadávat dotazy prostřednictvím propojeného serveru do vzdáleného koncového bodu.

Nyní, když je Stretch Database povolena pro instanci a pro databázi AdventureWorks2014, mohu nyní roztáhnout svou novou tabulku. Abych roztáhl tabulku na Azure, musím upravit tabulku a povolit vzdálený archiv dat.

USE [AdventureWorks2014];
GO
 
ALTER TABLE [StretchTest]
ENABLE REMOTE_DATA_ARCHIVE WITH ( MIGRATION_STATE = ON );
GO

Kromě nových funkcí s SQL Server 2016 existují také některé nové DMV. Chcete-li sledovat migraci dat do Azure, můžete se zeptat na sys.dm_db_rda_migration_status. Když jsem se dotázal na DMV po povolení vzdáleného archivu dat, viděl jsem, že bylo migrováno 6 řádků:

Zálohování a obnova databáze Stretch

V současné době v SQL Server 2016 CTP2, když je zálohována databáze, která podporuje Stretch, je vytvořena mělká záloha, která nezahrnuje data, která byla migrována do databáze Azure SQL. Očekává se, že s vydáním RTM SQL Server 2016 zálohování databáze s podporou Stretch vytvoří hloubkovou zálohu, která bude obsahovat místní i roztažená data.

Při obnově databáze, která má povolenou funkci Stretch, budete muset znovu připojit místní databázi ke vzdálené Azure SQL Database. To provedete spuštěním uložené procedury sys.sp_reauthorize_remote_data_archive jako db_owner.

Pokud nyní zálohuji databázi AdventureWorks2014 s podporou Stretch a obnovím ji, nebudu již moci dotazovat tabulku StretchTest, dokud se znovu nepřipojím k Azure SQL Database spuštěním:

USE [AdventureWorks2014];
GO
 
EXEC sys.sp_reauthorize_remote_data_archive @azure_username, @azure_password;
GO

Jakmile se znovu připojím, zobrazí se mi zpráva podobná té níže a pak se mohu znovu dotazovat na natažená data:

Kopírování vzdálené databáze 'RDAAdventureWorks201467B6D9D4-E8E0-4C54-B3EF-7C2D3F1326C4' do vzdálené databáze 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04- /2868it kompletní. /2868it. br />Vzdálená databáze 'RDAAdventureWorks2014660B555C-8DD1-4750-9A04-2868CD1C646D' dokončila kopírování a je nyní online.

Při obnově databáze s podporou Stretch do jiné instance musí mít tato instance "povolen vzdálený archiv dat". Jakmile obnovíte databázi a povolíte „vzdálený archiv dat“, stačí se znovu připojit k Azure SQL Database spuštěním uložené procedury sys.sp_reauthorize_remote_data_archive.

Zálohy pro Azure SQL Databases pro základní, standardní a prémiové úrovně služeb se pořizují každou hodinu. Doba uchování zálohy se liší v závislosti na úrovni úrovně služeb. V době psaní tohoto článku je to pro základní 7 dní, standardní 14 dní a prémiové 35 dní. Azure SQL Databases můžete obnovit pomocí webového portálu Microsoft Azure.

Zrušit migraci dat

Chcete-li migrovat data zpět do místního úložiště z Azure SQL Database, budete muset vytvořit novou místní tabulku se stejným schématem jako tabulka s podporou roztažení. Poté musíte zkopírovat data z tabulky s podporou Stretch do nové místní tabulky. Jakmile jsou data zkopírována, zrušíte tabulku s povoleným roztažením a přejmenujete novou místní tabulku na název tabulky s povoleným roztažením, která byla právě zrušena.

Stretch pro databázi můžete zakázat až poté, co byly zrušeny všechny tabulky s povoleným Stretch. Pokud zrušíte databázi povolenou pro Stretch, místní databáze bude odstraněna, ale vzdálená data nikoli; budete muset zrušit vzdálenou databázi z portálu pro správu Azure.

Shrnutí

Stretch Database je snadný způsob migrace archivních dat do Microsoft Azure, pokud to vaše databáze podporuje. V současné době v SQL Server 2016 CTP2 existuje mnoho omezení s vlastnostmi tabulek, dat a sloupců, typy dat a sloupců, omezení a indexy. Pokud vás tato omezení neomezují, pak je Stretch Database jednoduchý způsob, jak migrovat historická data do Azure SQL Database a uvolnit cenné místní úložiště. Správa záloh bude o něco složitější, protože vaše data budou rozdělena mezi místní a v cloudu.

Těším se, až budou tato omezení ve verzi RTM zrušena, a jsem si jistý, že mnozí z vás budou moci tuto skvělou funkci využít.


  1. Jak získám své uživatelské jméno a heslo pro MySQL?

  2. Jarní konference FLOSS UK

  3. Jak změnit database_url na heroku?

  4. Jak zobrazit protokoly transakcí v SQL Server 2008