Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - データベース管理 » データベースの保守 » SQL Anywhere の高可用性 » データベース・ミラーリングの概要

 

データベース・ミラーリングで使用するモードの選択

ミラーリングには次の 3 種類の実行モードがあります。

デフォルトは同期モードです。各モードは、トランザクションがミラー・サーバで記録されるタイミングと方法を制御します。設定には、-xp サーバ・オプションを使用します。

データベース・ミラーリング・システムで使用する同期実行モードを選択する場合は、フェールオーバの発生時にリカバリ速度とデータの状態とでどちらを優先するかを決定する必要があります。

データベース・ミラーリングのモードは、MirrorMode データベース・プロパティの値を問い合わせることによって確認できます。

SELECT DB_PROPERTY( 'MirrorMode' );
同期モード

同期モードでは、コミットされたトランザクションはミラー・サーバに記録されることが保証されます。プライマリ・サーバで障害が発生した場合、ミラー・サーバが引き継いだときに、コミットされたトランザクションが失われることはありません。このモードでは、プライマリ・サーバはトランザクションがコミットされるとトランザクション・ログ・ページをミラーに送信します。ミラー・サーバは、送信されたページをトランザクション・ログのコピーに書き込むと、転送の受信確認を行います。プライマリ・サーバは、受信確認を受信してからアプリケーションに応答します。

同期モードを使用することで「トランザクションの安全性」が保証されます。これは、稼働サーバが同期された状態になり、プライマリは、ミラーに送信した変更の受信確認を待ってから、処理を続行するからです。

非同期モード

非同期モードでは、コミットされたトランザクションがミラー・サーバに記録されることは保証されません。このモードでは、プライマリ・サーバはトランザクションがコミットされるとトランザクション・ログ・ページをミラーに送信します。この時点で、プライマリはミラーからの受信確認を待たずに、COMMIT の完了をアプリケーションに応答します。このため、プライマリ・サーバで障害が発生した場合、ミラー・サーバが引き継いだときにコミット済みのトランザクションが一部失われる可能性があります。

非同期フルページ・モード

非同期フルページ (または page) モードでは、ページは COMMIT の実行時にではなく、ページが満杯になったときに送信されます。これにより、2 つのデータベース・サーバ間のトラフィック量が減り、プライマリ・サーバのパフォーマンスが向上します。現在のログ・ページは、pagetimeout パラメータに指定した秒数を過ぎてもミラーに送信されなかった場合に、ページが満杯でなくても送信されます。デフォルトの値は 5 秒です。このモードを使用すると、プライマリ・サーバがダウンし、ミラー・サーバがデータベースの所有権を引き継ぐ場合に、コミットされたトランザクションが失われる可能性がある状態に置かれている時間を制限できます。非同期フルページ・モードは非同期操作の一種であるため、プライマリ・サーバはミラーからの受信確認を待機しません。

非同期モードおよび非同期フルページ・モードは、同期モードより高速ですが、上記の理由により信頼性は低下します。非同期モードおよび非同期フルページ・モードでは、プライマリ・サーバに適用されたコミット済みトランザクションがミラー・サーバにすべて適用されているとは限らないので、プライマリ・サーバからミラー・サーバへのフェールオーバは自動ではありません。このため、非同期のどちらかのモードを使用する場合は、ミラー・サーバはデフォルトで、プライマリに障害が発生してもデータベースの所有権を取得できません。この場合に (トランザクションが失われる可能性があったとしても) 自動フェールオーバを使用したい場合は、-xp サーバ・オプションを使用して autofailover オプションを yes に設定します。それ以外の場合、障害が発生したサーバは、再起動後にトランザクションが失われたかどうかを確認します。トランザクションが失われていた場合、データベース・サーバ・メッセージ・ログにメッセージを書き込んで、データベースをシャットダウンします。現在のデータベースとトランザクション・ログは、ミラーリングを続行する前にバックアップを使用して置き換える必要があります。

非同期モードまたは非同期フルページ・モードで障害が発生した後にサーバを再起動する方法については、プライマリ・サーバ障害からのリカバリを参照してください。

注意

非同期モードまたは非同期フルページ・モードを使用している場合は、-xp autofailover オプションを yes に設定することをおすすめします。それによって、プライマリ・サーバで障害が発生した場合、ミラー・サーバが自動的にプライマリ・サーバとなります。

synchronize_mirror_on_commit オプションでは、非同期モードまたは非同期フルページ・モードにおいて、データベースの変更がミラー・サーバへ送信されたことがどの時点で保証されるかについて制御できます。このオプションを On に設定すると、COMMIT が発生するたびに、トランザクション・ログに記録されたすべての変更がミラー・サーバへ送信され、その変更がミラー・サーバによって受信されると、ミラー・サーバからプライマリ・サーバへ受信確認が送信されます。このオプションは、SET TEMPORARY OPTION を使用して特定のトランザクションに対して設定できます。また、ログイン・プロシージャで APPINFO 文字列を調べ、このオプションを特定のアプリケーションだけに設定すると、効果的な場合もあります。

SQL Anywhere では、データベース・ミラーリング・システムでフェールオーバが発生したときに、使用しているモードに関係なく起動するシステム・イベントをサポートしています。このようなイベントを使用することで、フェールオーバの発生時に管理者に通知することなどができます。データベース・ミラーリングにおけるシステム・イベントを参照してください。

参照

同期ステータス
ステータス情報ファイル