SQL Server 2016 CTP 2.0 : SQL Server Managed Backup to Azureのまとめ

SQL Server 2016のデータベースエンジンの新機能の1つに「SQL Server Managed Backup to Azure(単にManaged Backupと表記されることもある)」があります。

機能概要

Microsoft Azure Blobストレージに自動的にSQL Serverのバックアップをとったり、管理するための機能です。

バックアップタイミングは次の2パターンを選ぶことができます。

  • データベースのワークロードをベースにした自動バックアップ
  • オプションで設定したバックアップのスケジュール(時間)定義に基づいたバックアップ

Microsoft Azure Blobストレージにバックアップファイルを保存する期間を設定できます。

メリット

これまでは、時間指定のバックアップを設定するか、カスタムコードを書かないと自動バックアップを設定することができなかったのです。

しかし、SQL Server Managed Backup to Windows Azureを使用すると、バックアップファイルの保持期間と、保存場所を指定すれば自動的にバックアップされます。オプションでスケジュールを指定することもできますが不要です。

設定対象

次の範囲で、Managed Backupを設定できます。

  • インスタンスレベル
  • データベースレベル(インスタンスレベルの設定を上書き可能)

インスタンスレベルで定義をしておくと、新しいデータベースを作成したときにも自動的にバックアップされます。

前提条件

次のサービス、アカウント、認証情報が必要です。

  • Microsoft Azure アカウント
  • Azure ストレージアカウント
  • Blobコンテナー
  • Shared Access Signature:SAS(共有アクセス署名)
  • SQL Server Agent サービス

SQL Server 2014 と SQL Server 2016のManaged Backupの機能差異

項目SQL Server 2014SQL Server 2016
名前空間smart_adminmanaged_backup
ストアドsp_set_db_backUP
sp_set_instance_backup
sp_backup_config_basic
sp_backup_config_advance
セキュリティストレージアカウント
アクセスキー
共有アクセス署名
ストレージページBlobブロックBlob

SQL Server 2016では次のような機能特徴がある

  • コストの安いブロックBlobを使用する
  • ストライピングを使用し、最大12TB(ページBlobだと1TB)
  • ストライピングにより、リストア時間の短縮
  • システムデータベースに対応
  • 単純復旧モードのデータベースも利用可能

フルバックアップが取得されるタイミング

  • 機能を有効にしたタイミング
  • 最後のフルバックアップからログが1GB以上拡張したとき
  • 最後のフルバックアップから1週間経過したとき
  • ログチェインが壊れたとき(トランザクションログが消されたとき)

トランザクションログバックアップが取得されるタイミング

  • ログバックアップ履歴が無いとき(通常は機能を有効にしたとき)
  • トランザクションログ要領を5MB以上使用したとき
  • 最後のトランザクションログバックアップから2時間経過したとき
  • フルバックアップが遅延しているとき

バックアップファイルの保存期間

  • 保存期間は最少1日、最大30日を指定できる
  • 保存期間内であれば、指定した時間にポイントタイムリカバリができる

注意事項

  • ブロックBlobの最大サイズは200GB
  • ストライピングを使用することで、最大12TBまで保存可能
  • それ以上の場合は、圧縮を使用する
  • CTP 2.1段階では、GUI(SQL Server Management Studio)での操作はできない
  • ストアドかPowerShellで設定する

機能を有効にする手順

具体的な手順はドキュメントに記載されているので、簡単な流れのみ記載。

  1. Microsoft Azureにサインアップ
  2. ストレージアカウントの作成
  3. Blobコンテナーの作成
  4. 共有アクセス署名(SAS)の作成
  5. SQL証明書の作成
  6. SQL Server Agentサービスの開始
  7. SQL Server Managed Backup to Windows Azureの設定と有効化
  8. ヘルスステータス(エラーや警告)のメール通知の設定と有効化

Azure PowerShellでの操作

Azure PowerShellを使用して、バックアップファイルを格納するコンテナーのSASを取得します。以下の例は、既存のコンテナーのSASを取得する例。

Get-AzurePublishSettingsFile
Import-AzurePublishSettingsFile
Select-AzureSubscription
$context = New-AzureStorageContext -StorageAccountName ***atoya -StorageAccountKey (Get-AzureStorageKey -Storage
New-AzureStorageContainerSASToken -Name pub -Permission rwdl -FullUri -Context $context

 

image

SQL 証明書の作成

次に、SQL証明書を作成します。

CREATE CREDENTIAL [https://***atoya.blob.core.windows.net/pub]
WITH IDENTITY = ‘Shared Access Signature’,
SECRET = ‘sv=2014-02-14&sr=c&sig=********wUKKjd2d8%3D&se=2015-07-08T01%3A55%3A03Z&sp=rwdl’

image

SQL Server Managed Backup to Windows Azureの設定と有効化

Managed Backupを設定します。

Use msdb;
GO
EXEC msdb.managed_backup.sp_backup_config_basic
@enable_backup = 1,
@database_name = ‘test’,
@container_url = ‘https://y****a.blob.core.windows.net/pub’,
@retention_days = 30
GO

ストアドプロシージャーを設定すると、次のように設定しましたと出力されます。

image

裏側では、フルバックアップが実行されます。

Database backed up. Database: test, creation date(time): 2015/05/28(23:11:16), pages dumped: 369, first LSN: 36:376:37, last LSN: 36:395:1, number of dump devices: 1, device information: (FILE=1, TYPE=URL: {‘https://*****.blob.core.windows.net/pub/test_9806c8082c754fdcbca50ae99e2b1763_20150708100900+09.bak’}). This is an informational message only. No user action is required.

SQL Server Agentサービスを使用すると書いてあるので、てっきりジョブ登録されるのかと思ったのですが、ジョブには登録されていません。

image

ヘルスステータス(エラーや警告)のメール通知の設定と有効化

SQLデータベースメールを設定します。

image

SQL Server Agentメールの設定をします。

image

監視を追加します。

EXEC msdb.managed_backup.sp_set_parameter
@parameter_name = ‘SSMBackup2WANotificationEmailIds’,
@parameter_value = ‘<t.yam***ya@***ops.com>’

メール通知はこんな感じのが届きます。

image

バックアップファイルを確認します

バックアップ状況を確認します。

SELECT *
FROM managed_backup.fn_available_backups (‘test’)

image

取得できる情報は次のようなもの。

backup_path
backup_type
expiration_date
database_guid
first_lsn
last_lsn
backup_start_date
backup_finish_date
machine_name
last_recovery_fork_id
first_recovery_fork_id
fork_point_lsn
availability_group_guid

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.