SE の雑記

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

可用性グループを使用した動的なセカンダリを使用したバックアップの取得

leave a comment

SQL Server 2012 の AlwaysOn の可用性グループ (Availability Groups) ではセカンダリサーバーでバックアップを取得することが可能です。

このセカンダリを利用したバックアップですが、メンテナンスプランでも新機能が追加されています。

今回はこの機能についてみていきたいと思います。

■可用性グループのバックアップ設定について


RC0 になり GUI から設定ができるようになったのですが、可用性グループには [AUTOMATED_BACKUP_PREFERENCE] [BACKUP_PRIORITY] というオプションがあります。

CREATE AVAILABILITY GROUP (Transact-SQL)
ALTER AVAILABILITY GROUP (Transact-SQL)

このオプションを使用するとメンテナンスプランでセカンダリを使用したバックアップの取得を制御することが可能となります。
オプションは可用性グループ単位で指定をします。
可用性グループのプロパティから、Backup Prefernces を変更することでバックアップの設定を変更することが可能です。
image
# 可用性グループの作成時に設定することも可能です。

この設定ですが、メンテナンスプランのバックアップと組み合わせて使用をします。
# 単純に BACKUP DATABASE を実行した場合、この設定に関しては加味されません。

SQL Server 2008 R2 の SSMS でメンテナンスプランからバックアップを取得する際の設定は以下のようになっています。
image

SQL Server 2012 RC0 の SSMS でメンテナンスプランからバックアップを取得する際の設定は以下のようになります。
image

SQL Server 2012 では

  • Copy-only Backup
  • For availability databases, ignore Replica Priority for Backup on Primary Settings

の設定が追加されています。

SQL Server 2008 R2 までのメンテナンスプランでは COPY_ONLY のバックアップを設定することができませんでした。
SQL Server 2012 の SSMS では、COPY_ONLY のバックアップをメンテナンスプランから設定することが可能となっています。
今までは COPY_ONLY のバックアップを取得するためには、メンテナンスプランではなく T-SQL を記述して設定をする必要があったのでこれはうれしい変更点ですね。

もう一つの [For ~] が可用性グループで使用することができるオプションになります。
可用性グループを設定している環境ではセカンダリを使用してバックアップを取得することが可能です。
# データのバックアップに関しては COPY_ONLY のバックアップに限定されます。
Backup on Secondary Replicas (AlwaysOn Availability Groups)

[For ~] を設定していない場合、セカンダリの状態でメンテナンスプランでバックアップを取得する際には以下のクエリが使用されます。
image

バックアップの取得前に [sys.fn_hadr_backup_is_preferred_replica] を使用して、バックアップを実行するかの判断が行われます。
この関数ですが以下のクエリで内容を確認することが可能です。

sp_helptext ‘sys.fn_hadr_backup_is_preferred_replica’

この関数では、可用性グループの [Backup Prefernces] の優先順位と、RetrieveDbReplicaState で取得したノードの正常性の状態を確認して、ジョブが実行された環境でバックアップを取得するかの判断を行っています。
RetrieveDbReplicaState はクラスターの状態を ReplicaStatus から確認をして、ノードが正常に動作しているかを判断しているようです。
image

ジョブを実行したノードが動作している可用性グループ内で優先順位が高い場合、バックアップを取得するという動作になるようです。
この判断を使用することで、自身がセカンダリなのかを意識しないで、自身の役割に応じて適切なバックアップを取得する設定が可能となります。

バックアップの設定については、

  • Prefer Secondary
  • Secondary Only
  • Primary
  • Any Replica

の 4 種類から選択することができ、必ずセカンダリを使用するか、セカンダリが使用できない場合はプライマリで取得するというような設定をすることが可能です。

[For ~]  のオプションを有効にするとこの判断を実施しないで、優先順位に関わらずバックアップが実行されるようになります。
image

[sys.fn_hadr_backup_is_preferred_replica] によるバックアップ取得の判断はトランザクションログのバックアップでも使用することができます。
image

可用性グループを使用している場合、

  • セカンダリを使用したデータベースの COPY_ONLY の完全バックアップ
  • セカンダリを使用したデータベースのトランザクションログのバックアップ

というセカンダリを使用したバックアップで通常運用を実施するということが可能なようです。

セカンダリを使用したトランザクションログのバックアップに関しては別の機会にまとめてみたいと思います。

Share

Written by Masayuki.Ozawa

1月 2nd, 2012 at 5:55 pm

Posted in SQL Server

Tagged with ,

Leave a Reply