Nová verze SQL Azure a zálohování databází

Před pár dny byla uvolněna nová verze SQL Azure databáze. Novinek je celá řada, jako například:

  • Možnost více LiveID účtu spravujících SQL servery pro subskripci
  • Podpora pro nasazení nové verze schématu a extrakci existujícího schématu ve formě Data-Tier Application (.dacpac) přímo z portálu pro správu (dosud pouze z SQL Management Studia)
  • Inovované UI pro správu tabulek, pohledů a uložených procedur z portálu

Kompletní přehled novinek najdete zde – část 1 a část 2.

Nejzajímavější novinkou je ale možnost exportu/importu dat do Azure Storage. U té bych se zastavil o něco podrobněji. Databáze v SQL Azure jsou zálohovány proti všem možným druhům selhání, ale dosud chyběla možnost obnovy do určitého časového okamžiku (point-in-time restore). Tato možnost bohužel není ani v nové verzi, ale blýská se na lepší časy. Na výše uvedeném linku najdete následující obrázek pruhu nástrojů:

Pokud zajásáte při pohledu na tlačítko Restore, musím zchladit optimismus. Jedná se pravděpodobně o uniklou obrazovku z připravované příští verze (někdy koncem roku), což je samo o sobě poněkud pikantní. Nicméně k dispozici je možnost exportu a importu databázového schématu i dat do úložiště Azure Storage, zatím v podobě CTP verze. Schéma služby, která tuto funkčnost implementuje, najdete zde.

Výsledek je soubor .bacpac, který lze používat i lokálně a vytvářet tak z vašeho počítače exporty i importy SQL databází běžících v SQL Azure i na vašem SQL serveru – příslušný nástroj je rovněž v CTP verzi popsaný zde.

Pokud jste chtěli zálohovat SQL Azure do úložiště Azure Storage, bylo to dosud možné dvojím způsobem:

  1. Spustit výše zmíněný nástroj u sebe na počítači a získaný soubor pak uploadovat do Azure Storage (nevýhoda – platba za stažená data odpovídající přibližně velikosti databáze)
  2. Spuštění téže utility ve Windows Azure a nakopírování výsledku do Azure Storage v rámci serverovny (nevýhoda – nutnost platit hodiny běhu virtuálního počítače provádějícího celou operaci)

Nyní tedy můžete celou operaci spustit bez těchto dodatečných komplikací a nákladů přímo v cloudu. Považuji ovšem za svoji povinnost upozornit na jedno úskalí – nejedná se o transakční zálohu, ale o sadu export operací, tudíž takto získané soubory nemusí být transakčně konzistentní (podobně jako u všech ostatních variant exportu/importu). K tomu lze přistoupit třemi způsoby:

  1. Naučit se s tím žít – vzhledem k tomu, že je pravděpodobné, že tento export nikdy nepoužijete pro skutečnou obnovu, je šance reálných problémů malá a lze je zpravidla vyřešit menší editací dat
  2. Zastavit na nezbytnou dobu operace nad databází – buď operaci provádět v noci, kdy je šance uživatelské aktivity minimální, anebo v definovanou dobu veškeré uživatele násilně odpojit
  3. Používat transakčně konzistentní kopii databáze – tato možnost je jednoznačně nejlepší. Vytvoříte transakčně konzistentní kopii databáze (detaily zde). K této kopii nikdo nepřistupuje a můžete ji exportovat bez obav o transakční konzistenci. Nevýhodou jsou zvýšené náklady – za kopii platíte jako za další databázi, a to minimálně 1 den (tedy cca 0,30 USD/1 GB/1 den)

Doufám, že novou funkčnost oceníte. Do budoucna se snad můžeme těšit na opravdovou transakční obnovu do časového bodu.

Michael