このチュートリアルでは、データベース・ミラーリング・システムの設定方法とフェールオーバが発生したときの動作を説明します。このチュートリアルでは、すべてのデータベース・サーバが同じコンピュータ上で実行されていることを想定しています。ただし、実際のミラーリング・システムでは、データベース・サーバを異なるコンピュータ上で実行するのが一般的です。
ディレクトリ c:\server1、c:\server2、c:\arbiter を作成します。
samples-dir\demo.db にあるサンプル・データベースのコピーを作成し、c:\server1 に追加します。
samples-dir の詳細については、サンプル・ディレクトリを参照してください。
次のコマンドを実行して、c:\server1 にあるデータベース用のトランザクション・ログを作成します。
dbping -d -c "UID=DBA;PWD=sql;DBF=c:\server1\demo.db" |
c:\server1 にあるデータベース・ファイルとトランザクション・ログのコピーを作成し、c:\server2 に追加します。
次のコマンドを実行して、監視サーバを起動します。
dbsrv11 -x tcpip(PORT=2639) -su sql -n arbiter -xa "auth=abc;DBN=demo" -xf c:\arbiter\arbiterstate.txt |
このコマンド・ラインは、以下に示す dbsrv11 のオプションを指定します。
-x データベース・サーバに対し、TCP/IP 通信にポート 2639 を使用するよう指示します。他のサーバも TCP/IP を使用しますが、通信には別のポートを使用します。
-su ユーティリティ・データベースのパスワードを指定します。
-n データベース・サーバに arbiter という名前を付けます。
-xa ミラーリング対象のデータベースの名前と、監視サーバに対する認証文字列 (ここでは abc) を指定します。この認証文字列を、データベース・ミラーリング・システムのすべてのサーバ (監視サーバ、プライマリ・サーバ、ミラー・サーバ) で使用する必要があります。
-xf arbiter のステータス情報ファイルのロケーションを指定します。
次のコマンドを 1 行に入力して実行し、server1 を起動します。
dbsrv11 -n server1 -x tcpip(PORT=2638) -xf c:\server1\server1state.txt -su sql c:\server1\demo.db -sn mirrordemo -xp "partner=(ENG=server2;LINKS=tcpip(PORT=2637;TIMEOUT=1));auth=abc; arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2639;TIMEOUT=1));mode=sync" |
このコマンド・ラインは、以下に示す dbsrv11 のオプションを指定します。
-n データベース・サーバに server1 という名前を付けます。
-x データベース・サーバの実行で使用するポート番号を指定します。
-xf server1 のステータス情報ファイルのロケーションを指定します。
-su ユーティリティ・データベースのパスワードを指定します。
-sn データベース・サーバの代替名を指定します。プライマリ・サーバとミラー・サーバは同じ名前にしておき、どちらがプライマリでどちらがミラーなのかをクライアントが事前に知らなくても接続できるようにします。
-xp 起動中のサーバがパートナーと監視サーバに接続できるよう情報を提供します。
次のコマンドを 1 行に入力して実行し、server2 を起動します。
dbsrv11 -n server2 -x tcpip(PORT=2637) -xf c:\server2\server2state.txt -su sql c:\server2\demo.db -sn mirrordemo -xp "partner=(ENG=server1;LINKS=tcpip(PORT=2638;TIMEOUT=1));auth=abc; arbiter=(ENG=arbiter;LINKS=tcpip(PORT=2639;TIMEOUT=1));mode=sync" |
このコマンド・ラインは、以下に示す dbsrv11 のオプションを指定します。
-n データベース・サーバに server2 という名前を付けます。
-x データベース・サーバの実行で使用するポート番号を指定します。
-xf server2 のステータス情報ファイルのロケーションを指定します。
-su ユーティリティ・データベースのパスワードを指定します。
-sn データベース・サーバの代替名を指定します。プライマリ・サーバとミラー・サーバは同じ名前にしておき、どちらがプライマリでどちらがミラーなのかをクライアントが事前に知らなくても接続できるようにします。
-xp 起動中のサーバがパートナーと監視サーバに接続できるよう情報を提供します。
次のコマンドを実行して、Interactive SQL を起動し、プライマリ・サーバに接続します。
dbisql -c "UID=DBA;PWD=sql;ENG=mirrordemo;LINKS=tcpip" |
次の文を実行して、サンプル・データを SQL Anywhere サンプル・データベースに追加します。
CREATE TABLE test (col1 INTEGER, col2 CHAR(32)); INSERT INTO test VALUES(1, 'Hello from server1'); COMMIT; |
次の文を実行して、接続したデータベース・サーバを確認します。
SELECT PROPERTY( 'ServerName' ); |
プライマリ・サーバの名前が出力されます。
フェールオーバを開始します。これを行うには、次のいずれかの方法で、前の手順で開始したプライマリ・サーバを停止します。
データベース・サーバ・メッセージ・ウィンドウで [シャットダウン] をクリックします。
Windows のタスク マネージャを使用してタスクを終了します。
次のコマンドを発行します。
dbstop -y -c "UID=DBA;PWD=sql;ENG=mirrordemo" |
データベース・サーバの 1 つの接続が有効であるという警告メッセージが表示された場合は、[はい] をクリックしてシャットダウンします。
arbiter のデータベース・サーバ・メッセージ・ウィンドウに、プライマリ・サーバが切断されたことを示すメッセージが表示されます。
server2 のデータベース・サーバ・メッセージ・ウィンドウには、server2 が新しいプライマリ・サーバであることを示すメッセージが表示されます。
Interactive SQL を閉じます。エラー・メッセージを受信した場合は [OK] をクリックします。
次のコマンドを実行して、Interactive SQL を再起動します。
dbisql -c "UID=DBA;PWD=sql;ENG=mirrordemo;LINKS=tcpip" |
次の文を実行して、ミラー・サーバに接続されているかどうかを確認します。
SELECT PROPERTY ( 'ServerName' ); |
次の文を実行して、すべてのトランザクションがミラー・サーバにミラーリングされたかどうかを確認します。
SELECT * FROM test; |
Interactive SQL から切断し、arbiter と server2 のデータベース・サーバ・メッセージ・ウィンドウで [シャットダウン] をクリックします。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |