はじめに
データベースにはさまざまな情報が保存されています。
データベースで障害が起きた場合、データベースに保存されている情報が失われてしまいます。
そのような事態を、障害が起きる前から備えるために、データベースには可用性という機能があります。
今回はデータベースの中でも、SQL Serverの可用性機能を簡単に紹介したいと思います。
SQL Serverの可用性機能
Alway on 可用性グループ
SQL Server 2012から搭載された、複数のSQL Serverをグループ化させ、仮想的に1台のSQL Serverのように見せる機能です。
Alway on 可用性グループでは、グループ内のSQL Serverすべてに同じデータベースを所有させます。
仮に障害が発生しても、グループ内のいずれか1台が正常稼働していれば、データベースを参照しているシステムやアプリケーションからは正常稼働しているように見せる事が可能です。
これにより、システムダウンを防ぐことができます。
Always on FCI(フェールオーバークラスタインスタンス)
WSFC(Windows Server Failover Cluster)のリソースにSQL Serverのインスタンスを立てた構成になります。
Always on FCIでは、一つの共有ディスクをデータベース用のディスクにして、複数のSQL Serverがその共有ディスクに接続します。
これによって、一つのSQL Serverに障害が発生しても、もう片方のSQL Serverが処理を引き継ぎ、システムダウンを防ぐことができます。
ログ配布
プライマリのSQL Server上で生成されたトランザクションログのバックアップを定期的にセカンダリSQL Serverに転送・復元する機能です。
トランザクションログとは、データベース内で発生したすべてのトランザクションと、そのトランザクションによって行われた変更を記録した情報のことです。
セカンダリのSQL Serverでは、プライマリのSQL Serverから転送されたトランザクションログから、データの復元が行われます。
よって、プライマリのSQL Serverで障害が発生した場合でも、セカンダリに複製されたデータ(直近のトランザクションログバックアップ状態)でシステムを復旧できます。
レプリケーション
一つのデータベースから別のデータベースへデータおよびデータベースオブジェクトをコピーし、それらのデータベースを同期させることでデータベース間の一貫性を保つ機能です。
レプリケーションの場合、障害が発生したらデータベースに接続するシステムやアプリケーション側で接続先データベースを切り替える必要があります。
各機能のメリット・デメリット
Always on 可用性グループ
- メリット
- セカンダリに対してリアルタイム更新が可能
- 障害発生時に自動で切り替えが発生
- デメリット
- プライマリ・セカンダリ間で同じリソースが必要
- Standard Editionでは機能が制限される
Always on FCI(フェールオーバークラスタインスタンス)
- メリット
- セカンダリに対してリアルタイム更新が可能
- 障害発生時に自動で切替が発生
- デメリット
- 共有ディスクでの障害発生時はバックアップから復元が必要
- Standard Editionでは機能が制限される
ログ配布
- メリット
- 1時間間隔などユーザー側でデータの転送・復元間隔を指定できる
- Editionごとの機能制限がない
- デメリット
- トランザクションログのバックアップ・転送などの処理が発生する都合上、リアルタイム更新は不可
- 障害発生時は手動で切替が必要
レプリケーション
- メリット
- データベースの中のテーブル単位でのレプリケーションが可能
- 別のデータベースへリアルタイム更新が可能
- Editionごとの機能制限がない
- デメリット
- ユーザー側で指定した時点への復元が不可
- 障害発生時にデータベースの接続情報の切り替えが必要
おわりに
重要なデータを保存させておくデータベースでは定期的なバックアップはもちろん、可用性を組んだ構成をとることも重要になります。
本記事ではSQL Serverの可用性機能について簡単に説明しました。
この記事を読んで、どの可用性の仕組みにはどんな機能が備わっているか、参考になれば幸いです。