データベースミラーリングは、サーバの構成に合わせて複数の動作モードを持っています。
プリンシパルとミラーが同期転送モードで動作します。プリンシパルはトランザクションログを書き込むと同時にミラーへデータを送信し、ミラーでのトランザクションログ記録の完了通知を待ってトランザクションをコミットします。
ミラーリング監視サーバによって、プリンシパルとミラーの状態は常時監視され、プリンシパルに障害が発生した場合は自動でフェールオーバーが実施されます。ミラーは常にプリンシパルと同期しているため、このフェールオーバーは数秒で完了し、非常に高速な動作を実現します。
常時サーバ間で通信が行われるため、高速で信頼性の高い通信環境が求められます。また、プリンシパルはミラーからの応答を待つ必要があるため、ミラーのパフォーマンスにプリンシパルが影響を受ける可能性があります。
プリンシパルとミラーは同期転送モードで動作しますが、ミラーリング監視サーバは利用しません。ミラーリング監視サーバを利用しないため、障害発生時の自動フェールオーバーは行われず、手動でのフェールオーバーが必要となります。「高可用性モード」から次に説明する「高パフォーマンスモード」へ移行する際などに利用するモードであり、データベースミラーリングの本来の目的を考えると常時利用は推奨されていません。
プリンシパルとミラーは非同期で動作し、プリンシパルはミラーのトランザクションログ記録の完了通知を待ちません。また、ミラーリング監視サーバを利用しないため自動フェールオーバーは実施されません。フェールオーバーを実施するには「強制フェールオーバー」を行う必要があります。障害の発生やフェールオーバー時、プリンシパルからトランザクションブロックが転送中であった場合は、データ損失が発生してしまう可能性があります。データの多少の紛失は許されるパフォーマンス優先のシステムに適しています。
動作モード | 同期/非同期 | ミラーリング監視サーバ | フェールオーバータイプ |
---|---|---|---|
高可用性モード | 同期 | あり | 自動または手動 |
高度な保護モード | なし | 手動 | |
高パフォーマンスモード | 非同期 | なし | 強制 |
表2 データベースミラーリングの動作モード |
プリンシパルとミラーが同期モードで動作する場合、各処理は次のような流れで行われます(図2)。
(1)〜(2)
プリンシパルはクライアントからトランザクションを受け取り、そのトランザクションをトランザクションログに書き込む。ログの書き込みと同時に、ミラーへログレコードの送信を行う。
(3)〜(4)
ミラーは受け取ったログレコードをトランザクションログへ書き込み、処理が完了するとプリンシパルへ通知する。この通知によってプリンシパルとミラーの同期が保証される。
(5)
クライアントへ処理結果を送信。
(6)
プリンシパル、ミラーそれぞれでデータの書き込み処理を実施。
非同期モードでは、(3)〜(4)のミラーでの処理を待たないため、高速に動作します。
Copyright © ITmedia, Inc. All Rights Reserved.