SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

SQL Database の自動で取得されているバックアップとリストアについて

one comment

SQL Database のポイントインタイム リストアについて、熊なはずなのに猫としての地位を確立しつつある某氏からリプライをいただいていて、そういえばあまり調べたことがないなと思い、少し調べてみました。

詳しい情報については以下を参照していただければと。

Azure SQL Database のポイントインタイム リストア
Azure SQL Database のバックアップと復元
Azure SQL データベースの継続性

バックアップ / リストア機能に関しては SQL Server の Basic / Standard / Premium で使用できる機能となりますので、Web / Business では使用することができません。

機能を使用できるパフォーマンスレベルを使用している場合は、デフォルトでバックアップとリストアを使用することができます。今回の投稿では、バックアップとリストアが使用できるパフォーマンスレベルの投稿となります。

■SQL Database のバックアップ間隔


SQL Database のバックアップ間隔ですが、パフォーマンスレベルにかかわらず、一定の間隔で取得されています。

  • 週 1 回の完全バックアップ
  • 1 日 1 回の差分バックアップ
  • 5 分間隔のトランザクションログのバックアップ

このバックアップ間隔で自動的にバックアップが取得されていますので、5 分前までのデータについてはバックアップが存在していることになります。

データベース作成直後にすぐバックアップが取得されるわけではないようで、作成から初回のバックアップ取得までは多少のタイムラグ (10 分程度) があるようです。
image

 

■バックアップの保有期間


 

バックアップの保有期間についてはパフォーマンスレベルによって変わってきます。

image

 

この保有期間によって、何日前のバックアップまでリストアが可能なのかが変わってきます。
リストアが可能な最古の日付 (最初の復元ポイント) に関しては、「Get-AzureSqlDatabase」コマンドレットから取得することが可能です。
image

上記は S0 のデータベースの作成日と最初の復元ポイントの情報となります。
Standard では過去 14 日以内の任意の復元ポイントまでのリストアとなるため、3/20 にデータベースを作成していますが、最初の復元ポイントについては 3/20 ではなく、4/14 の 14 日以内の日付である 3/21 が最初の復元ポイントとして表示されていることが確認できます。
# 日付は、REST API からのレスポンスは UTC で帰ってきているのですが、コマンドレットではシステムロケールの日付に変換して表示しているみたいですね。上記の日付は日本時間となっていました。

バックアップのストレージについては、

バックアップ ストレージは、特定の時点に復元 および 地理的復元 に使用される自動データベース バックアップと関連付けられたストレージです。Azure SQL データベース では、プロビジョニングされた最大データベース ストレージの最大 200% のバックアップ ストレージが追加コストなしで提供されます。たとえば、Standard サービス階層でプロビジョニングされたサイズが 250 GB のデータベースがある場合、追加料金なしで 500 GB のバックアップ ストレージが提供されます。データベースがプロビジョニングされたバックアップ ストレージの容量を超える場合、Azure サポートに連絡して保有期間を減らすか、標準の読み取りアクセス地理冗長ストレージ (RA-GRS) 料金で追加のバックアップ ストレージを購入することができます。RA-GRS 料金の詳細については、「料金詳細 – Storage (ストレージ)」を参照してください。

となるようですので、データベースの上限までデータを格納している場合は、バックアップストレージについて注意する必要が出てきそうですね。

 

■リストアの種類


リストアについては大きく分けて 3 種類があります。

  • ポイントインタイムリストア
  • 削除済みデータベースのリストア
  • 地理的復元 (地理リストア)

これらのリストアについてみていきたいと思います。

 

■ポイントインタイムリストア


ポイントインタイムリストアについては特定時間までデータベースをリストアするための機能となります。

Restore an Azure SQL database using Point in Time Restore in the Azure portal
Restore an Azure SQL database using Point in Time Restore in Azure PowerShell

ポータルから操作する場合には

  • バックアップを使用してリストアを行うデータベースを選択
  • リストアをクリック

で実施するリストアとなります。

ポータルからリストアを使用とした場合は、

  • バックアップ保有期間~約 5 分前

の範囲でリストア ポイントを指定することができるかと思います。

image

SQL Database ではトランザクションログのバックアップを 5 分間隔で取得しているため、リストアポイントの最新が約 5 分前となっています。

SQL Database のポイントインタイムリストアについては、「Start-AzureSQLDatabaseRestore」コマンドレットを使用して実施することができます。
このコマンドレットで未来の時間を指定した場合には以下のように出力が行われます。

Start-AzureSqlDatabaseRestore : The specified point in time, ’04/04/2015 10:11:00′, is not valid for database ‘BasicTestDB’. Valid points in time s
hould be between ’04/04/2015 08:49:51′ and ’04/04/2015 10:10:19′ inclusive.

コマンドレットから指定した場合は、直近の時刻を指定することができそうですが、直近のタイミングでリストアができるバックアップが取得されるタイミングまで待ちが発生していそうですね。
バックアップが取得されるのは 5 分間隔ですので、5 分前のバックアップの任意の地点までリストアできる機能として考えておいたほうがよさそうです。

ポータルでは分単位でのリストアの指定となりますが、コマンドレットからは秒単位で指定ができます。

ポータルからリストアした場合は指定した分の 00 秒、コマンドレットから実行した場合は指定した秒でのリストアが可能でした。

ポイントインタイムリストアの現状の制限になると思いますが、投稿を書いている時点では「同一のサーバーに異なるデータベース名としてリストアするための機能」となります。

image

Start-AzureSQLDatabaseRestore では「TargetServerName」というオプションを持っているのですが、現在のリリースでは、同一のサーバー名しか指定することができないようで、異なるサーバーへのリストアはサポートされていません。

最終的には、地理的復元のように異なるサーバーにリストアが可能になるのかも知れませんが、現状は同一サーバーに対してリストアするための機能となります。

 

■削除済みデータベースのリストア


SQL Database では誤って削除してしまったデータベースについてもバックアップからリストアをすることが可能です。

Restore a deleted Azure SQL database in the Azure portal
Restore a deleted Azure SQL database in Azure PowerShell

 

ポータルから操作する場合は、

  • SQL データベースの「削除済みデータベース」

から実行します。

こちらはポイントインタイムリストアで取得していたバックアップを、バックアップ保有期間の間に関してはリストアできるようにするための機能になるかと思います。

削除されたタイミングの最新の状態までリストアをするための機能となるようで、この機能ではポイントインタイムリストアを使用することができないようです。

削除済みデータベースをコマンドレットから取得する場合は、「Get-AzureSqlDatabase」を「RestorableDropped」オプションを指定することで一覧を取得することができます。
image

 

■地理的復元


地理的復元は同一のサブスクリプション上の異なる地域に復元するための機能となります。

Recover an Azure SQL database using Geo-Restore in the Azure portal

Recover an Azure SQL database using Geo-Restore in Azure PowerShell

ポータルの操作としては、

  • 他の地域に復元したいデータベースを保持しているサーバーを選択
  • バックアップタブから、リストアしたいバックアップを選択しリストア

となります。

地理的復元については、同一サブスクリプション内の異なる (または新規の) サーバーに復元することが可能です。
image

このリストアについては、v11 と v12 で RPO が異なってくるようです。
以下は日本語の情報となりますが、こちらは v11 の場合の情報となります。
Azure SQL データベースの継続性

v11 の場合は、RPO が 24 時間として定義されているため、地理的復元として使用できるバックアップは最大で 24 時間のラグが発生する可能性があります。

image

 

現状、v12 については英語版の情報を確認する必要があります。
Azure SQL Database Business Continuity

v12 になると RPO が 1 時間となっており、地理復元で使用できるバックアップの範囲が短縮されています。
# ジオレプリケーションについても、かなり短縮されていますね。

image

v12 になり、災害対策についても強化がされていることが更新情報としても記載されていますね。
General availability: Latest service version for Azure SQL Database in Asia
Azure SQL Database Standard Geo-Replication

地理冗長バックアップとして利用可能なバックアップについては「Get-AzureSqlRecoverableDatabase」コマンドレットでも取得することが可能で、利用可能な最終のバックアップの日付については、「LastAvailableBackupDate」から確認することができます。
image

コマンドレットからリストアをする場合には「Start-AzureSqlDatabaseRecovery」を使用します。

 

SQL Database の自動で取得されているバックアップ / リストアについてはこれらの情報から追っていけば調べることができるかと。

Share

Written by Masayuki.Ozawa

4月 4th, 2015 at 8:01 pm

Posted in SQL Database

Tagged with

One Response to 'SQL Database の自動で取得されているバックアップとリストアについて'

Subscribe to comments with RSS or TrackBack to 'SQL Database の自動で取得されているバックアップとリストアについて'.

  1. はじめまして。高井といいます。
    いつも拝見しております。

    SQL Database の自動バックアップのスケジュールは以下認識です。
    ・ 完全(週)→ 別リージョンへコピー/日
    ・ 差分(日)→ 別リージョンへコピー/日
    ・ ログ(5分間隔)

    ポイントインタイムリストアで使用するデータは上述の自動バックアップファイルで、最短間隔はログの5分。
    記事にも書かれているように1分前のデータであれば待ちが発生せずに復元できているのですが、
    ログバックアップの間隔が狭くなっているのでしょうか。

    それらを踏まえた上で、お聞きしたいことがございます。
    地理復元につきましてV11の時はRPOは24時間未満でしたので
    上述のバックアップの差分を使用している認識でした。
    V12のRPOは1時間未満となっておりますが、
    ・ 差分(日)→ 別リージョンへコピー/時間
    ・ ログ(5分間隔)→ 別リージョンへコピー/時間
    とスケジュールに変更になっているのでしょうか?
    もしくは違うデータがバックアップされているのでしょうか?

    もしご存知であれば、ご教授いただければ幸いです。

    高井

    1 9月 15 at 18:55

Leave a Reply