こんにちは。サカイです。
今回はSQL Serverのお話です。
DBサーバーを2台用意してSQL Serverのミラーリング設定をすることで、障害発生時にデータを保護したり、サーバーをもう一台増やしてミラーリング監視をさせることで、自動的にスタンバイ系統へ切り替わるような仕組みを作ったりすることが出来ます。
設定を行うために、SQL Server Management Studio(以下SSMS)上でDBを右クリックしてタスクからミラーを選択して……という作業が必要になるのですが、その一連の流れをGUI上で設定するのが めんどくさい!! という方向けの記事です。
クエリで自動化
ミラーリング設定は、1DBあたり数十秒ですが時間がかかりますし、画面上で一つ一つポチポチしていくのはなかなか面倒です。ましてや、DB数が100を超えるような規模のシステムで設定を行う場合はとてもじゃないですがポチポチは避けたいです。
そこで、ミラーリング設定をクエリで作って流すだけに出来ないかな~と思っていた所、簡単にクエリ化することが出来ましたのでご紹介します。
登場人物と用語
- DB1: プリンシパルとなるサーバー。
- DB2: ミラーとなるサーバー。
- プリンシパル
- プライマリとセカンダリで言うとプライマリにあたる。普段はこちらのDBがせっせと仕事をこなす。
- ミラー
- セカンダリにあたる。基本はプリンシパルのデータを同期しているだけ。
ミラーに対して参照/更新系は行えないが、有事の際にプリンシパルへと昇格するポテンシャルを持つすごいやつ。
作業工程
まずはじめに、素のDBをミラーリング設定するまでの作業は、大きく以下の6つあります。
- 設定を行うDBの復旧モデルを完全へ変更(完全じゃなかった場合)
- DB1からバックアップ取得(ログ含む)
- DB2へリストア(ログ含む)
- DB2ミラーリング設定
- DB1ミラーリング設定
- DB1ミラーリング監視設定(監視をする場合)
今回紹介するクエリ部分は3~5までになります。
※バックアップやリストア部分については割愛させて頂きます。
3. DB2ミラーリング設定
1
|
ALTER DATABASE [DCOM_DB] SET PARTNER = 'TCP://DB1のIPアドレス:5022'
|
※作業工程の順番通りに、先にミラー側サーバーで上記クエリを実行します。
4. DB1ミラーリング設定
1
|
ALTER DATABASE [DCOM_DB] SET PARTNER = 'TCP://DB2のIPアドレス:5022'
|
次に、DB1サーバーで上記クエリを実行します。
5. DB1ミラーリング設定(監視をする場合)
1
|
ALTER DATABASE [DCOM_DB] SET WITNESS = 'TCP://監視DBのIPアドレス:5022'
|
監視を行う場合はDB1サーバー上で上記クエリを実行します。
クエリだけ見ると非常に簡単です!
複数DBがある場合はクエリをDBの数だけ作成して実行すれば時短になりますし、お手軽です。