SQL Server 2005 データベースのミラーリング

初めに

ミラーリング対象データベース、ミラーデータベース、ミラー監視データベースの3つのインスタンスを利用する方法の覚え書きです。
ミラーリング対象データベースは「プリンシパル」と呼ばれるようですので、これ以降は「プリンシパル」と呼びます。

ミラーリングのモードは同期モードになります。非同期モードのミラーリングは「Enterprise版」でないと利用できないようです。
「Standard版」では同期モードのみ利用可能です。
同期モードでは、監視用データベースを利用する方法と監視用データベースを利用しない方法があります。
今回は利用する方法の覚え書きです。

2008/10/21追記

プリンシパル側のバックアップを取る前に、自動終了が「False」になっている事を確認する。
[データベースのプロパティ]-[オプション]-[自動終了]が True になっていた場合は、False に変更する。
こうしないと、データベースのミラーリングを開始する時にエラーが発生する。

プリンシパルのデータベースのバックアック

  • 「SQL Server Management Studio」を起動します。
  • プリンシパルのデータベースサーバーに接続します。
  • ミラーデータベース用のデータベースサーバーに接続します。
  • ミラー監視データベース用のデータベースサーバーに接続します。

  • プリンシパルのデータベースのバックアップをとります。

  • 復旧モデル→FULL
  • バックアップの種類→完全を選択
  • バックアップ先の[追加]ボタンをクリック。
  • ファイル名の右側のボタンをクリックし、保存先ファイルを指定します。
  • [OK]をクリックします。

  • データベースのバックアップに戻りますので[OK]ボタンをクリックします。

  • [OK]ボタンをクリックします。
  • つづけて、トランザクションログのバックアップをとります。

  • バックアップの種類→トランザクションログを選択。
  • [OK]ボタンをクリックします。

  • [OK]ボタンをクリックします。

ミラーデータベースの作成

プリンシパルのバックアップをミラーデータベース用データベースサーバーに復元します。

  • [データベース]を右クリックし「データベースの復元」を選択します。

  • 復元先データベース→プリンシパルと同じデータベース名を入力します。
  • 復元用のソース→「デバイスから」を選択し、右側のボタンをクリックします。

  • [追加]ボタンをくりっくし、復元もとのバックアップを選択します。

  • [OK]ボタンをクリックします。

  • 復元するバックアップ セットの選択→完全とトランザクション ログの両方にチェックを入れます。

  • 復元オプション→「既存のデータベースを上書きする」にチェックを入れる。
  • 復旧状態→「データベースは操作不可状態のままで、コミットされていないトランザクションはロールバックしない。別のトランザクション ログは復元できます。(RESTORE WITH NORECOVERY)」を選択します。
  • [OK]ボタンをクリックします。

[OK]ボタンをクリックします。

ミラーデータベース用にリストアしたデータベースの表示は上記のようになります。

ミラーリング設定

  • プリンシパルのデータベースを右クリックし、[タスク]-[ミラー]を選択する。

  • [セキュリティの構成]ボタンをクリックする。

ウイザードが起動します。

  • [次へ]をクリックします。

  • [次へ]をクリックします。

  • [次へ]をクリックします。

  • [次へ]をクリックします。

  • ミラーサーバインスタンスを選択し、[接続]ボタンをクリックし、接続します。
  • [次へ]をクリックします。

  • ミラーリング監視サーバインスタンスを選択し、[接続]ボタンをクリックし、接続します。
  • [次へ]をクリックします。

  • サービスのアカウントを全て入力し、[次へ]をクリックします。

  • [完了]をクリックします。

  • [閉じる]をクリックします。

  • [ミラーリングの開始]をクリックします。

  • [OK]をクリックします。

設定が完了すると表示が上記のようになります。

障害発生時の動作

ミラー監視サーバーが正常動作していれば、プリンシパルがダウンしても自動的に、ミラーサーバーにフェールオーバーされます。
フェールオーバーされると、ミラーサーバーがプリンシパルとして動作します。(プリンシパルとミラーが逆転します)

元のプリンシパルが復旧した場合でも、元のプリンシパルはミラーデータベースの状態のままです。
元のプリンシパルをプリンシパルに戻したい場合は、手動でフェールオーバーします。
※「Microsoft SQL Server Management Studio」で実行できます。

問題は、ミラー監視サーバーがダウンし、つづいてプリンシパルサーバーがダウンした時です。

この場合は、自動フェールオーバーされませんので、ミラーデータベースで利用したい場合は、手動で復旧処理をする必要があります。
ミラーデータベースを通常のデータベースの状態に戻し、利用する方法です。

この場合は、SQL コマンドを使用するしか方法がなさそうです。

操作対象PCに「sqlcmd」がインストールされている必要があります。
※ミラーサーバーで操作を行ってもかまいません。

sqlcmdコマンドの利用開始

C:\> sqlcmd -S tsv2\SQL2005 -E

※Windows認証で接続する場合。

まずは、ミラーリングの削除を行います。

ALTER DATABASE sshanbai_test SET PARTNER OFF
GO

データベースを通常の状態に復旧します。

RESTORE DATABASE sshanbai_test WITH RECOVERY
GO

sqlcmdコマンドの利用終了

exit

以上で通常のデータベースの状態に戻ります。