書籍転載:Windows Azure Platform開発入門

SQL Azureバックアップ入門
―― 第4章 SQL Azure 4.8 ――

WINGS プロジェクト 大和屋 貴仁(監修:山田 祥寛)
2012/01/16

本コーナーは、日経BP社発行の書籍『Windows Azure Platform開発入門』の中から、特にInsider.NET読者に有用だと考えられる章や個所をInsider.NET編集部が選び、同社の許可を得て転載したものです。基本的に元の文章をそのまま転載していますが、レイアウト上の理由などで文章の記述を変更している部分(例:「上の図」など)や、図の位置などを本サイトのデザインに合わせている部分が若干ありますので、ご了承ください。『Windows Azure Platform開発入門』の詳細は「目次情報ページ」や日経BP社のサイトをご覧ください。

ご注意:本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。

4.8 バックアップ

 SQL Azureは、三重化されていて不具合が発生しても自動的に正常なデータベースに切り替わります。データ破損などが発生した場合もマイクロソフトがデータリストアの対応を実施し復旧させます。そのため、SQL Azureのバックアップ計画のメインは、アプリケーションバグやヒューマンエラーが原因で発生するデータ不整合への対応や、何らかの理由で数日前の状態を復元させられるようにすることです。

 SQL Serverで提供されているフルバックアップ(トランザクションログバックアップ、差分バックアップも含む)機能は提供されていません。代わりにSQL Azure独自の機能として、Database Copyが提供され、point to restore機能の提供が計画されています。SQL Azure、SQL Server両方で使用できる方法として、新たにDAC Framework で実装されたデータのインポートとエクスポート機能がCTP版で提供されています。

【Column】DAC Framework

Data-tier Application(DAC) Framework は、SQL Azure とSQL Server間のデータ移行や、相互にデータをやり取りするのに使用することができます。SQL Server 2008 R2に搭載されたDAC が基となり、活用方法が広がっています。ユーザーは、DAC Framework を使用してアプリケーションを実装することもできます。SQL Azure からデータをインポートしたり、エクスポートする機能を実装する際に使用する主流の技術となっていくようです。SQL Server Management Studio 2012 やWindows Azure 管理ポータルのインポートとエクスポートなどに使用されています。

4.8.1 データベースをコピーするDatabase Copy

 SQL Azure Database Copyは、データベースを新しい別のデータベースにコピーしてバックアップをする方法です。コピーを実行すると非同期でコピー処理をし、コピー完了時点のデータまでをトランザクション処理でコピーします。簡単にデータベースをコピーできるので、アプリケーションの評価用環境を簡単に構築できます。データのバックアップとしても使用できますが、データベースが増えるため課金額が増え、バックアップ運用としては実用的ではありません。

 masterデータベースに対してT-SQLを発行するとデータベースのコピーが始まります。同一SQL Azureサーバー内もしくは、同一データセンター内の別のサーバー内にデータベースをコピーすることができます。コピー状況は監視用のT-SQLを発行することで確認することができます。

 同一データセンター内の別のSQL Azureサーバーにデータベースをコピーするには、コピー先SQL Azure サーバーにコピー元のDBOの所有者と同じ名前、パスワードのログインを用意し、dbmanagerロールを付与します。コピー先のSQL Azure サーバーのmasterデータベースに対してT-SQL を発行することでデータベースのコピーができます。コピー完了後、データベースユーザーとコピー先のログインを紐付けし直します。

--データベースのコピーを実行するT-SQL
CREATE DATABASE コピー先データベース名
AS COPY OF [コピー元SQL Azureサーバー名.]コピー元データベース名
--例
--CREATE DATABASE copyTtestDatabase
-- AS COPY OF testServer1.testDatabase
--GO

--データベースのコピー状況の確認
SELECT * FROM sys.dm_database_copies
リスト4.8 SQL Azure Database Copyの実行と動作状況の確認


【Column】point to restore

point to restoreは、過去2 週間以内の日時を指定すると、指定した日時のデータベースを復元させることができる機能です。自動的にSQL Azure でバックアップを取り続けるため、ユーザーは事前準備や事前タスクなしで使用できます。本機能が提供された場合、データの不整合対応目的のデータバックアップの必要性が薄まります。Tech Ed North America 2011のセッション「Microsoft SQL Azure Overview: Tools,Demos and Walkthroughs of Key Features」で紹介されました。そのセッションでは、次期リリースでCTP 版として提供されることが予告されていましたが、その後、リリース予定などの情報は発表されていません。セッション動画はhttp://channel9.msdn.com/で公開されています。

4.8.2 インポートとエクスポート

 インポートとエクスポート機能は、スキーマとデータのバックアップ機能です。本機能を使用すると、拡張子dacpac のXML 形式の物理ファイルにバックアップすることができます。dacpac ファイルは、SQL Server とも互換性があり、SQL Serverにインポートすることもできますし、SQL ServerからのエクスポートデータをSQL Azure にインポートすることも可能です。

 SQL Azure では、2種類のインポートとエクスポートが提供されています。1つ目は、SQL AzureからWindows AzureストレージサービスのBLOB に直接dacpac をエクスポートしたり、BLOB からSQL Azure にインポートしたりできる機能です。この機能は、Windows Azure管理ポータルから画面操作が可能です。

 2 つ目は、SQL Azureからローカルクライアントにdacpac をダウンロードしたり、ローカルクライアントのdacpac からSQL Azure に新しいデータベースを配置したりできる機能です。この機能は、SQL Azure管理ポータルにデータベース名を指定せずにログインすると表示されるメニューから画面操作できます。

SQL AzureからBLOBへのエクスポート

 SQL Azure データベースからWindows Azure ストレージサービスのBLOB にエクスポートする手順を説明します。

(1)Windows Azure管理ポータルでSQL Azureサーバーを選択する

 Windows Azure 管理ポータルにログインし、左下のメニューから[データベース]を選択します。左上のツリーからSQL Azureサーバーを選択します。

(2)データベースのエクスポートダイアログを開く

 リボンの[エクスポート]をクリックします。

図4.24 SQL Azure データベースのエクスポート

(3)エクスポートに必要な情報の設定

 データベースの認証情報と、エクスポート先のBLOB の認証情報を入力します。現在は、CTP 版のため、GUI などで選択できないため別途入力情報を用意しておく必要があります。新しいBLOB URL には、ファイルパスを指定する必要があり、.bacpacまで入力してください。[完了]をクリックすると、エクスポートが始まります。

図4.25 [データベースのストレージアカウントへのエクスポート]ダイアログ

(4)エクスポート状況の確認ダイアログの表示

 エクスポート状況を確認するため、リボンの[状態]をクリックします。

図4.26 SQL Azure データベースのエクスポートの[状態]ボタン

(5)認証情報の設定

 データベースのログインとパスワードを入力します。

 状態画面が表示され、エクスポートの進捗状況を確認できます。

図4.27 [インポート/エクスポート要求の状態]ダイアログ

SQL Azureからローカル環境へのエクスポート

 SQL Azureデータベースからローカルクライアントにスキーマとデータをバックアップする手順を説明します。

(1)SQL Azure管理ポータルにログインする

 SQL Azure 管理ポータルのURL は、https:// < SQL Azure サーバー名> .database.windows.net です。[Database]はブランクのままにし、[User]と[Password]を入力し[Log On]をクリックします。

図4.28 SQL Azure 管理ポータルログイン画面

(2)データベースのExtract画面を表示する

 左サイドメニューの[Database Life Cycle]をクリックし、中央部からエクスポートしたいデータベースを選択します。エクスポートするためにリボンの[Extract]をクリックします。

図4.29 SQL Azure 管理ポータルの[Extract]ボタン

(3)エクスポート情報を入力し、エクスポートする

 [Application Name]、[Version]、[Description]を必要に応じて修正し、[Save]をクリックします。保存ダイアログが表示されるので、任意の場所に保存します。

図4.30 SQL Azure 管理ポータルのExtract 画面

 以上で、データベースのスキーマとデータをdacpac 形式でローカルクライアントに保存できました。dacpac は、XMLファイル群(データはJSON形式)をZIP 形式で圧縮したファイルです。拡張子dacpac をzip に変更し解凍すると、XMLファイル一覧を参照することができます。XMLファイルなので、テキストで編集することも可能です。

 以上がSQL Azureでのバックアップに関する解説です。次回は、SQL Azure Data Syncについて解説します。end of article

インデックス・ページヘ 「Windows Azure Platform開発入門」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間