Windows Azure

  1. AWS上でフルバックアップを取得する
  2. Azure上で、[recovery]無しでフルバックアップをリストアする
    参考:MSDNライブラリ[データベースのバックアップの復元]
  3. AWS上でログバックアップを取得する
  4. Azure上で[recovery]無しでログバックアップをリストアする
  5. 3~4にかかる時間が十分に短くなるまで繰り返す
    スクリプト化すると良いかも。
  6. アプリケーションをオフラインにする
  7. AWS上でログバックアップを取得する
  8. Azure上で[with recovery]でログバックアップをリストアする
  9. アプリケーションの向き先をAzureに変更する
  10. アプリケーションをオンラインにする

3~5は、ログシッピングで自動化することもできます。

How to migrate SQL Server databases from AWS to Windows Azureを意訳した投稿です。

AzureVM

Windows Azure Virtual Machine上のSQL ServerのTempDBのデータファイル数とディスク数はいくつにするのがベストなのかをWindows Azure CATチームがBlogに「Scaling-out SQL Server disks and data files on Windows Azure Virtual Machines…a real-world example」投稿してくれています。詳細や検証データは、元記事を参照してください。

前提条件

使用する仮想マシンは、エクストララージ(XL / 8コア)でWindows Server 2008 R2とSQL Server 2012の組み合わせの仮想マシンです。ストレージアカウントは、デフォルト設定でジオレプリケーションを有効にしたままにしています。

制限事項

Windows Azure Storage Scalability and Performance Targets]によると、Windows Azure ストレージBlobは、書き込み性能として、[最大60MB/秒、最大500トランザクション/秒]と定義されています。

結論

データファイル数は8個に分割し、4つのディスクに2つずつ配置するのがベストなDisk I/O性能となります。

この設定でDisk以外のところに性能ボトルネックが発生するので、Disk数を増やしても効果が無いことがわかりました。

Windows Azure

SQL Server 2012 SP1 CU2で、バックアップ先/リストア元のストレージとしてWindows Azureストレージを選択できるようになりました。
T-SQLかSMO(Server Management Objects)で実行できます。

オンプレミスのSQL Server向けの機能強化ですが、Windows Azure VM上のSQL Serverでも使用できます。

前提条件

SQL Server 2012 SP1 CU2をインストールしている必要があります。
ダウンロードは、ここからできます。
当然、Windows Azureのアカウントが必要です。

Windows Azureストレージの作成

Windows Azure blobストレージにデータベースをバックアップするために、Windows Azureストレージアカウントを作成する必要があります。

  1. Windows Azure管理ポータルにログインします。
  2. 管理ポータルの下部の「New」ボタンをクリックします。
  3. リボン上で、[DATA SERVICES]‐[STORAGE]‐[QUICK CREATE]を選択します。
  4. [URL]にストレージアカウントのURLに使用するサブドメイン名を入力します。
    3~24文字の英数字を入力してください。
    [REGION/AFFINITY GROUP]に、地域とアフィニティグループを選択してください。
  5. [CREATE STORAGE ACCOUNT]をクリックします。

コンテナの作成

次にストレージアカウントにコンテナを作成します。
コンテナはblobをグルーピングする一塊です。

  1. 管理ポータルからストレージアカウントを選択します。ストレージアカウントのダッシュボードが開きます。
  2. [CONTAINERS]タブを選択し、コンテナ一覧を表示します。
    ストレージアカウントを作成した直後であれば、コンテナはありません。
    [CREATE A BLOB CONTAINER]か[ADD CONTAINER]ボタンをクリックします。
  3. 新しいBLOBコンテナを作成する画面が開きます。
    NAMEに、コンテナ名を入力します。ACCESSをPrivateに選択し、ボタンをクリックします。

SQL Serverで認証情報を作成する

SQL ServerにWindows Azure ストレージ認証情報を格納するために認証を作成する必要があります。SQL Server Manaement Studioを使用してSQL Serverに接続し、新しいクエリウィンドウを開きます。
次のT-SQLで、Windows Azureストレージ認証用の認証情報を作成します。

CREATE CREDENTIAL mycredential
WITH IDENTITY = ‘mystorageaccount’,SECRET = ‘<storage access key>’;

Windows Azure管理ポータルに戻り、ストレージのDASHBOARDで[MANAGE KEYS]ボタンをクリックします。

Manage Access Keysウィンドウが開きます。

ストレージアカウントの名前をコピーし、T-SQLの「mystorageaccount」部分に貼り付けます。[PRIMARY ACCESS KEY]か[SECONDARY ACCESS KEY]をコピーし、「Storage Access Key」部分に貼り付けます。

T-SQLを実行します。
「mycredential」認証の作成に成功したら、次のクエリで情報を確認することができます。

データベースのバックアップ

認証を作成した後、認証情報を使用してWindows Azure Blobストレージにデータベースをバックアップすることができます。次の例は、AdventureWorks2012データベースをWindows Azure Blobストレージサービスにバックアップしています。

BACKUP DATABASE AdventureWorks2012
TO URL = ‘https://pfestorageaccount.blob.core.windows.net/sqlbackup/AdventureWorks2012.bak’
WITH CREDENTIAL = ‘mycredential’
,STATS = 5;
GO

サードパーティのWindows Azureストレージの管理ツールで、バックアップファイルを確認することができます。

データベースのリストア

次のクエリでデータベースをリストアすることができます。

RESTORE DATABASE AdventureWorks2012
FROM URL = ‘https://pfestorageaccount.blob.core.windows.net/sqlbackup/AdventureWorks2012.bak’
WITH CREDENTIAL = ‘mycredential’
,STATS = 5;
GO

参考情報

詳細な情報が、MSDNライブラリで提供されています。
このチュートリアルを参照してください。

この投稿は、MSDNブログの韓国プレミアムフィールドエンジニブログに投稿された「How to backup and restore user database from SQL server to Windows Azure blob storage.」をざっくり違約した投稿です。

Windows Azure

SQLCATのBlogに投稿された「Running SQL Server in Windows Azure Virtual Machine – Performance Guidelines for Preview」を元にした投稿です。

基本的には、オンプレミスのSQL Serverと同じ考え方でパフォーマンスチューニングが効く。

  • VMのサイズは大きければ大きいほど性能改善に役立つ
    CPU、メモリがボトルネックの間は、大きくすればするほど性能が改善する。
    通常のプロダクション環境では、MediumからLargeを推奨するが、最高なのはえxtらLarge
  • SQL Serverの最大メモリは規定値
    随時負荷に応じてVMサイズを変更する運用をするなら、動的にメモリ調整をSQL Serverが
    できるように最大メモリは固定しない方が良い。
  • Dataディスクを必要なIOに合わせて追加する
    データベース数が複数ある場合でIOがきついなら、DataDiskを複数くっつけて分散させる
    (個人的な感想)Win2012からは記憶域プールが使えるようになるので素敵なことになるのかな??
  • Diskキャッシュ
    Dataディスクは既定でオフになっているので、そのままWriteキャッシュは無効にしておくと良い。
    OSディスクはWriteキャッシュがONになっているので、OSディスクにデータファイル置くなら
    OFFにしたほうがいい
  • Dドライブにtempdb置いた方がいい?(個人的感想)
    Dドライブは、Azureストレージじゃなく、VMと同じ物理ラックに置かれた非永続化領域なので
    速いのかな?