Azure 仮想マシンに SQL Server をインストールした場合など、データベースのバックアップファイルを一元的に管理するために、SQL Server データベースのバックアップを直接 Azure Blob Storage へ作成し、何か問題が発生した際に直接 Azure Blob Storage に作成されたバックアップからリストアする方式を選択することがあるかと思います。
今回は、Azure 仮想マシンにインストールされた SQL Server AlwaysOn 可用性グループに所属する可用性データベースのバックアップを、メンテナンスプランを使用して Azure Blob Storage ヘ作成する方法についてまとめてみようと思います。
[前提条件]
- バックアップ先に指定する Azure Blob Storage が既にデプロイされていること。
- SQL Server AlwaysOn 可用性グループ が構成されていること
SQL Server AlwaysOn 可用性グループ
Azure ストレージ アカウントのアクセス キーから SQL Server 資格情報を作成します。
1) ストレージ アカウント -「設定」-「アカウント キー」を選択し、Key1のアクセスキーをコピーします。
2) SQL Server がインストールされた Azure 仮想マシン (可用性レプリカ プライマリ:1号機)にログインします。
3) SQL Server Management Studio (以下 SSMS) を起動し、管理者権限(sysadmin)が付与されたログインで該当のインスタンスに接続します。
4) 「新しいクエリ」を選択します。
5) 以下のクエリを実行し、SQL Server 資格情報を作成します。
SQL Server 資格情報名 : 任意の名前 (本例では「azblobcre」)
IDENTITY : Azure ストレージ アカウント名 (本例では「stje****」)
SECRET : 1) でコピーした Azure ストレージ アカウント アカウント キー
use master go CREATE CREDENTIAL azblobcre WITH IDENTITY='stje****',SECRET='gIVf653Y****************************'; go |
6) 以下のクエリを実行し、Azure Blob Storage 上にSQL Server のバックアップが正常に作成できることを確認します。
backup database <データベース名> : バックアップ対象のデータベース名を指定
URL : バックアップ先の Azure Blob Storage コンテナおよびバックアップファイル名を指定
credential : 5) で作成した SQL Server 資格情報を指定
use master go backup database agdb1 to URL='h t t p s://stje****.blob.core.windows.net/backup/agdb1.bak' with credential='azblobcre', compression go |
7) SQL Server がインストールされた Azure 仮想マシン (可用性レプリカ セカンダリ:2号機)にログインします。
8) 3) - 5) を同様に実行し、Azure 仮想マシン (可用性レプリカ セカンダリ:2号機) 上にも SQL Server 資格情報を作成します。
SQL Server メンテナンスプランによるバックアップ設定を作成
1) SQL Server がインストールされた Azure 仮想マシン (可用性レプリカ プライマリ:1号機)にログインします。
2) SQL Server Management Studio (以下 SSMS) を起動し、管理者権限(sysadmin)が付与されたログインで該当のインスタンスに接続します。
3) 「管理」-「メンテナンスプラン」-「右クリック」-「メンテナンス プラン ウィザード」を選択します。
4) ウィザードを進め、「プランのプロパティを選択」画面で「名前欄」に任意のプラン名を入力後、「次へ」を選択します。
※ 本例では 「タスクごとに個別のスケジュールを使用する」を選択します。
5) 「メンテナンス タスクの選択」画面でバックアップのタスクを選択後、「次へ」を選択します。
※ 今回は「データベースのバックアップ(完全)」、「データベースのバックアップ(トランザクション ログ)」を選択します。
6) 「次へ」を選択します。
※ 本例では 「タスクごとに個別のスケジュールを使用する」を選択しているため、メンテナンス タスクの順序指定はできませんが、同じタイミングで実施するメンテナンス タスクの実行順序を指定できます。
7) 「全般」タブ -「データベース欄」を選択し、バックアップ対象データベースを指定します。
8) 「全般」タブ -「バックアップ先」:「URL」を選択します。
9) 「全般」タブ -「スケジュール」-「変更」を選択し、バックアップの実行スケジュールを設定し、「OK」を選択します。
※ 本例では、「毎週日曜日 0時に完全バックアップを 1回実行する設定」になっています。
10) 「バックアップ先」タブ -「SQL 資格情報」で作成した SQL Server 資格情報(本例では「azblobcre」) 選択し、「Azure ストレージ コンテナ欄」にバックアップ先の「コンテナ名」を入力します。
11) 「オプション」タブ -「バックアップの圧縮の設定」:「バックアップを圧縮する」を選択後、「次へ」を選択します。
※ 本例では、「バックアップ暗号化」にチェックし、バックアップファイルの暗号化を有効にしています。可用性データベースの完全バックアップをセカンダリ レプリカ上で実行する設定になっている場合は、「コピーのみのバックアップを行う」にチェックする必要があります。
12) トランザクション ログのバックアップ用のタスクを同様に設定後、「次へ」を選択します。
※ 本例では、トランザクション ログのバックアップ タスクでは、15分毎にバックアップを実行するように設定しています。
14) ウィザードを進め、「完了」を選択します。
15) 正常にメンテナンス プランが作成されたことを確認後、「閉じる」を選択します。
16) SQL Server がインストールされた Azure 仮想マシン (可用性レプリカ セカンダリ:2号機)にログインします。
17) SQL Server Management Studio (以下 SSMS) を起動し、管理者権限(sysadmin)が付与されたログインで該当のインスタンスに接続します。
18) 3) - 15) を同様に実施し、メンテナンス プランを作成します。
[補足]
- 「管理」-「メンテナンス」- 該当のメンテナンスプラン -「右クリック」-「履歴の表示」を選択することで、メンテナンス プランの実行履歴を確認することができます。
- メンテナンス プラン実行時の詳細情報については、SQL Server エージェント -「ジョブ」- 該当のジョブ -「右クリック」-「履歴の表示」から確認できます。
- メンテナンス プランによって生成されるバックアップ コマンドでは、システム関数「fn_hadr_backup_is_preferred_replica」により、可用性グループのプライマリ/セカンダリの何れかのレプリカでのみ実行されるように自動的に設定されるため、1号機、2号機で同時にメンテナンス プラン タスクが実行されたとしても、同時にバックアップ処理が実行されることはありません。
- SQL Server AlwaysOn 可用性グループのバックアップ設定は、「Always On 高可用性」-「可用性グループ」- 該当の可用性グループ -「右クリック」-「プロパティ」を選択後、「ページの選択」:「バックアップの設定」から設定を変更することができます。
まとめ
前回、Shard Access Signature (以下 SAS) を使用し、Azure Blob Storage 上へ SQL Serverのバックアップを作成する方法について紹介しましたが、現時点 (2020年6月) において、メンテナンス プランでは SAS を使用したバックアップ設定を実施することができません。そのため、SASを使用したバックアップを実施する必要がある場合は、バックアップコマンドを SQL Server Agent ジョブなどにより実行する必要があります。